簡単にいえば、
WinNT/2K系は
OS内部のメモリ等の管理方法やOSの利用側(一般的なユーザではなく
アプリケーションプログラム等広義のプログラムを指します)
がOSを利用する為のお約束
(BIOSを直接いじらない様にしWindowsが提供するインターフェースプログラム
(WindowsAPI等)を使用するリソースの確保と開放方法等のお約束の事)
を変更したのでリソース不足等が
Win9xよりもなりにくいのです。
どうもイメージが湧きにくいと思います。
どんなかんじかなぁと、
駅の改札とかの切符売り場を考えて下さい。
切符を買う人が50人居ます。
MS-DOS系は
窓口は1つしかありません。係りの人が1人います。
そこに、切符を買う人が並んでいて、前に並んでいる人が買い終わるまで
自分の番はきません。
先に動いているプログラムが終わってOSに次ぎは貴方といわれるまで
自分というプログラムは動けないみたいなイメージです。
前の人が時間がかかったりしたら列が止まってしまい
自分の番までなかなか来ません。
Win9x系は
窓口は5つあります。窓口毎に係りの人が1人います。。
これで窓口が1の時より早く切符がかえますね。
でも、窓口の人は買う人から行き先とかを聞きながらやっているので
ちょっと時間がかかることがあります。
受付の人も間違って発券してしまうことも有ります。
でも、前の人が時間がかかったりしたら列を変わることができますものね。
(マルチプロセス/スレッド概念の本格導入かな。MS-DOSの頃も疑似的なものは
あったんだけど)
WinNT/2K系は
窓口は5つあります。
発券装置を導入しました。(OS内部の管理方法の改善)
切符を買う前に何処から何処までの切符が欲しいかを買う人に書いてもらうことに
しました。(OSを使う側のお約束)
窓口で書いたモノを窓口に渡すと即座に切符が出て来ました。
あー、以前に比べるとなんてスムースに切符が買えるんでしょう。
こんな、イメージでいいんじゃないでしょうか。
アプリ開発者ではもっと詳細な情報を持つべきですが。
partsさんへ
すいません余計なお世話かもしれませんが。
>カーネル、コア、マイクロカーネル
コンピュータ業界でマイクロカーネルっていえば
カーネルに内在されるコア部分をマイクロカーネルとかっていうんじゃ・・・。
マイクロカーネルとサブシステム群をカーネルと呼ぶ場合も有ります。
WinNTなんかはこのタイプの筈です。
UNIXとかでも、障害発生時にFDベースで収まるようなカーネルのコアで
(通常マイクロカーネルと呼称する)緊急運用することもあるけど。
Windowsっていうかマイクロソフトでは、
同じ意味のものをコア(核)とマイクロカーネルの様に読み分けているの。
因みに
OSをマイクロカーネル化すると従来の一体型のカーネルに比べると
若干パフォーマンスが低下するんですよ。
マイクロカーネルとサブシステム群とのオーバヘッドがあるため。
(カーネルモードとユーザモードへの状態遷移の為の時間等)
パフォーマンス低下解消の為
WinNTだとNT Executiveという中間的な層を設け、
サブシステム呼び出し時のコンテキスト切り換えを抑えパフォーマンス低下を補っている筈です。
>16ビットOSではユーザーリソースはメモリの64KBしか占有できません。
MS-DOS以前ならそうですが、
MS-DOS以降でx86系の話ならば
以前は16ビットなので
2の16乗で単純に考えると64Kなのですが、
実際には
8086系CPUにはアドレスバスが20本あるので
セグメントとオフセットの組み合わせで
1MBのメモリ領域をいじることができますよ。
でも実際は
システムで必要なメモリ(VRAM等)などで約380KB位使っちゃうので
約640KBしか使えません。
これが昔俗にいわれていた640KBの壁といわれるものです。
以降にでてきた80486系CPUでは
アドレスバスが32本に増え2の32乗(4GB)までのメモリ領域を
理論上はいじれることになりました。
64KBって?
お礼
細かい説明ありがとうございました。 また次回もよろしくお願いします。