Kernel

kernelって、どの本にも出てくるけど、具体的に何やってんの?
→ OSの中核。アプリケーションとハードウェアのデータ処理の架け橋
ハードウェアとソフトウェアコンポーネントのやり取りを管理する
プロセスの抽象化、プロセス間通信、システムコールなどを提供する
L モノシリックカーネルは全てを一つの仮装アドレス空間に格納されたコードで実行して性能を向上
L マイクロカーネルはサービスの大部分をユーザー空間で実行し、保守性とモジュール性を向上

あれ、これ、CPU、memory, deviceと繋がってるってことは、CPU、memory、deviceのアーキテクチャを理解してないと、kernelは書けないってこと? ん?
CPU、memory、deviceも日進月歩で進化してるよね。。

– カーネルの機能
コンピュータのリソースを管理し、他のプログラムがそれらのリソースを使って動作できるようにする
 CPU(プロセッサ): 多数のプロググラムからプロセッサ群を選択する
 memory: メモリにはプログラムとデータ両方が格納される
 input, output: keyborad, hdd, usbなど
リソース管理の重要な観点は、実行領域とその領域へのアクセス調停
プロセス同士の同期も提供
マルチタスクシステム(Mac OS, Windows採用)はプロセスを高速に切り替える。プロセスには優先度が設定される。プロセス間通信(IPC)は、パイプ、共有メモリ、メッセージ、RPC、ソフトウェア割り込みなどがある。
協調型マルチタスクは、割り込まれずに実行される。

メモリ管理
ページング方式、セグメント方式による仮想アドレッシング
物理アドレスを仮想アドレスに変換している(RAMからHDDなど)

システムコール
カーネルを呼び出す

カーネルの設計
モノシリックカーネル(大部分をカーネル内に含む)とマイクロカーネルで設計に大きな違いがある
多くのカーネルは、中間のハイブリッドカーネルになっている