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本の)解説
を読む。ただし該当部分を索引で探し、あくまで数行読むだけである。章の最初から読もう
などと考えない方が良い。
最初にするべきは概念を頭の中に作ることである。しっかり読むべきなのは解説ではな
くソースコードである。
- 64 http://reader.livedoor.com/reader/
- 34 http://b.hatena.ne.jp/entrylist?sort=hot
- 9 http://www.google.co.jp/reader/view/
- 8 http://mixi.jp/view_diary.pl?url=http://d.hatena.ne.jp/hira_sosuke/20071031/1193789664&owner_id=1822657
- 7 http://b.hatena.ne.jp/entrylist?sort=hot&of=50&threshold=5
- 7 http://d.hatena.ne.jp/
- 5 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/hira_sosuke/20071031/1193789664
- 5 http://b.hatena.ne.jp/entrylist?sort=hot&of=100&threshold=3
- 5 http://d.hatena.ne.jp/denimu/200710
- 4 http://b.hatena.ne.jp/entrylist?sort=hot&of=50&threshold=3
