読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

ディベート:リナックスは時代遅れだ

リーナスさんについてのコンテンツを見ていて「ディベート:リナックスは時代遅れだ」というのを見つけた。これはリーナス・トーバルズさんとMINIXの作者であるアンドリュー・タンデンバウムさんとで交わされた、Linuxのカーネル構造に関する議論である。簡単にいうとモノリシックカーネル設計であるLinuxは時代遅れで、いずれマイクロカーネルのOSに駆逐されるだろうというアンドリューさんの意見に対するリーナスさんおよびその他の方の反論をまとめたものである。実際はどうなったかというとマイクロカーネルは一部の分野での利用にとどまり、モノリシックカーネルであるLinuxが圧倒的に幅を利かせている。このディベートにでてくるGNU HurdというマイクロカーネルOSは現在も完成していない。

このディベートの内容を見ていると懐かしさ炸裂である。PCの世界ではDOSが幅を利かせていて、OS/2は失敗しWindows3.1が一般的になりつつある時代の話である。話に出てくるMINIXというOSは私も知っている。OSの中身を知りたくてMINIXの解説本を1990年あたりに購入して読んでいたことがある。やはりリーナスさんもこの本を読んでMINIXの足りない部分を感じてLinuxカーネルをフルスクラッチで書いたような記述もWikipediaで見かけたが、それだけではなくBSDが訴訟のために利用できなくなったこともあるようである。BSDのこの訴訟というつまずきがなかったらLinuxは誕生しなかったかもしれない。

MINIXというのは仮想記憶機構のないUNIX互換OSであった。この仮想記憶機構がないというのはおそらくMINIXが誕生した1987年当時一般的なCPUであった8086の制約によるものであると思う。仮想記憶を支援する機構が備わったのは80286からで、仮想記憶をサポートしているLinuxが80386ベースで書かれたのも1990年ころでは80386が一般的になりつつあったし仮想記憶支援機構が備わっていたのも大きいだろう。8086でも実装できなくはなさそうな気もするが非常に難しくなるだろうし、そのようなコードを書くことによってMINIXのコード美しさが損なわれる可能性もある。美しさというのは≒可読性なので教育重視だとそういう結論になるのだろうね。

それはさておき、マイクロカーネルは洗練された設計手法であるものの、パフォーマンスという壁を越えられず頓挫しているケースが多いようである。Windows NTも最初マイクロカーネルで始めたのであるがやはりパフォーマンス面で問題を抱え開発は難航し、結局パフォーマンスが必要なモジュールをカーネルに含めるという形でなんとかリリースしたようだ。これを「ハイブリッド・カーネル」と呼び、OSXもそのような構造になっているそうである。理想を現実にするのは難しいのである。