web-dev-qa-db-ja.com

64ビットコンピューター(x86)は、エミュレーションなしで16ビットOSをネイティブに実行できますか?

完全に最新のパーツを備えた最新のx86コンピューターを構築する場合、MS-DOS 6.11とWindows 3.11をエミュレーションなしで、またはFreeDOSでさえロードできますか?最近、32ビットOSのWindows 95でそれが行われているビデオを見ましたが、Windows 3.1以下のような16ビットOSでそれを行うことができますか?

38
ioi-xd

はい。 64ビットCPU(x86種類)はx86リアルモードで実行でき、これが16ビットアプリケーションで実行されます。すべての制限(640KBメモリ、16ビット幅のレジスタなど)がありますが、プロセッサの速度は、これらの16ビットオペレーティングシステムが大流行した80年代の1000倍ではないにしても、数百倍です。

ただし、ハードウェアアクセスには問題があります。 Intelは2020年にレガシーBIOSおよび互換性サポートモジュールでさえもサポートを積極的に廃止する予定であるため、16ビットアプリケーションはBIOS呼び出しに依存してディスクアクセス、グラフィックス、キーボード/マウス入力などを行うことができなくなります。ほとんどすべてのデバイスは16ビットでアドレス指定できないため(デバイスのPCIアドレスは通常約3GBであるため)、そのすべてに対して16ビットのドライバーを作成する必要があり、それを伝える方法はありません。 「このバッファーデータをアドレス0xEF000000に書き込む」ためのドライバー(ドライバーが期待していたものであるため)。

一方、従来のBIOSがまだある(または少なくともUEFI CSMが有効になっている)場合は、古い16ビットソフトウェアを実行できます。ただし、ハードウェアサポートは制限されます。すべてBIOSが提供する必要があるため、BIOSメーカーは幅広いサポートを削減し、限られた数のUSBデバイスと一定量のSATA(またはNVMe)デバイスのみをサポートする場合があります。 。

51
Ro-ee

CPUとPCの進化に伴い、CPUメーカーは、以前の命令セットおよびソフトウェアとの下位互換性を維持することに取り組んできました。 Intel 8086で(1970年代後半から)導入された最新のx86-64 CPUに関するいくつかの命令がまだあります。

あなたの質問に対する答えは「はい」です。現代のx86-64 PCは、技術的に16ビットオペレーティングシステムを実行できます。実際のところ、ここに 人気のYouTuber LGRによるビデオへのリンク が新しいゲーミングPCにMS-DOS 6.2をインストールする様子を示しています。

このようなことを行うにはいくつかの明らかな制限があります。 DOSでは、640Kを超えるRAMにアクセスできません。同様に、32ビットOSを64ビットハードウェア(または32ビットハードウェア)で実行する場合、実行するプログラムは4 GBのRAMの使用に制限されます。

そうは言っても、64ビットオペレーティングシステムでは、32ビットソフトウェアのように16ビットソフトウェアをネイティブに実行することはできません。奇妙な奇妙なことですが、それがコンピューターチップのCookieが崩れた理由です。

13
Sam Forbis

はい。最新のx86-64 CPUは、第1世代(8086)にも完全に下位互換性があります。

完全な下位互換性は、コンピューター命令セットアーキテクチャーで特に重要であり、最も成功したものの1つは、x86ファミリーのマイクロプロセッサーです。それらの完全な下位互換性は、1978年に導入された16ビットIntel 8086/8088プロセッサにまで及びます。(8086/8088は、前任者向けに書かれたプログラムの簡単な機械翻訳を考慮して設計されました-setは1974年の時点で8ビットIntel 8080プロセッサと互換性があります。

https://en.wikipedia.org/wiki/Backward_compatibility#Hardware

リアルモード から起動することもできます。これは、DOSが実行されるモードです。ブートローダーまたはカーネルを起動すると、必要に応じて32または64ビットモードに切り替わります。

プロテクトモードをサポートするx86プロセッサは、古い8086クラスのプロセッサとの下位互換性のために リアルモード で起動します。電源投入時(別名 booting )、プロセッサはリアルモードで初期化され、命令の実行を開始します。 [〜#〜] rom [〜#〜] に格納されている可能性のあるオペレーティングシステムのブートコードにより、プロセッサが 保護モード になり、ページングやその他の機能が有効になります。 。プロテクトモードでの命令セットは、リアルモードで使用されるものと同様です。

https://en.wikipedia.org/wiki/X86#Protected_mode

したがって、すべてのDOSバージョンをすべてのx86 CPUにインストールして、アドレッシングモードやアドレス行の数などのすべてのDOS制限に悩まされることは間違いなく可能です。 Windows 3.xは、実際にはDOS上で実行される単なるGUIアプリです(ただし、16ビットモードは異なります)ので、最新のマシンでも実行できます。


ただし、以前のモードと64ビットモード(AKAロングモード)の大きな違いの1つは、CPUがロングモードに切り替わると、仮想8086モードに戻ることができないため、16ビットDOSを実行できないことです。 64ビットWindows内のアプリ。ベアメタルマシンで実行する必要がある場合は、ベアマシンで実行する必要がありますVMでも機能します)

参照 Intel IA-32eモードをサポートするオペレーティングシステムで16ビットコードを実行することは可能ですか?


とはいえ、CPUは16ビットの命令セットを完全にサポートしていますが、他の人が言っているように、最新のハードウェアサポートがないため、システムの起動は難しい場合があります

6
phuclv

最近、Windows 95で行われているビデオを見て、

Windows 95は、32ビットのシェルを備えた16ビットのオペレーティングシステム(MS-DOS)であるため、すでに完了していることがわかります。

1
Jasen