カーネルとは?#
ハードウェアとソフトウェアの間の仲介役を担うOSの中心部
カーネルの主な役割#
| 役割 | 説明 |
|---|---|
| プロセス管理 | プロセスの作成・スケジューリング・終了を管理 |
| メモリ管理 | システムメモリの割り当てと回収 |
| デバイスドライバ管理 | キーボード、マウス、ストレージ等との通信を管理 |
| システムコール | アプリケーションがシステムリソースを安全に使用するためのインターフェース提供 |
| セキュリティ | 不正アクセスやマルウェアからシステムを保護 |
カーネルの種類#
- モノリシックカーネル
- 全てのシステムサービスとドライバが単一の大きなプロセスとして実行
- 例: Linux, Unix
- マイクロカーネル
- カーネル自体は最小限の機能のみ
- 残りのサービスはユーザースペースで別プロセスとして実行
- 例: MINIX, QNX)
- ハイブリッドカーネル
- モノリシックとマイクロの中間に位置する設計
- 例: Windows NT, macOS
- エクソカーネル
- アプリケーションにより多くの制御を提供・非常に抽象化されたカーネル設計
カーネルとシェルの関係#
OSの階層構造#
ユーザー → シェル → カーネル → ハードウェア
- シェル(shell = 殻): カーネルを包む外側の層
- カーネル(kernel = 核): OSの中心部
シェルの役割#
- ユーザーのコマンドを解釈してカーネルに伝える「窓口」
- カーネルに直接触れることなく、システムを操作可能にする
コマンド実行の流れ#
例: ls コマンド実行時
1. ユーザーが「ls」と入力
2. シェルがコマンドを解釈
3. シェルがカーネルにシステムコール(readdir等)を発行
4. カーネルがハードウェア(ストレージ)にアクセス
5. 結果がシェル経由でユーザーに表示
振り返りポイント#
- カーネルとは?
- カーネルの5つの役割は?
- モノリシックカーネルとマイクロカーネルの違いは?
- シェルとカーネルの関係を階層構造で説明できるか?
lsコマンド実行時の流れを追えるか?