巨人の肩の上に登る

先人の積み重ねた発見に基づいて、なにかを発見しようとすることを指す。

Linux カーネル「概要」

OS関連の知識が欲しくて「LINUXカーネル」を読み始めたのだが,900ページ強もあり,中々続かない.
その上内容をすぐ忘れてしまい,何回も同じところを読んでいるので,今回は忘れないようにまとめておく.

本書は20章構成で,第一章は概要である. 報知的要約を書いてもあまり面白くないと思うので,興味を持ったいくつかのTOPICについて記述する.

カーネルアーキテクチャ

カーネルのアーキテクチャを大別すると,二つに分けることができる.

  1. モノリシックカーネル
  2. マイクロカーネル

モノリシックカーネルは,OSを構成する一般的機能をカーネルに統合し,同一のメモリ空間に実装するアーキテクチャであり,LinuxUnixはこのアーキテクチャを採用している.一方で,マイクロカーネルは,OSを構成する一般的機能をカーネルから分離し,モジュールとして実装するアーキテクチャである.

学術的には,マイクロカーネルの方向に進んではいるものの,モジュール間のメッセージパッシングに時間的コストを要するため,実行速度の面では,モノリシックカーネルに軍杯が上がる.

これらのアーキテクチャを巡る有名な論争として,「アンドリュー・タネンバウムとリーヌス・トーヴァルズの議論」がある.また,Linusの自伝「それがぼくには楽しかったから」でも触れていて,この本は読み物としても面白かったです.

他にも,これらを組み合わせた”ハイブリットカーネル”や,"ナノカーネル","モジュラカーネル","エクソカーネル"などがある.

シグナルとプロセス間通信

UNIXシグナルは,プロセス・スレッド間でシステムに通知する仕組みです.

非同期通知としては,C-c によるユーザ割り込みがありSIGINTをフォアグランドプロセスに通知する.
同期通知としては,プロセスが無効なアドレスにアクセスしたときのSIGSEGVシグナルがある.

POSIX標準では20個のシグナルがある(Wikipedia シグナル)).

一方で,AT&TUnix System V では,UNIXシグナルとは異なる通信が導入されている. これは,セマフォ,メッセージキュー,共有メモリで構成されていて,System V IPC と呼ばれています.

システムコール

OSの機能を呼び出す仕組み.一章にして知らないシステムコールばかりでした. システムコールに関しては,かなりの数があるので,別途ページにまとめていこうと思います.