OS セカンダリ ページ テーブル

セカンダリ ページ テーブルを学習すると、論理アドレス構造の詳細や物理メモリ ストレージの内容が常に不明確になりますが、この記事は私自身のちょっとした混乱と答えです。

ここに画像の説明を挿入

前提条件:

ページ サイズは 4KB、ページ テーブル エントリは 4B、論理アドレスは 32 ビットで、バイト単位でアドレス指定されます。

  1. 4B サイズのページ テーブル エントリの場合、2 32 2^{32}を表すことができます。2ページ番号は32 です
  2. 第 2 レベルのページ テーブルでは、トップレベルのページ テーブルは最大 1 ページのみを占有し、この質問では 4KB になります。
    a. この最上位ページ テーブルが占めるページには、最大 4KB/4B=1024 ページ テーブル エントリを収容できます。
  3. したがって、論理アドレス空間構造では、第 1 レベルのページ テーブルのページ番号 (テーブル内のオフセット) を表すために 10 ビットを使用する必要があります。このページ番号は、トップレベルによって占有されるページのページ アドレス指定に使用されます。ページ テーブル (対応するページ テーブル エントリ、つまり対応する 2 次ページ テーブルを見つけるために使用されます)。(なぜ 12 ビットではないのかというと、このトップレベルのページ テーブルが占めるページは 1 バイトと 1 バイトとして格納されず、4 バイトと 4 バイトとして格納され、合計 1024 のページ テーブル エントリがあるからです)
  4. セカンダリ ページ番号の場合、ページ テーブルの機能を実装するために使用され、論理アドレスに対応する物理ブロック番号 (ページ フレーム番号にも相当) を見つけます。
  5. ページ内オフセット: バイトでアドレス指定されるため、ページには 4K バイトがあり、非常に多くのバイトを表すには 12 ビットが必要となるため、12 ビットが占有されます。
  6. そうですね、論理アドレス構造では、2 次ページ番号の長さも決定できます。これは 32-10-12=10 です。

補充:
ここに画像の説明を挿入

では、論理アドレスから物理アドレスに変換するにはどうすればよいでしょうか?

条件: 32 ビット論理アドレス空間、ページ サイズ 4KB、ページ テーブル エントリ サイズ 4B、アドレス指定単位としてのバイト
ページ サイズは 4KB、ページ オフセット アドレスは log24K= 12 ビット、ページ番号部分は 20 ビット (そうでない場合) 階層ページ テーブルの使用、1 ページテーブルのみが 20x4B/4KB=1024 ページ = 4MB を占有します。
ページ テーブル エントリは、ページ番号に対応する物理ブロック番号を格納するためにのみ使用されるため、4B はこの 32 ビット論理空間にちょうど対応し、32 ビット アドレス空間を格納するには 32 ビットを使用する必要があります。

入力: 32 ビット仮想アドレス 0x01234567

出力: 32 ビットの実際の物理アドレス

第 2 レベルのページ テーブル アドレス分割ルール: 上位 10 ビットはページ ディレクトリ (レベル 2) インデックス、中間の 10 ビットは (レベル 1) ページ テーブル インデックスです。最後の下位 12 ビットは、物理ページ内のオフセット (実際の物理アドレス) です。

例: 仮想アドレス 0x01234567 を入力してバイナリに分割すると、16 進数とバイナリの関係は 1 ~ 4 ビット、つまり 0x0 = 0000、0x1 = 0001、0x2 = 0010 であることがわかります。

したがって、分割して
0000 0001 00 = 2 D
10 0011 0100 = 564 D
0101 0110 0111 = 567 Hを取得します。

このように、ページディレクトリ(2次ページテーブル)のインデックス値は4、ページテーブル(1次ページテーブル)のインデックス値は564、物理オフセットは567Hとなる。

ステップ 1: ページ ディレクトリ (レベル 2) 内のページ テーブル (レベル 1) アドレス、つまり 4*4=16 を見つけます。これは、ページ テーブル アドレスがページ ディレクトリの先頭アドレスから 16 バイト離れていることを意味します。ここからページ テーブル (レベル 1) のアドレスを取得します。

2 番目のステップ: ページ テーブル (レベル 1) に移動して、実際の物理ページ アドレスを見つけます。オフセットは 564*4=2256=0x8d0 に、最初のステップで見つかったページ テーブルの最初のアドレスを加えたものです。最後に、実際の物理ページ アドレスが取得されます。

ステップ 3: 物理ページ アドレスを元の仮想アドレスの下位 12 オフセットに加算して、最終的な実際の物理アドレスを取得します。このアドレスは最終的な出力結果であり、メモリにアクセスしてデータをフェッチするために使用します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45827203/article/details/126284702