この例を見つけました。
32ビットの論理アドレス空間を持つシステムを考えてみましょう。このようなシステムのページサイズが4 KB(2 ^ 12)の場合、ページテーブルは最大100万のエントリ(2 ^ 32/2 ^ 12)で構成されます。 各エントリが4バイトで構成されていると仮定すると、各プロセスは、ページテーブルだけに最大4 MBの物理アドレススペースを必要とする場合があります。
各エントリの意味は何ですか?各エントリは4バイトで構成され、なぜ各プロセスはページテーブルに最大4 MBの物理アドレススペースを必要とするかもしれません?
ページテーブルは、OSがシステムで使用可能なメインメモリの総量を人為的に増やすために使用する仮想アドレスから物理アドレスへの変換のテーブルです。
物理メモリはメモリ(DRAM)のアドレスに配置される実際のビットですが、仮想メモリは、2 ^ 64ビットのアドレス空間を許可するなどのことを行うために、OSがプロセスのどこにあるかを伝えることにより、プロセスに「ある」場所です。 2 ^ 34ビットが最も多いという事実にもかかわらずRAM通常使用されます。(2 ^ 32ビットは4ギガバイトなので、2 ^ 34は16 GBです。)ほとんどのデフォルトのページテーブルサイズは4096 kbです。プロセスごとに、ただし、プロセスがより多くのプロセススペースを必要とする場合は、ページテーブルエントリの数が増える可能性があります。ページテーブルのサイズには、最初に小さい量または大きい量またはメモリを割り当てることもできます。ほとんどのプロセスでは、通常4 kbが最適なサイズです。
ページテーブルはページエントリのテーブルであることに注意してください。どちらも異なるサイズにすることができますが、ページテーブルのサイズは最も一般的には4096 kbまたは4 mbであり、ページテーブルのサイズはエントリを追加することで増加します。
PTE(ページテーブルエントリ)が4バイトである理由は次のとおりです。
いくつかの回答は、アドレス空間が32ビットであり、PTEがアドレスを保持するために32ビットを必要とするためであると述べています。
ただし、PTEにはバイトの完全なアドレスは含まれず、物理ページ番号のみが含まれます。残りのビットにはフラグが含まれているか、未使用のままです。正確に4バイトである必要はありません。
1)4バイト(32ビット)は、32ビットのアドレス空間でアドレスを保持するのに十分な量のスペースだからです。
2)4バイトの100万エントリがそれぞれ4MBになるため。
最初の疑問は、「ページテーブルエントリの各エントリ(PTEとも呼ばれます)は4バイトで構成される」です。これを理解するために、最初にページテーブルの内容について説明しましょう。 "、回答はPTEになります。したがって、この4バイトは、仮想アドレス、オフセットで構成される各PTEのサイズです。 /望ましい)
これで、ページテーブルに含まれる内容がわかったので、必要なメモリ領域を簡単に計算できます。つまり、合計はありません。 PTEのサイズにPTEのサイズを掛けたもの。これは次のようになります:1m * 4バイト= 4MBこれで疑問が解消されることを願っています。 :)
正直なところ、私自身は少し新しいですが、簡潔にするために、4MBは100万のエントリがあるという事実から来ているように見えます(各PTEは物理ページ番号が存在すると仮定して、物理ページ番号を格納します)。したがって、100万PTE、つまり2 ^ 20 = 1MBです。 1MB * 4バイト= 4MBなので、各プロセスは、ページテーブルのためにそれを必要とします。
したがって、エントリはページテーブルエントリ(PTE)を参照します。各エントリに格納されるデータは、物理メモリアドレス(PFN)です。ここでの基礎となる仮定は、物理メモリも32ビットアドレス空間を使用することです。したがって、PTEは少なくとも4バイトになります(4 * 8 = 32ビット)。
メモリページサイズが4KB(2 ^ 2 * 2 ^ 10 B)の32ビットシステムでは、プロセスが持つことができるページの最大数は2 ^(32-12)= 1Mになります。各プロセス考えるすべての物理メモリにアクセスできます。すべての1M仮想メモリアドレスを物理メモリアドレスに変換するために、プロセスは1 M PTE、つまり4MBを格納する必要がある場合があります。
ページテーブルエントリは、フレーム番号を取得するために必要なビット数です。たとえば、2 ^ 32フレームの物理メモリがある場合、それを表すには32ビットが必要になります。これらの32ビットは、ページテーブルに4バイト(32/8)で格納されます。
ここで、ページ数は100万です。つまり、ページテーブルの合計サイズ=ページテーブルエントリ*ページ数= 4b * 100万= 4 MBです。
したがって、テーブルをメインメモリ(物理メモリ)に格納するには、4MBが必要です。