20

38ビットの仮想バイトアドレス、1KBのページ、512MBの物理メモリを備えた仮想メモリシステムについて考えてみます。有効、保護、ダーティ、および使用ビットが合計4ビットであり、すべての仮想ページが使用されていると仮定した場合、このマシンの各プロセスのページテーブルの合計サイズはどれくらいですか?(ディスクアドレスがページテーブルに保存されていないと仮定します。)

4

3 に答える 3

30

さて、質問が単に「ページテーブルのサイズはどれくらいですか?」である場合。物理メモリに収まるかどうかに関係なく、答えは次のように計算できます。

最初の物理メモリ。512Kページの物理メモリ(512M / 1K)があります。これには、各ページを表すために19ビットが必要です。それを4ビットのアカウンティング情報に追加すると、23ビットになります。

今仮想メモリ。38ビットのアドレス空間と10ビット(1K)のページサイズでは、ページテーブルに228のエントリ必要です。

したがって、それぞれ23ビットの2つの28ページテーブルエントリは、6,174,015,488ビットまたは736Mです。

これは、各プロセスの単一レベルのVMサブシステムに必要な最大サイズです。

物理RAMが512Mしかない場合は、明らかにそれは機能しないため、いくつかのオプションがあります。

  1. 物理ページ数を減らすことができます。たとえば、メモリの半分だけがページングの対象になり、残りの半分は常に常駐します。これにより、エントリごとに1ビット節約できますが、違いを生むには十分ではありません。

  2. 可能であれば、ページサイズを大きくしてください。38ビットアドレス空間の1Kページが、非常に分厚いページテーブルの理由です。たとえば、32ビットのアドレス空間を持つ'386は4Kページを使用していると思います。これにより、100万ページのテーブルエントリが作成されます。これは、ここで必要な2億6000万をはるかに下回ります。

  3. マルチレベルに移動します。もう少し高度ですが、基本的にはページテーブル自体がページングの対象になることを意味します。最初のレベルのページテーブルを物理メモリに常駐させる必要がありますが、2番目のレベルは必要に応じて出入りできます。これにより、物理的な要件が大幅に削減されますが、実際のプロセスページで2つのレベルのページフォールトが発生する可能性があるため(1つはセカンダリページングテーブル用、もう1つはプロセスページ用)、速度が犠牲になります。


オプション3をもう少し詳しく見てみましょう。

プライマリページングテーブルに32Mを許可し、各エントリに4バイトを指定すると(32ビット:23のみが必要ですが、ここで効率を上げるために切り上げることができます)、セカンダリページテーブルに8,388,608ページが許可されます。

これらのセカンダリページテーブルページはそれぞれ1Kの長さであるため(それぞれ4バイトで256のセカンダリページテーブルエントリを格納できます)、合計2,147,483,648の仮想ページをアドレス指定できます。

これにより、非常駐ページを格納するためのディスクスペースのかなりのチャンクがあると仮定して、8,192個の完全にロードされた(つまり、28ビットアドレススペース全体を使用する)プロセスを並べて実行できます。

これで、明らかにプライマリページングテーブル(およびVMサブシステム、そしておそらく残りのOSのかなりの部分)が常に常駐している必要があります。プライマリページを元に戻すためにそのページが必要になる可能性があるため、プライマリページの1つをページアウトすることはできません:-)

ただし、これは、プライマリページングテーブルの512Mのうち32Mの常駐コストであり、(少なくとも1つの完全にロードされたプロセスの)736Mよりもはるかに優れています。

于 2010-10-27T05:09:06.863 に答える
9

ページテーブルのサイズ=ページテーブルエントリの総数*ページテーブルエントリのサイズ

ステップ1:ページテーブル内のエントリの数を見つける:

no of page table entries=virtual address space/page size

=2^38/2^10=2^28

したがって、ページテーブルには2^28のエントリがあります

ステップ2:物理的記憶にフレームがない:

no of frames in the physical memory=(512*1024*1024)/(1*1024)=524288=2^19

したがって、有効19 bits4 bits保護、ダーティ、および使用ビットの合計23ビット=2.875バイトが必要です。

size of the page table=(2^28)*2.875=771751936B=736MB
于 2013-11-27T06:37:20.673 に答える
-2

1KBページ=2^ 10、512MB = 2 ^29=>オフセット=29-10=19ビット。

仮想には2つの部分が含まれます:ページフレーム+オフセット=>ページフレーム+ダーティビット= 38-19=29ビット。29ビットには4ビットのダーティ(上記)が含まれます=>実際のページフレームの場合は25ビット、各ページフレームの長さは10ビットです。

したがって、ページテーブルのサイズ:2 ^ 25 * 10=320M。

これが正しいことを願っています。

于 2016-01-08T06:22:09.913 に答える