linux その3
2002.02.03

年が明けて、1ヶ月が過ぎ去ってしまいました。 今更いうまでも無く、私は非常に遅筆です。仕事用の文章(プレゼン用のスライド、 企画書、設計書、プログラム)であれば、人並みの速さでかけますが、 締め切りも責任も金も関わっていないこうした文章は、非常に苦手です。 それに、OSの比較をKernelの機能面から簡潔にやろうと思っていましたが、厄介です。 それも、1ヶ月かけて調べてみた結果、すばらしく厄介だということだけが分かりました。 使い方、感じ方、何を重視するかによって、まったく評価が違うものになってしまうみたいです。

非常に困りましたが、テーマを絞って少しずつ行きたいと思います。

フリーズ、ハングアップ、再起動

WindowsやMacを使っていると、「NetscapeがこけたからOSを再起動する」、 「Performerで大きなデータを読み込んだら固まった」なんて事がよくあります。 これらの原因は、NetscapeやPerformerのようなApplicationにも原因があるかも しれませんが、Kernelにも責任がある場合があります。

まっとうなKernelであれば、「Netscapeがこけたから、もう一度、Netscapeを 立ち上げてみよう」と、なるはずですが、OSを再起動するのは、Applicationの 障害によってKernel自体の動作が不安定になってしまうのをユーザが経験的に 知っているからです。

Multi Task

Kernelの機能の内、こうしたことに関連があるのは、主にMulti Task機能です。 この機能は何をしているかというと、起動したApplicationにメモリとCPUの能力を 割り当て、それぞれのApplication(=Task)が独立して平行に(=Multi) 動作しているように見せかけるといったことを行っています。

見せかけなのは、1つしかないCPUをApplicationそれぞれがCPUに時間ごとに 割り振って並行に動作させ、数100MB程度しかないメモリを使えるところだけ 実際に使わせてApplicationごとに数GB割り振ったように見せかけているからです。

こうしたFakeを上手く行えるKernelであれば、ApplicationのミスであるTaskが こけても、実行に失敗したTaskの後処理(使わなくなったメモリの解放など)を きれいに行ってくれるので、他のTaskには一切影響を及ぼしません。

Kernel自体も実はCPU上で動作しているTaskのひとつにすぎません。このため Applicationのミス(Applicationが勝手にKernelが使っていたメモリ領域に書き 込んでしまう)がKernelに及ぶような貧弱なKernelだと、Applicationの フリーズ=OS(Kernel)自体のフリーズとなってしまいます。

まっとうなKernelであれば、Kernelが利用する資源とApplicationが利用する 資源(Kernel LandとUser Land)は、明確に区別されていて、Applicationの 障害によって、Kernelがこけてしまう=OSのフリーズが生じることはありません。

Windows 9X、Max OS 9

こうした面では、Windows 9X系、Mac OS 9以前はお話になりません。1日使って いると、必ずハングしてしまいます。Windows 9xはGDIやUserリソースがらみで、 16bitの縛りがあること(リソースの使いきり問題)、 Mac OS 9以前には、Multi Task機能自体の貧弱さ+ にもかかわらず、大量のメモリを利用してしまう各種Application の存在のため、Kernelの実装としては最低です。

Windows 2000

Windows 2000は、かなりがんばっていますが、Blue Screen(OS自体が落ちたとき にあらわれる画面、メモリダンプなどが表示されるがほとんど意味不明)が、 2ヶ月に一度はでてきます。高速化のためにKernel modeで動作している部分で 逝ってしまうと否応無くKernel自身がこけるため、簡単にKernelを殺せるミスを Applicationに実装できてしまうことや、GUI(画面描画)部分をKernel内に 抱え込んでいるため、ここでミスを犯してもKernel自体が逝ってしまうといった 問題点があります。

Unix

これにたいして、商用UnixのKernelは、まっとうなKernelです。
ApplicationにKernelは殺せません。電源が落ちず、Hardwareに障害が無ければ 何年でも動き続けます。

Linux

LinuxのKernelも、この面では商用のUnixと変わらない安定性を誇ります。 わたくしめが管理していた研究室のLinux Serverは、導入されてから引退するまでの 5年間、数人のUserがX-Windowを開きまくる中でWWW server、Mail serverと して動作し続け、Kernel自体が落ちることは一度も有りませんでした。

なぜ、ここまでちがうのでしょうか? それは、KernelというかOSをどのようなものにしたいかという、設計思想の 違いにあると思っています。
次回はそのあたりについて、語るはずです。

Go to previous page Go to next page
Go to Index
Go to Top