このテキストはあまり明確ではありません。私はそれをクリアしようとします。
物理一つに仮想アドレスを変換する場合、下位ビットの固定数は翻訳されません:
+---------------------+----------+
| High bits | Low bits |
+---------------------+----------+
| |
| |
V |
[Page tables] |
| |
| |
V V
+---------------------+----------+
| Physical address |
+---------------------+----------+
下位ビット数がページサイズに関連付けられています:私たちは、その後4KiBページを前提とした場合下位12ビットは固定され、変換されません。
また、仮想アドレス空間が32ビットであると仮定します。
ページテーブルエントリが32ビット長の場合、物理アドレスの上位部分として使用する32ビットを与えることができます。
したがって、ページテーブルを参照するとき、入力に20(32-12)ビット、出力に32ビットがあります。
固定部分から12ビットを追加すると、32 + 12 = 44ビットの物理アドレスが得られます。
更新フィギュア:
<---------- 32 bits ----------->
<---- 20 bit -------> <- 12 b ->
+---------------------+----------+
| High bits | Low bits |
+---------------------+----------+
| |
| 20 bit |
V |
[Page tables] |
| |
| 32 bit |
V V
+----------------------------+----------+
| Physical address |
+----------------------------+----------+
<-------- 32 bits ---------> <- 12 b ->
<------------- 44 bits --------------->
しかしこれは、ポインタはまだ32ビットです真の44ビット・アドレッシングではありません。
アプリケーションは4GiBのメモリしか直接アクセスできませんが、OSは アプリケーションを最初の4GiBに、別のものを2番目の4GiBにマップします。
これは、PAEがx86でどのように動作するかと同様です。
ページテーブルエントリのすべてが物理アドレスの上位ビットを与えるために使用されるという仮定は真実ではありません。
ビットのいくつかは、フレームの属性(キャッシュ能力、アクセス権、マッピング状態など)を設定するために使用されます。
物理アドレスの上位ビットは、ページフレームと呼ばれます。
ページフレームの数は、仮想アドレス空間のサイズ(物理アドレス空間のサイズ)ではなく、ページテーブルエントリの構造によって決まります。
フレーム番号のページテーブルエントリが50ビットの場合、2 のフレームがあります。
物理アドレスの下位部分は、ページオフセットと呼ばれ、ページサイズ(またはフレームサイズ、それらは等しくなります)によって決まります。
メモリ内のフレーム数は 'memory-size \ page-size'です。 4GBのメインメモリを持っているなら、 '2^20'フレームがあります。 それ以外にも、あなたの質問は広すぎます。 –