カーネルとは?
OSの種類によって設計や実装が異なる部分はありますが、主な役割は共通していて
- プロセスの管理
- メモリの管理
- デバイスの管理
など、OSの機能の中でも特に中枢を担う部分を指します。 役割から想像できる通り、ソフトウェアとハードウェアの間のデータ処理を繋ぐ架け橋のような存在となります。
Linuxのカーネル
UNIXから派生したLinuxのカーネルは全てのハードウェアを仮想的にファイルとして扱う(抽象化っていうらしい)ことが特徴とされています。
キーボードもディスプレイもプリンタも全てファイルとみなして取り扱います。
今は正直理解できませんが、ユーザにとっても開発者側にとってもこのことはとっても大きなメリットをもたらしているそうです。(いつか解る日がくるのか!?)
起動プロセスの中のカーネル
ブートローダの動作の終わりに特権モード(基本的に無制限で処理を行える)のプロセスとしてカーネルが呼び出されます。ここで各種デバイスを初期化して次に備えたところで一旦役割が終了し、以降は通常プロセスとして常駐するのではなく(ディスクへのアクセスなど)高い特権が必要とされる場面でのみアプリケーションからのシステムコールを経由して随時呼び出される機能の集合として存在します。
常に高い特権をもつカーネルがうろちょろしていてはセキュリティ上よくないってことでしょう。 root権限とかも同じ考え方ですね。 こうしてカーネルの起動が無事終わると次は各種起動スクリプトやモジュールを呼び出していきます。
OSの起動完了までもう少し!