80386 の思い出(その 3)

当時、MS-DOS で動いていたパソコンは 640KB 程度のメインメモリしか利用できませんでした。MB (メガバイト)じゃないですからね。KB (キロバイト)ですから。
最近でも、Windows で扱えるメモリが 4GB (ギガバイト)以下という制限が問題になったことがありますが、そのサイズに比べると、なんと 0.02% 以下のメモリしか存在しなかった訳です。いま考えると、そんな環境でよくワープロとか表計算とか動いていたものだと思いますが、逆に私は、いまでも、どうして GB 単位のメモリが必要なのか理解できずにいます。(老化現象ですね)
閑話休題。さすがに当時でも MS-DOS で利用できるメモリ不足が深刻になってきて、EMM、あるいは EMS と呼ばれる技術が広がりました。これは、本来 20ビットのメモリ空間しかない 8086 (8088) CPU で、メモリ空間に窓を開けるように、数メガバイトのメモリの一部を細切れかつ動的に割り当ててやることで、アプリケーションソフトからより多くのメモリを使えるようにしようという、かなりギミックな仕組でした。
実際には、当時 80286 や 80386 という CPU が普及し始めていたのですが、OS やプロセッサの互換性の理由から、このメモリサイズ制限から抜け切れずにいたわけです。
この問題の原因は、Microsoft 社が新しいアーキテクチャ向けの OS をリリースしなかったことと考えられてますが、実際には Intel の 80286 プロセッサが 8086 からの移行パスを十分に考慮したアーキテチャではなかった(にできなかった?)ことが真の原因ではないかと思います*1

*1:たとえば、80286 では一度プロテクトモードに入るとリアルモードに戻れないという、セキュリティ的に美しすぎる設計が災いした。80386 の成功は、必要な仮想化技術を適切なタイミングで市場に投入できたというのも、理由の一つかも知れない。