web-dev-qa-db-ja.com

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

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

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

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

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

マルチレベルページテーブル:2レベルページテーブルの場合、最初の10の最上位ビットを使用して、1レベルページテーブルにインデックスを付けます。次の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

したがって、複数レベルのページテーブルを保存するためにより多くのメモリが必要です。

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

37
Anil Kumar K K
  1. 単一レベルのページテーブルでは、少量のデータ(メモリ参照が少ない)にアクセスするためにテーブル全体が必要です。つまり、各PTEが想定どおり4バイトを占有する2 ^ 20ページ。

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

  1. ページングページはマルチレベルページングです。マルチレベルページングでは、より具体的に、マルチレベル組織の助けを借りて、データが存在する2 ^ 20ページのうちの特定のページを決定し、それを選択できます。したがって、ここでは、プロセスを実行している間、その特定のページのみがメモリ内にある必要があります。

説明した2レベルのケースでは、第1レベルのページテーブルと、第2レベルの2 ^ 10ページテーブルの1つが必要です。したがって、第1レベルのサイズ= 2 ^ 10 * 4バイト= 4KB第2レベルでは、2 ^ 10ページテーブルのうち1つだけが必要です。したがって、サイズは2 ^ 10 * 4バイト= 4KBです。

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

最終比較は4MB対8KBです。

34
Sai

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

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

ソース (セクション20.3)

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

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

9

Intelレベルのメモリ構造のため、マルチレベルテーブルが主に必要です。

32ビットシステムがあり、上半分がシステムに予約され、下半分がユーザーアドレス用になるようにアドレススペースを分割するとします。

このような分割では、システムアドレスに到達するために、すべてのユーザーページテーブルに2GBの連続したページテーブルエントリが必要になります。

これへの単純なアプローチへの古いVAX。 4GBのアドレス空間を4つの領域(2ユーザー、1システム、1つは使用不可)に分割しました。 3つの使用可能な領域には、独自のページテーブルがありました。

各地域には独自のページテーブルがありました。専用のシステムアドレススペースがあったため、ユーザーページテーブルは仮想アドレスにすることができ、連続したメモリを必要としません。

アドレス変換の最初のフェーズでは、2つの上位アドレスビットを調べて、使用するページテーブルを選択しました。

別のページテーブルを使用する代わりに、Intel-landはページテーブルを分割します。これにより、(1)テーブルに連続したメモリが必要になるという問題が軽減されます。 (2)ページテーブルがアドレス空間全体に広がることを要求する。 (3)すべてのプロセスで共有できるカーネルアドレスの定義を許可します。

0
user3344003