私はページテーブルの例を読んでいて、これを見つけました:
2ビットの論理アドレス空間を持つシステムを検討してください。そのようなシステムのページサイズが4 KB(2 ^ 12)である場合、ページテーブルはup 100万エントリ(2 ^ 32/2 ^ 12)まで。各エントリが4バイトで構成されていると仮定すると、各プロセスは、ページテーブルだけで最大4 MBの物理アドレススペースを必要とする場合があります。
この4MBの結果が何を表しているのか本当にわかりません。実際のページテーブルが占めるスペースを表していますか?
2 ^ 32の仮想アドレススペースがあり、各ページサイズが2 ^ 12であるため、(2 ^ 32/2 ^ 12)を保存できます。 = 2 ^ 20ページ。このページテーブルへの各エントリにはサイズ4バイトのアドレスがあるため、2 ^ 20 * 4 = 4MBになります。 ページテーブルはメモリで4MBを占有します。
私の説明は、私が理解するのを助けた基本的な構成要素を使用しています。注 @ Deepak Goyalの上記の答え を利用していることに注意してください。
論理的な32ビットアドレス空間が与えられました(つまり、32ビットコンピューターがあります)
32ビットの論理アドレススペースを持つシステムを検討する
私達はまた言われました
各ページサイズは4 KB
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 `
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
論理アドレス空間が**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 ***のページテーブルの合計サイズをとると仮定します。
論理アドレススペースは32ビット長であるため、プログラムサイズは2 ^ 32バイト、つまり4GBになります。これで、4KBのページサイズ、つまり2 ^ 12バイトになりました。したがって、プログラムのページ数は2 ^ 20です(プログラムのページ数=プログラムサイズ/ページサイズ)。ページテーブルエントリのサイズは4です。したがって、ページテーブルのサイズは2 ^ 20 * 4 = 4MB(ページテーブルのサイズ=プログラム内のページ数*ページテーブルエントリサイズ)です。したがって、ページテーブルを保存するには、メモリに4MBのスペースが必要です。
32ビット仮想アドレスシステムでは、2 ^ 32の一意のアドレスを使用できます。指定されたページサイズは4KB = 2 ^ 12であるため、ページテーブルに(2 ^ 32/2 ^ 12 = 2 ^ 20)エントリが必要です。各エントリは4バイトで、ページテーブルの合計サイズ= 4 * 2 ^ 20バイト= 4MB