Hatena::ブログ(Diary)

ひら このページをアンテナに追加 RSSフィード

2007-10-31

Minixカーネルソースコードを読む方法

Linuxの誕生の経緯からなのかOSを学ぶにはMinixから入ったほうが良いという話を

昔から耳にする。これは正しいと思う。ただ、僕はMinix本(オペレーティングシス

テム―設計と理論およびMINIXによる実装 ISBN: 4894710471)を読んでいない。

いきなりLinux2.4.18を読み始めた。


なぜMinix本を読まなかったかというと、びびって読めなかったからだ。どっかの

Minix本の書評に「5年は楽しめる本」というセリフがあり真に受けてしまった。

”えぇ〜5年もかかるのかよぉ” と思うと気分が重くなった。確かに5年くらいかか

りそうな本の厚さだと思った。


そんなわけで、Minix本を手に取るたびに鬱な気持ちになった。強がりを言うと、今

だと3ヶ月で読みきる自信はある。Minixの理解するのはスゲー簡単だと思う。でも、

当時(高校時代)はびびってMinix本を読む前に、あれやってこれやって、と上りき

ることが出来ない階段を作ってしまった。


Minix本など、この手の本を読むにはコツがある。最初から最後に向かって読むと時

間がかかるし、しんどい。解説を読んでからソースを読むのもしんどい。一番楽に

読む方法は、簡単なOSの解説書と並べてカテゴリ単位に横断的に読む方法だ。


http://d.hatena.ne.jp/hira_sosuke/20070307/1173274346


カーネルはスケジューラから読むのが一番、楽だと僕は思ってる。動作が特徴的で小

さくまとまっているから。ブートシーケンスやファイルシステムはやめておいた方が

良いと思う。複雑で退屈だから。まぁ、どこから読めば楽か?という議論はいろいろ

あるのだが、僕としてはスケジューラがお勧めである。


例えばスケジューラを読むことを前提に話をすすめる。

簡単なOSの解説書を買ってきて、いきなりスケジューラの章を読む。物足りないな、と

思ったらもう少し詳しい解説書を買ってきてスケジューラの章を読む。さらに物足りな

いな、と思っても次の新しい解説書を買う必要は無い。次々新しい解説書を買ってしま

うと、上りきる事が出来ない階段へと歩んでしまうからだ。2冊も読めば十分だ。


この段階で学ぶのは詳細な知識ではなく概念である。概念さえわかればソースコード

読める。で、Minix本のスケジューラのソースコードを眺める。スケジューラのコードが

どれであるか、というのは(Minix本の)解説のページに書いてあるのだが、この段階で

解説を読まないほうが良い。解説を読むのは目がソースコードに慣れてからだ。


ソースコードというのは不思議なもので、眺めていると段々と構造が浮き上がって見え

てくる。雲を眺めていると、段々と何かの形に見えてくるのと同じようなものだ。大し

て重要じゃないコードが見えなくなる。人の脳は優秀なので、ソースコード上のノイズ

をカットして本質的な部分だけが目に入るようになるのだ。


この段階で変数や関数の意味などに疑問が沸くと思う。そこではじめて(Minux本の)解説

を読む。ただし該当部分を索引で探し、あくまで数行読むだけである。章の最初から読もう

などと考えない方が良い。


最初にするべきは概念を頭の中に作ることである。しっかり読むべきなのは解説ではな

ソースコードである。