プロテクトモード:x86アーキテクチャの進化を支えた保護仮想アドレスモード
プロテクトモードは、
Intel 80286以降のx86アーキテクチャCPUが採用する動作モードです。正式名称はProtected Virtual Address Mode(保護仮想アドレスモード)で、メモリやI/Oデバイスへのアクセス制御、そしてアドレス空間の拡張を実現する重要な機能です。本稿では、プロテクトモードの機能、歴史、そしてx86アーキテクチャへの影響について詳しく解説します。
プロテクトモードの概要
プロテクトモードは、80286以降のCPUが本来備える動作モードです。その名の通り、メモリ保護と階層的な特権管理(リングプロテクション)を可能にすることで、
マルチタスク環境におけるシステムの安定性とセキュリティを大幅に向上させました。
CPU起動時はリアルモードで動作し、従来の
ソフトウェアとの互換性を維持します。プロテクトモードへの移行は、いくつかのディスクリプタテーブルを設定し、CR0レジスタのPE
ビットをセットすることで行われます。
プロテクトモードの歴史
8086と1MBの壁
8086プロセッサでは、20
ビットアドレスバスにより1MBまでのメモリしかアクセスできませんでした。当時の
IBM PCでは、640KBをアプリケーションとOS、残りをB
IOSや
周辺機器に割り当てていました。メモリ容量の増加に伴い、この1MBの制限は大きな課題となりました。
80286とプロテクトモードの登場
Intelは、この課題に対処するため80286プロセッサを開発し、プロテクトモードを導入しました。80286では、
24[[ビット]]物理アドレス空間とセグメント方式による仮想記憶管理を実現し、最大16MBのメモリにアクセス可能になりました。しかし、リアルモードへの復帰が容易でなかったことや、アクセス可能なメモリ範囲が4セグメントレジスタ(256KB)に制限されていたことから、初期の普及は限定的でした。
80286のプロテクトモードでは、グローバルディスクリプタテーブル(GDT)とローカルディスクリプタテーブル(LDT)が使用され、セグメントディスクリプタによってメモリの保護属性が設定されます。また、「Present
ビット」を用いた仮想記憶管理も実現されましたが、エラー発生時の復旧が困難でした。
80386とプロテクトモードの拡張
1985年に登場した80386プロセッサは、プロテクトモードをさらに拡張しました。32
ビットアドレスバスにより4GBのメモリにアクセス可能になり、セグメントも32
ビット化されたことで、4GBアドレス空間へのアクセスが容易になりました。
386では、以下の機能が追加されました。
ページング方式: メモリをページ単位で管理し、メモリ保護と仮想アドレス空間の効率的な利用を実現しました。
32ビットセグメントオフセット: より大きなアドレス空間へのアクセスを可能にしました。
リアルモードへの復帰: 柔軟なモード切り替えを可能にしました。
仮想86モード: リアルモードアプリケーションとの互換性を維持するために導入されました。
これらの機能強化により、プロテクトモードはWindowsや
Linuxなど、ほとんどのx86ベースOSで標準的に利用されるようになりました。
プロテクトモードの機能と特徴
プロテクトモードは、システムの安定性とセキュリティを向上させるための様々な機能を備えています。
特権レベル(リングプロテクション)
0から3までの4段階の特権レベル(リング)により、OSとアプリケーションのアクセス権限を厳密に制御します。リング0は最も高い特権を持ち、OSカーネルが動作します。
リアルモードアプリケーションとの互換性
プロテクトモードは、リアルモードアプリケーションとの互換性を維持するために、仮想86モードを提供しています。しかし、リアルモードアプリケーションの中には、仮想86モードで動作しないものもあります。
セグメント方式
リアルモードでは、セグメントとオフセットでアドレスを指定しますが、プロテクトモードではセレクタとオフセット、そしてディスクリプタテーブルを用いて、より柔軟なメモリ管理を実現しています。80386では、セグメントリミットが4GBのフラットモデルもサポートされました。
ページング方式
ページングは、メモリを固定サイズのページに分割し、仮想アドレス空間を管理する機構です。ページテーブルとページディレクトリを用いて、仮想アドレスと物理アドレスの変換を行います。
プロテクトモードでは、タスクステートセグメント(TSS)を用いて、タスク間のコンテキストスイッチを効率的に行うことができます。
まとめ
プロテクトモードは、x86アーキテクチャにおける重要な進化であり、現代のOSや
アプリケーション[[ソフトウェア]]の基盤となっています。メモリ保護、アドレス空間拡張、
マルチタスクといった機能は、今日のコンピューティング環境において不可欠なものです。プロテクトモードの登場は、コンピュータの性能向上と信頼性向上に大きく貢献しました。