2025/06/05 20:33 What Was the Role of MS-DOS in Windows 95? (2007)

ロボ子、今日のニュースはWindows 95におけるMS-DOSの役割についてじゃ。

MS-DOSですか。Windows 95の時代にもまだMS-DOSが使われていたんですね。

そうなんじゃ。Windows 95は、MS-DOSをブートローダーとして使っていたのじゃ。それに、16ビットのレガシーデバイスドライバ層としても機能していたらしいぞ。

ブートローダーですか。具体的にはどのように起動していたんですか?

まず、カスタマイズされたMS-DOSがロードされて、CONFIG.SYS、COMMAND.COM、AUTOEXEC.BATが処理されるんじゃ。その後、WIN.COMが実行されて、VMM(仮想マシンマネージャ)の起動プロセスが始まるらしい。

なるほど。WIN.COMが重要な役割を担っているんですね。

そうじゃな。そして、WIN.COMが仮想マシンマネージャをロードして、SYSTEM.INIファイルを読み込み、仮想デバイスドライバをロードする。その後、EMM386を停止して、保護モードに切り替わるんじゃ。

保護モードに切り替わるんですね。その後のファイルシステムはどうなるんですか?

仮想デバイスドライバがMS-DOSからファイルシステム操作を引き継ぎ、MS-DOSをシャットダウンするんじゃ。以降のファイルシステム操作はすべて32ビットファイルシステムマネージャにルーティングされる。

32ビットファイルシステムマネージャが重要な役割を果たすんですね。

ところが、MS-DOSプログラムやデバイスドライバは、INT 21hサービスベクタを置き換えたり、OSをパッチしたりすることがあったらしい。そこで、32ビットファイルシステムマネージャは、これらのプログラムとの互換性を維持するために、MS-DOSのデコイを用意したんじゃ。

デコイですか。面白い仕組みですね。

IFSMGR.SYSというのも重要な役割を担っているぞ。他のドライバやプログラムがMS-DOSをフックする前に、IFSMGR.SYSがMS-DOSを最初にフックするんじゃ。そして、32ビットファイルシステムマネージャが処理を継続できるように、16ビットコードから32ビットコードにジャンプする。

なるほど。スムーズに処理を引き継ぐための仕組みなんですね。

プログラムがINT 21hを呼び出すと、32ビットファイルシステムマネージャがMS-DOSがパッチされていないか確認するんじゃ。パッチされていない場合、要求された操作を実行し、MS-DOS内の状態変数を更新して、呼び出し元に結果を返す。

もし16ビットドライバがINT 21hをフックしている場合はどうなるんですか?

その場合は、32ビットファイルシステムマネージャは、フックされた16ビットコードにジャンプし、16ビットTSRやネットワークドライバを経由して処理されるんじゃ。最終的に32ビットファイルシステムマネージャが制御を取り戻し、要求された操作を実行する。

複雑な処理ですね。互換性を保つために、色々な工夫がされているんですね。

リアルモードマッパーというのもあるぞ。I/Oサブシステムが16ビットデバイスドライバからハードドライブの制御を引き継ぐ際に、認識できないドライバの場合、リアルモードマッパーを介して16ビットドライバに処理を任せるんじゃ。ただし、リアルモードマッパーを使用すると、システムパフォーマンスが低下する。

パフォーマンスが低下するんですね。それは避けたいですね。

しかも、リアルモードマッパーが使用されている場合、MS-DOSウイルスに感染している可能性もあるらしい。

それは怖いですね!

ファイルI/O以外の機能、例えばメモリの割り当てや文字列の解析などは、MS-DOSによって処理されるんじゃ。

MS-DOSは、Windows 95の中でも色々な役割を担っていたんですね。勉強になりました。

そうじゃろう。ところでロボ子、MS-DOSの時代には、コマンドを間違えると「Bad command or file name」って表示されたのを知ってるか?

はい、聞いたことがあります。

それって、今の時代で言うと「404 Not Found」みたいなもんじゃな。…って、ロボ子には通じないか!

…博士、それ、ちょっと古いですね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。