2. Linux の基本デザイン

(OHP 4)
-----------------------------
Design Issues
 - KISS
 - Compatibility
 - Performance
 - Expandability
--------------------------------

Linux にとって最も重要なのは、「KISS principle」と呼ばれるものだ。KISS とは "Keep it Simple, Stupid", あるいは "Keep it Simple and Small" の 略なんだけど、カーネルは元々すごく複雑なプログラムだから、ちゃんと動く ようにするには可能なかぎり単純にしておく必要がある。そうしようと努めて いても、今日のカーネルのようにずいぶん複雑なものになってしまうんだから。

もう一つ Linux のデザインについて重要なポイントは、「互換性」という点 だ。僕は Unix カーネルを自分で書きたかったけど、全てのプログラムを自分 で書く気はなかった。だから、gcc や GNU Emacs のような Unix 用の既存の フリーソフトウェアが可能な限りそのままコンパイルできて動くことが重要だっ た。

「互換性」の問題はプログラムを動かす場合だけでなく、Unix のようなネッ トワーク環境で使われる OS の場合、環境に対する「互換性」の問題も重要に なる。だから、Linux はネットワーク的に見ても他の Unix と互換性を持つよ うに作っている。だから HP-UX や BSD などが動いている環境でも Linux は 問題なく使えるはずだ。

僕が自分の書く全てのプログラムで極めて重視しているのが、第三のポイント、 「性能(パフォーマンス)」だ。僕は遅いプログラムが嫌いで、手元の速いマシ ンの上に、ノロノロ動いているプログラムがあって、コンピュータ全体の性能 が落ちているのには耐えられない。だから、Linux はできるだけ速くしたかっ たんだ。そのため、新しい機能を持ったマシンが手に入れば、その機能を積極 的に活かして Linux のスピードアップを図ろうとしてきた。例えば Pentium マシンでは Pentium の新しいメモリ管理機能を利用している。詳細には触れ ないけど、Linux は速い機種用に最適化されている、ということだ。もちろん、 古くて遅い 386 マシンでも使えるようにしていることは言うまでもない。もっ とも、個人的にはそんな遅いマシンはもう使わないけどね。

4 つめのポイント、これはカーネルに限らず、あらゆるプログラムにとってもっ とも重要なポイントだけど、「拡張性」という点だ。「拡張性」についてきち んと考えていないと、3,4 年もしないうちにどうしようもなくなってしまうこ とがある。例えば DOS の 8 + 3 文字のファイル名の制限に関する問題は、後 になってからは極めて修正のしにくいものだ。マイクロソフトは Windows95 でファイル名の問題を解決しようとしているけど、多少コンピュータに詳しい 人なら、まだまだたくさんの問題が残っていることを知っている。

だから、この種の問題が起きないように、デザインのごく早い段階から十二分 に注意しておく必要がある。というのも、ユーザーが増えてきてから基本的な デザインを修正することはほとんど不可能だからだ。

以上の 4 点が Linux の基本的なデザインの話。次にモノリシックカーネルに ついての説明をしよう。