書籍購入:Lions本のお供に『はじめてのOSコードリーディング』

5分ほど立ち読みした結果、買うことにした。

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

OSの勉強には2つのアプローチがあると思っている。1つは理論面からの座学で、もう1つは現実のOSに触れて学ぶ方法だ。

その昔は「理論を学んでからUNIXあたりのソースを読む」みたいなアプローチだったらしい。ただこの方法では、OSの実装に関してはソースコードから理解するしかない。ここで、実はOSの実装そのものについても何らかの解説が必要だ――という観点から書かれたのが『UNIXカーネルの設計』で、UNIXのファイル・プロセス・メモリ管理のアルゴリズムを擬似ソースで解説している。

似たような発想なのがタネンバウムの『オペレーティングシステム 設計と実装』で、OSについて理論面から説明するだけでなく、UNIX互換のOSであるMINIXでの実装について解説しているし、巻末にはMINIXソースコードも付いてくる。MINIXを実機や仮想マシン上で動かしてみることもできる。

ところで、MINIXの誕生前、UNIXのライセンス絡みの問題が出てくるまで、どうも「OSのソースを読むならUNIX V6」だったらしい。まあ初めてベル研の外に広くリリースされたUNIXだったようだし、当時としては画期的なことにソースコードの大半が高水準言語だったし、コードは1万行程度とコンパクトだったし、Lions本もあったし……。

Lions本は日本語訳も出版されていた*1。Lions本の中身は基本的に「説明用のコメントを付け足したUNIX V6のソースコード + ちょっとした解説」なので、Lions本を読むのは実質的にUNIX V6のコードを読むのと同じだ。

残念なことにLions本は古くて、今ではお目にかかれない古い自体のハードウェア向けのOSについて、その当時の計算機科学科の学生向けに解説している。なので今の人からすれば、対象ハードウェアのことは分からないし、前提知識も持ってないし、おまけにC言語も随分と異なる*2し、正直なところソースを眺めても全く分からない。というか分からなかった。

Lions本が出た当時は、読者はPDP-11あたりを触れる環境にいただろうし、アセンブラも身近だっただろう。だから、多分『UNIXカーネルの設計』程度でも十分事足りたのではないかと思う。しかし今ではジェネレーションギャップ故に前提知識が全く足りていない人が圧倒的に多いので、さらに多くの補足が必要となる。

そういった面では、この『はじめてのOSコードリーディング』はよい仕事をしている。Lions本では省略されている「前提知識」の部分も書いてあるし、重要な外部資料についてもしっかりと参考文献に挙げてある。

という訳で、いつか積読になっているLions本を読み解く機会が訪れた際には、本書をお供に頑張る予定。予定は未定。

*1:今はどうも絶版らしい……。

*2:K&Rよりも前。