Linux Kernel

SE04のS.Mです。

2か月程前からLinux Kernel Developmentを読んでいるのですが、ようやく読み終わりそうです。
コードを読む前の準備には良かったと思います。
カーネルは外から見ると、ユーザー領域に提供されるシステムコールが全てを表すのですが、
カーネル内部では様々な技術が駆使されています。

カーネルの構成を大きく分けるとマイクロカーネルとモノリシックカーネルに分かれます。

マイクロカーネルとはカーネルの機能をモジュール分割して、役割分担をします。
機能ごとにモジュールに分かれているのでカーネルの可読性に優れ機能追加などの
拡張性にも優れています。しかし、各カーネル間の通信にメモリアクセスを用いるため
その分のオーバーヘッドが発生します。

一方、モノリシックカーネルはすべての機能を一つのまとめてカーネルを構成します。
機能ごとにコードが分けて書かれているのですが、コード間に関連性があるので
可読性は若干落ちます。パフォーマンスに関してはモジュール間の通信がないので
モノリシックカーネルより優れています。

これからLinuxを読もうかMinixを読みなおそうか迷っているのですが、
時間と労力を考えるとMinixかなー、なんて思っています。

でもLinuxも読んでみたいんですよね。
次回の日記でどちらを選んだか報告しますね。