セグメント化されたメモリ モデルで動作する 32 ビット オペレーティング システムの場合、それでも4GBの制限になりますか?
Intel Pentium Processor Family Developer's Manualを読んでいたところ、セグメント化されたメモリ モデルでは最大64TBのメモリをマップできると記載されていました。
「メモリ編成のセグメント化モデルでは、論理アドレス空間は、それぞれ最大 4 ギガバイトの 16,383 セグメント、または合計で 2^46 バイト (64 テラバイト) のセグメントで構成されます。プロセッサは、この 64 テラバイトの論理アドレスをマップします。第 11 章で説明されているアドレス変換メカニズムによって、空間を物理アドレス空間に変換します. アプリケーション プログラマは、このマッピングの詳細を無視できます. セグメント化モデルの利点は、各アドレス空間内のオフセットが個別にチェックされ、各セグメントへのアクセスが個別にできることです.制御されます。
これは複雑な質問ではありません。テキストを正しく理解していることを確認したいだけです。Windows またはその他の OS がフラット モデルではなくセグメント化されたモデルで動作する場合、メモリ制限は 64 TB になりますか?
アップデート:
Intel の 3-2 3a システム ドキュメント。
http://pdos.csail.mit.edu/6.828/2005/readings/i386/c05.htm
セグメント レジスタは、従来のリアル モードの意味で考えるべきではありません。セグメント レジスタは、グローバル ディスクリプタ テーブルのセレクタとして機能します。
保護モードでは、A:B 形式の論理アドレスを使用してメモリをアドレス指定します。リアル モードと同様に、A はセグメント パーツで、B はそのセグメント内のオフセットです。> 保護モードのレジスタは 32 ビットに制限されています。32 ビットは、0 ~ 4Gb の任意の整数を表すことができます。B は 0 ~ 4Gb の任意の値にできるため、セグメントの最大サイズは 4Gb になりました (リアル モードと同じ理由)。今違いのために。保護モードでは、A はセグメントの絶対値ではありません。保護モードでは、A はセレクターです。セレクターは、グローバル記述子テーブル (GDT) と呼ばれるシステム テーブルへのオフセットを表します。GDT には、記述子のリストが含まれています。これらの各記述子には、セグメントの特性を説明する情報が含まれています。
セグメント セレクターは、ページングでは実現できない追加のセキュリティを提供します。
これらの方法 [セグメンテーションとページング] にはどちらも利点がありますが、ページングの方がはるかに優れています。セグメンテーションはまだ使用可能ですが、メモリ保護および仮想メモリの方法として急速に時代遅れになっています。実際、x86-64 アーキテクチャでは、一部の命令が正しく動作するために、フラット メモリ モデル (基数が 0 で制限が 0xFFFFFFFF の 1 つのセグメント) が必要です。
ただし、セグメンテーションは x86 アーキテクチャに完全に組み込まれています。それを回避することは不可能です。ここでは、独自のグローバル記述子テーブル (セグメント記述子のリスト) を設定する方法を示します。
前述のように、フラット メモリ モデルを設定してみます。セグメントのウィンドウは 0x00000000 から始まり、0xFFFFFFFF (メモリの最後) まで拡張する必要があります。ただし、セグメンテーションでは実行できてページングでは実行できないことが 1 つあります。それは、リング レベルの設定です。
- http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html
たとえば、GDT には、さまざまなユーザーのアクセス レベルとメモリ アクセスの領域が一覧表示されます。
サンプル GDT テーブル
GDT[0] = {.base=0, .limit=0, .type=0};
// Selector 0x00 cannot be used
GDT[1] = {.base=0, .limit=0xffffffff, .type=0x9A};
// Selector 0x08 will be our code
GDT[2] = {.base=0, .limit=0xffffffff, .type=0x92};
// Selector 0x10 will be our data
GDT[3] = {.base=&myTss, .limit=sizeof(myTss), .type=0x89};
// You can use LTR(0x18)
http://wiki.osdev.org/GDT_Tutorial#What_should_i_put_in_my_GDT.3F
ページング部分は、物理メモリにマップされるものです。(PAE) は、最大 64 GB の追加メモリを提供するものです。
要するに。答えはノーです。論理メモリは 4GB を超えることはできません。Intel Pentium Processor Family Developer's Manual の64TB の主張は誤植だと思います。