インテル・アーキテクチャのメモリ管理機能は、セグメンテーションとページングという2つの機能があります。
セグメンテーションでは、プロセッサのアドレス指定可能なメモリ空間(リニア・アドレス空間)を、セグメントと言う保護されたアドレス空間に分割し管理します。特定のセグメントにあるバイト位置を指定するには、論理アドレスを指定する事によりアクセスします。論理アドレスは、セグメント・セレクタとオフセットで構成され、セグメンテーション機能は常に有効であり解除することは出来できません。
ページングは、少ない物理メモリと若干のディスク記憶領域を使用して大きなリニア・アドレス空間をシミュレートする仮想メモリをサポートします。各セグメントはページに分割され、物理メモリまたはディスクにマッピングされます。ページングはオプショナルでありcr0レジスタで有効/禁止を設定を行ないます。
セグメンテーションとページング
インテル・アーキテクチャでは、プロテクトモード時には4G バイトの物理アドレス空間をアクセス出来ます。 このアドレス空間は、フラット(セグメント化されていない)であり、アドレスは0x00000000
から0xffffffff
までの連続した範囲になります。そして、この物理アドレス空間を、読取り/ 書込みメモリ、読取り専用、およびメモリ・マップドI/O にマッピングすることが出来きます。
また、制御レジスタCR4のビット5 にある物理アドレス拡張(PAE) フラグを有効にすることにより、64G byteへの物理アドレス空間の拡張もサポートしており(Pentium Pro プロセッサで導入)、最大物理アドレスは0xfffffffff
まで拡張できます。
プロテクトモードでは、すべての論理アドレスをリニア・アドレスという32 ビットのアドレスの変換を行ないます。リニア・アドレスは、物理アドレス空間と同様に、フラットな( セグメント化されない)4G Byteのアドレス空間であり、アドレスは0x00000000
から0xffffffff
の範囲になります。
セグメントを最小限にしか利用していない場合(例えば、一つのセグメントで0〜4G Byteをアクセス出来るフラットモデル)でも、プロセッサのアドレス空間にあるすべてのバイトは、論理アドレスによってアクセスされます。