Windowsの歴史 Windows 2.0とWindows/386編:PC/ATの登場

横山哲也(グローバル ナレッジ ネットワーク)
2009-05-12 23:16:01
  • このエントリーをはてなブックマークに追加

Windows 2.0と80286

 80286にはいくつかの技術的な課題があった。特に問題となったのはメモリアクセスの制限と、8086との互換性の問題である。

 メモリの問題は、何度も触れたセグメントの制限である。80286は仮想記憶を採用していたとは言え、「セグメントの最大サイズが64Kバイト」という制約が残っていた。そのため、大量のメモリを使うようなアプリケーションを動かすことが難しかった。一方で、UNIXはもちろん、Macintoshですら大量の(と言っても数メガバイト程度だったが)メモリを簡単に扱うことができた。

 Windows 2.0自身は80286の仮想記憶の特徴を非常にうまく利用しており、感心したことを覚えている。しかし、よくできていたのは「80286の制約の範囲で」ということであり、十分な機能を持っていなかったことは確かだ。

 8086との互換性問題は、いわゆる「DOS窓」の制限である。Windowsにとって従来のDOSアプリケーションが動作することは必須条件。80286は、電源投入直後は8086互換モードで動作する。このモードはリアルメモリのみ利用可能(仮想記憶が使えない)なので「リアルモード」と呼ばれる。

 その後、特定の命令を実行することで仮想記憶が利用可能なモード(メモリ保護機能がついているため「プロテクトモード」と呼ばれる)に移行できるのだが、プロテクトモードからリアルモードに戻る方法は存在しなかった。

 MS-DOSは8086用に設計されているため、80286の仮想記憶モードでは動作しない。Windows 2.0は、まずMS-DOSが起動し、その後にWIN.COMコマンドを実行することでプロテクトモードに切り替わり、Windows 2.0が動作する。

 もし、リアルモードに戻れなければ、Windows 2.0が起動したあとはMS-DOSコマンドが実行できなくなってしまうだろう。

 Microsoftは実に巧妙な方法でこの問題を解決した。

 リアルモードに移行したい場合はCPUをリセットするのである。もちろん単にリセットしたのではWindowsは強制終了され、BIOSの初期化ルーチンが動いてしまう。

 そこでWindowsはリセット時に実行するプログラムの実行番地をあらかじめ書き換えておく。そして必要なデータを退避させた上でリアルモードに移行するようにした。Windowsに戻るときはプロテクトモードに移行すればよい。

 Windows 2.0の「DOS窓」は1つしか立ち上げることができない。それは、実際にリアルモードに移行しているためである。

 要するにリセットしてMS-DOSを立ち上げ直したようなものだ。また「DOS窓」からWindowsのアプリケーションを立ち上げることはできないし、WindowsのGUIからDOSコマンドを実行することもできなかった。これができるようになるのはWindows 95以降である。

i386の登場

  • コメント(1件)
#1 BAL9630   2009-05-14 11:16:10
当時の苦労は、懐かしさに替わっていました。
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]