web-dev-qa-db-ja.com

ページテーブルサイズの計算

私はページテーブルの例を読んでいて、これを見つけました:

2ビットの論理アドレス空間を持つシステムを検討してください。そのようなシステムのページサイズが4 KB(2 ^ 12)である場合、ページテーブルはup 100万エントリ(2 ^ 32/2 ^ 12)まで。各エントリが4バイトで構成されていると仮定すると、各プロセスは、ページテーブルだけで最大4 MBの物理アドレススペースを必要とする場合があります。

この4MBの結果が何を表しているのか本当にわかりません。実際のページテーブルが占めるスペースを表していますか?

37
mino

2 ^ 32の仮想アドレススペースがあり、各ページサイズが2 ^ 12であるため、(2 ^ 32/2 ^ 12)を保存できます。 = 2 ^ 20ページ。このページテーブルへの各エントリにはサイズ4バイトのアドレスがあるため、2 ^ 20 * 4 = 4MBになります。 ページテーブルはメモリで4MBを占有します

57
mino

私の説明は、私が理解するのを助けた基本的な構成要素を使用しています。注 @ Deepak Goyalの上記の答え を利用していることに注意してください。

論理的な32ビットアドレス空間が与えられました(つまり、32ビットコンピューターがあります)

32ビットの論理アドレススペースを持つシステムを検討する

私達はまた言われました

各ページサイズは4 KB

  • 1 KB(キロバイト)= 1 x 1024バイト= 2 ^ 10バイト
  • 4 x 1024バイト= 2 ^ 2 x 2 ^ 10バイト=> 4 KB(つまり2 ^ 12バイト)
  • したがって、各ページのサイズは4[〜#〜] kb [〜#〜](Kilobytesキロビット)ではありません。

Depaakが言ったように、次の式を使用してページテーブルのページ数を計算します。

Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size 
Num_Pages_in_PgTable =         2^32                           /    2^12
Num_Pages_in_PgTable = 2^20 (i.e. 1 million) 

著者は、ページテーブルの各エントリが4バイトかかる場合について説明します。つまり、物理メモリのページテーブルの合計サイズは4MBになります。

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable
Memory_Required_Per_Page =           4                 x     2^20
Memory_Required_Per_Page =     4 MB (Megabytes)

そのため、各プロセスを実行するには、4MB単位で少なくとも4MBのメモリが必要です。

教授が本の説明よりも少し難しい質問にしたい場合、64ビットコンピューターについて質問するかもしれません。彼らはbitsのメモリが欲しいとしましょう。この問題を解決するために、同じプロセスに従い、MBをMbitに変換するだけです。

この例を見ていきましょう。

ギブンズ:

  • 論理アドレス空間:64ビット
  • ページサイズ:4KB
  • Entry_Size_Per_Page:4バイト

リコール:64ビットエントリは2 ^ 64物理ページフレームのいずれかを指すことができます-ページサイズは4 KBなので、2 ^ 12バイトページサイズ

  • 1 KB(キロバイト)= 1 x 1024バイト= 2 ^ 10バイト
  • 各ページのサイズ= 4 x 1024バイト= 2 ^ 2 x 2 ^ 10バイト= 2 ^ 12バイト

ページテーブル内のページ数

`Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size 
Num_Pages_in_PgTable =         2^64                            /    2^12
Num_Pages_in_PgTable =         2^52 
Num_Pages_in_PgTable =      2^2 x 2^50 
Num_Pages_in_PgTable =       4  x 2^50 `  

BITSページごとのメモリ量は?

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable 
Memory_Required_Per_Page =   4 bytes x 8 bits/byte    x     2^52
Memory_Required_Per_Page =     32 bits                x   2^2 x 2^50
Memory_Required_Per_Page =     32 bits                x    4  x 2^50
Memory_Required_Per_Page =     128 Petabits

[2]:オペレーティングシステムの概念(第9版)-Gagne、Silberschatz、およびGalvin

14

論理アドレス空間が**32ビットであるため、可能な論理エントリの合計は2 ^ 32そして、各ページサイズが4バイトであると仮定すると、1ページのサイズは* 2 ^ 2 * 2 ^ 10 = 2 ^ 12 ... *今ではないことを知っています。ページテーブルのページ数は、pages =総可能な論理アドレスエントリ/ページサイズなので、pages = 2 ^ 32/2 ^ 12 = 2 ^ 20 Nowページテーブルの各エントリが4バイトを使用し、*物理メモリが= 2 ^ 2 * 2 ^ 20 = 2 ^ 22 = 4mb ***のページテーブルの合計サイズをとると仮定します。

4
DEEPAK GOYAL

論理アドレススペースは32ビット長であるため、プログラムサイズは2 ^ 32バイト、つまり4GBになります。これで、4KBのページサイズ、つまり2 ^ 12バイトになりました。したがって、プログラムのページ数は2 ^ 20です(プログラムのページ数=プログラムサイズ/ページサイズ)。ページテーブルエントリのサイズは4です。したがって、ページテーブルのサイズは2 ^ 20 * 4 = 4MB(ページテーブルのサイズ=プログラム内のページ数*ページテーブルエントリサイズ)です。したがって、ページテーブルを保存するには、メモリに4MBのスペースが必要です。

3
Ravi Kashyap

32ビット仮想アドレスシステムでは、2 ^ 32の一意のアドレスを使用できます。指定されたページサイズは4KB = 2 ^ 12であるため、ページテーブルに(2 ^ 32/2 ^ 12 = 2 ^ 20)エントリが必要です。各エントリは4バイトで、ページテーブルの合計サイズ= 4 * 2 ^ 20バイト= 4MB

2
udion