質問: マルチタスクの動作の違い よく、「windows9xのマルチタスクはwindowsntに比べてよろしくない」ということを聞きますが、具体的にどのように違いがあるのでしょう。どちらもosがプロセスの実行権を強制的に取り上げられるプリエンプティブなマルチタスクであると聞いているのですが、細かな違いがあるのでしょうか。 また、linuxやunixシリーズ、windowsceや3.x、pc-dosやms-dos(は論外か)、macosについても、ご存知の方いらっしゃいましたら、ぜひともお教えください。よろしくお願いします。
回答: win9xは32bit部と16bit部が混在しているosで、32bit部に関してはわりかしマトモに、マルチタスク動作できるのですが、16bit部はcpuの仕様などから、プリエンプティブなマルチタスクができないようになっています。 またosの仕様で、16bit部はすべてのプログラムで共通のメモリ領域を使用するようになっていて、例えば、16bitプログラムaがクラッシュすると、他の16bitプログラムbやcにも悪影響を与えます。 あと、dllの扱いについてもwin9xはntやlinuxと異なります。 win9xのdllは、単一のメモリ領域に配置され、それを複数のアプリケーションから使うようになっています。 この方式は、メモリやcpuキャッシュの使用効率がいいのが特徴ですが、一つのdllがクラッシュすると、それを使用している複数のアプリが影響を受けます。 それに対し、ntやlinuxなどは、dllの使用領域をアプリケーションごとに用意しますので、あるdllがクラッシュしても、影響を受けるアプリは一つにとどまります。 macosですが、現段階では、メモリ保護やプリエンプティブなマルチタスクは実装されていないようです。 ms-dosには、osレベルではマルチタスク機能は装備されていません。 アプリケーションレベルで、個別に装備することは可能です。 win3x,2x,1xのマルチタスクは、インプリエンプティブ(協調型)で、アプリケーションが決めた位置でしかタスクの切り替えができません。