50

マルチレベル ページ テーブルがどのようにメモリを節約するかを理解しようとしています。私の理解によると、マルチレベル ページ テーブルは合計でシングルレベル ページ テーブルよりも多くのメモリを消費します。

例 : ページ サイズが 64KB で 32 ビット プロセッサのメモリ システムを考えます。ページ テーブルの各エントリは 4 バイトです。

シングルレベル ページ テーブル: ページ オフセットを表すには、16 (2^16 = 64KB) ビットが必要です。したがって、残りの 16 ビットは、ページ テーブルへのインデックス付けに使用されます。そう

*ページ テーブルのサイズ = 2^16(ページ数) * 4 バイト(各ページ テーブル エントリのサイズ) = 2^18 バイト*

マルチレベル ページ テーブル: 2 レベルのページ テーブルの場合、最初の上位 10 ビットを使用して、最初のレベルのページ テーブルにインデックスを付けます。次の 10 ビットは、ページ番号からフレーム番号へのマッピングを持つ第 2 レベルのページ テーブルにインデックスを付けます。残りの 12 ビットは、ページ オフセットを表します。

第 2 レベルのページ テーブルのサイズ = 2^10 (エントリ数) * 4 バイト (各エントリのサイズ) = 4 KB

すべての第 2 レベルのページ テーブルの合計サイズ = 2^10 (第 2 レベルのページ テーブルの数) * 4KB (各第 2 レベルのページ テーブルのサイズ) = 4 MB

第 1 レベルのページ テーブルのサイズ = 2^10 (エントリ数) * (10/8) バイト (各エントリのサイズ) = 1.25 KB

第 1 および第 2 レベルのページ テーブルを格納するために必要な合計メモリ = 4 MB + 1.25 KB

そのため、複数レベルのページ テーブルを格納するには、より多くのメモリが必要です。

この場合、マルチレベル ページ テーブルはメモリ スペースをどのように節約しますか?

4

4 に答える 4

53
  1. シングルレベルのページテーブルでは、少量のデータ (メモリ参照が少ない) にアクセスするためにテーブル全体が必要です。つまり、想定したように、各 PTE が 4 バイトを占める 2^20 ページです。

データにアクセスするために必要なスペースは 2^20 * 4 バイト = 4MB です

  1. ページング ページはマルチレベル ページングです。したがって、ここでは、プロセスの実行中にその特定のページのみがメモリに存在する必要があります。

あなたが議論した2レベルのケースでは、第1レベルのページテーブルが必要で、次に第2レベルの2 ^ 10ページテーブルの1つが必要です。したがって、第 1 レベルのサイズ = 2^10 * 4 バイト = 4KB 第 2 レベルでは、2^10 個のページテーブルのうち 1 つしか必要ありません = したがって、サイズは 2^10 * 4 バイト = 4KB です。

必要な合計サイズは、4KB + 4KB = 8KB です。

最終的な比較は 4MB と 8KB です。

于 2015-05-27T01:36:39.760 に答える
17

マルチレベル ページ テーブルの主な利点は次のとおりです。

まず、ページ テーブルをページ サイズの単位に分割します。次に、ページ テーブル エントリ (PTE) のページ全体が無効な場合は、ページ テーブルのそのページをまったく割り当てないでください。

ソース。(セクション 20.3)

したがって、ページテーブルに必要なメモリの量は、アドレス空間のサイズではなく、プロセスが使用しているメモリの量によって決まります。

さらに、物理メモリがいっぱいになった場合、ページ テーブル エントリのページ自体をページングすることができます。ページ ディレクトリのみが常にメモリ内に存在する必要があります。

于 2015-04-06T08:29:33.270 に答える