KernelはOSの中核機能を担うプログラム。Kernelが提供する6つの主要機能は以下の通り。
- Kernelはシステム起動時にまず実行され、ハードウェアの初期化と動作環境を開始させる
LinuxのKernelの特徴は以下の通り。
- アプリケーションはシステム・コールを用いてカーネルの機能を使用してハードウェアを使用する
- システム・コールの一覧は"/usr/include/asm/unistd.h"参照
Linuxには2つのモードがある
Linuxはハードウェアを2種類に分別して管理する
- キャラクタ・デバイス:データの読み書きを1バイトずつ順番に行う基本的なデバイスの抽象化方式/サウンドカード、シリアル・ポートなど
- ブロック・デバイス:データの読み書きをブロック単位で行う抽象化方式。ランダムアクセスに向く/ハードディスクやCD-ROMドライブなど
Kernelの動作例
- アプリケーションがシステム・ライブラリの関数を読み出す(ex. fread()関数)
- 関数からシステム・コールが呼び出される(read()システム・コール)
- ファイルシステムを通じてKernelがデバイス・ドライバにファイルの読み込みを指示する
- デバイス・ドライバがファイルをKernelのバッファに送る
- システム・コール終了、ファイルがシステム・ライブラリのバッファにコピーされる
- 関数終了、ファイルがアプリケーションのバッファにコピーされる
Kernel本体は"/boot"配下にあるvmlinuzファイルが実体
- KernelファイルはKernel Loaderにより起動される特殊なプログラム
- Linuxではバージョンをx.y.zで示す
- xはメジャーバージョン
- yは奇数のものが開発版、偶数のものが安定版
- zはリビジョン番号