
Linux Operating System has primarily three components
Kernel − Kernel is the core part of Linux.
System Library − System libraries are special functions or programs using which application programs or system utilities accesses Kernel's features.
System Utility − System Utility programs are responsible to do specialized, individual level tasks.
https://www.tutorialspoint.com/operating_system/os_linux.htm
| Linux カーネルの機能 | |||
|---|---|---|---|
ハードウェア/ソフトウェアとは
初めに、ハードウェア/ソフトウェアについて確認しておきます。
主要なハードウェアは以下のとおりです。
| ハードウェア名 | 役割 | イメージ |
|---|---|---|
| CPU | 計算処理を行うデバイス | ![]() |
| レジスタ (CPU の中にある) | CPU の計算で利用する値を置く領域 電源を消すとデータが消える | ![]() |
| キャッシュメモリ (CPU の中にある) | CPU とメモリ間のバッファ ・CPU の計算結果をキャッシュ ・電源を消すとデータが消える | ![]() |
| メモリ (主記憶装置/Primary Memory) | CPU で実行中のプログラム (プロセス) や、その計算結果を一時的に置くデバイス ・CPU からアクセス可能な記憶領域 ・電源を切るとデータが消える | ![]() |
| ストレージ (補助記憶装置/Secondary Memory) | メモリにある計算結果をファイルとして保存するデバイス ・CPU からアクセス不可能な記憶領域 (メモリにロードする必要あり) ・電源を切ってもデータが消えない | ![]() |
| NIC (Network Interface Card) | データを他のコンピュータと送受信するデバイス 昔は拡張カードの1つだったが、最近はマザーボードに最初から搭載 | ![]() |
| マウス キーボード | データの入力を行うデバイス | ![]() |
| ディスプレイ | データの出力を行うデバイス | ![]() |
記憶装置の特徴
各記憶装置の特徴の比較は以下のとおりです。

CPU の動作モード
CPU の動作モードには「カーネルモード」と「ユーザーモード」があります。
| カーネルモード | ユーザーモード | |
|---|---|---|
| 動作するソフトウェア (プロセス) | カーネル | カーネル以外 |
| ハードウェアへのアクセス制限 | なし | あり |
| プロセスの同時実行 | 可能 | 不可能 (割り込みで切り替え) |
主なソフトウェアの一覧は以下とおりです。
| ソフトウェア名 | 説明 |
|---|---|
| プログラム | 処理を行うために作られたソフトウェア |
| プロセス | メモリにロードされた実行中のプログラム 実行中のプログラムの単位 子プロセスは新しく仮想メモリを確保 |
| スレッド | プロセスの CPU コアを利用する単位 子スレッドは親スレッドの仮想メモリを共有 |
| アプリケーション | やりたいことを実現するプログラム |
| モジュール | 特定の機能を持つ小さなプログラム モジュールを組み合わせてアプリケーションやライブラリを作る |
| ライブラリ | 再利用可能な形でまとめたプログラム ライブラリ単体では動かない |
| パッケージ | プログラムの実行に必要なものをまとめたもので、主に以下が含む ・実行ファイル ・ライブラリ ・モジュール ・設定ファイル ・リソース (画像・音楽ファイルなど) パッケージとライブラリの関係については、卵が先か鶏が先かのような話 パッケージ A に含まれるライブラリには、パッケージ B が含まれていたりする。 |
| ミドルウェア | アプリケーションがよく利用する OS の機能をまとめたプログラム |
| カーネル | ハードウェアを操作するためのソフトウェア |
| システムライブラリ | アプリケーションがカーネルを呼び出すためのライブラリ |
| システムユーティリティ | コンピュータの「分析・管理・保守」を行うソフトウェア |
| OS | カーネル・システムライブラリ・システムユーティリティをまとめたもの |
https://e-words.jp/w/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8.html
カーネルとは
ユーザーモードで動作するソフトウェア (プロセス) がカーネルを呼び出す場合、システムコールを利用します。(※ユーザーモードで動作するプロセスは、ハードウェアリソースにアクセス出来ません)
プロセスから呼び出されるシステムコールの一覧は strace <実行プログラム> で確認可能です。
execve("/usr/bin/echo", ["echo", "hello"], 0x7fff614927f8 /* 42 vars */) = 0
brk(NULL) = 0xe9f000
・・・・
システムコールの一覧はこちらをご覧ください。
カーネルの役割
カーネルは、以下の役割を持ちます。

プログラムは、ハードウェアの違いを気にする必要がありません。
例えば、プログラムは次の3つの違いを気にせずに、同じシステムコールの write() で書き込み可能です。
- 「A 社の SSD」
- 「B 社の SSD」
- 「C 社の USB メモリ」
カーネルの代表的な機能
カーネルの代表的な機能を8つ紹介します。
| カーネルの機能 | 対象のハードウェア | 説明 |
|---|---|---|
| プロセス管理 | CPU | プロセスに CPU を割り当てる |
| メモリ管理 | メインメモリ | プロセスにメモリを割り当てる |
| ストレージ管理 ファイルシステム ソフトウェア RAID | ストレージ | プロセスからストレージにデータを読み書き |
| I/O デバイス管理 | 全てのデバイス | デバイスへの入出力 |
| IPC | NIC | プロセス間の通信 (NIC 経由でネットワーク通信を実現) |
システムライブラリとは
システムライブラリの具体例は glibc ライブラリです。
アプリケーションは、以下の2つの方法でカーネル機能を呼び出せます。

システムコールを直接呼び出すのではなく、システムライブラリを経由する理由は以下の2つです。
- 複雑なシステムコールより、簡単なシステムライブラリを使いたい
- システムライブラリは、システムコールの呼び出しをある程度最適化している
- システムコールの回数を減らす工夫がしてあり、誰が使ってもある程度速い
システムユーティリティとは
具体的には以下のようなソフトウェアを指します。
UNIX におけるシステムユーティリティの一覧は以下の wiki にまとめられています。
関連情報
| Linux カーネルの機能 | |||
|---|---|---|---|
参考サイト











![[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】](https://m.media-amazon.com/images/I/51CKe00bsfL._SL160_.jpg)
































































