年が明けて、1ヶ月が過ぎ去ってしまいました。 今更いうまでも無く、私は非常に遅筆です。仕事用の文章(プレゼン用のスライド、 企画書、設計書、プログラム)であれば、人並みの速さでかけますが、 締め切りも責任も金も関わっていないこうした文章は、非常に苦手です。 それに、OSの比較をKernelの機能面から簡潔にやろうと思っていましたが、厄介です。 それも、1ヶ月かけて調べてみた結果、すばらしく厄介だということだけが分かりました。 使い方、感じ方、何を重視するかによって、まったく評価が違うものになってしまうみたいです。
非常に困りましたが、テーマを絞って少しずつ行きたいと思います。
WindowsやMacを使っていると、「NetscapeがこけたからOSを再起動する」、 「Performerで大きなデータを読み込んだら固まった」なんて事がよくあります。 これらの原因は、NetscapeやPerformerのようなApplicationにも原因があるかも しれませんが、Kernelにも責任がある場合があります。
まっとうなKernelであれば、「Netscapeがこけたから、もう一度、Netscapeを 立ち上げてみよう」と、なるはずですが、OSを再起動するのは、Applicationの 障害によってKernel自体の動作が不安定になってしまうのをユーザが経験的に 知っているからです。
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系、Mac OS 9以前はお話になりません。1日使って いると、必ずハングしてしまいます。Windows 9xはGDIやUserリソースがらみで、 16bitの縛りがあること(リソースの使いきり問題)、 Mac OS 9以前には、Multi Task機能自体の貧弱さ+ にもかかわらず、大量のメモリを利用してしまう各種Application の存在のため、Kernelの実装としては最低です。
Windows 2000は、かなりがんばっていますが、Blue Screen(OS自体が落ちたとき にあらわれる画面、メモリダンプなどが表示されるがほとんど意味不明)が、 2ヶ月に一度はでてきます。高速化のためにKernel modeで動作している部分で 逝ってしまうと否応無くKernel自身がこけるため、簡単にKernelを殺せるミスを Applicationに実装できてしまうことや、GUI(画面描画)部分をKernel内に 抱え込んでいるため、ここでミスを犯してもKernel自体が逝ってしまうといった 問題点があります。
これにたいして、商用UnixのKernelは、まっとうなKernelです。
ApplicationにKernelは殺せません。電源が落ちず、Hardwareに障害が無ければ
何年でも動き続けます。
LinuxのKernelも、この面では商用のUnixと変わらない安定性を誇ります。 わたくしめが管理していた研究室のLinux Serverは、導入されてから引退するまでの 5年間、数人のUserがX-Windowを開きまくる中でWWW server、Mail serverと して動作し続け、Kernel自体が落ちることは一度も有りませんでした。
| Go to previous page | Go to next page |
次回はそのあたりについて、語るはずです。