计算页表的大小

时间:2014-06-07 09:26:17

标签: operating-system virtual-memory

考虑具有64 MB物理内存和32位虚拟地址空间的计算机。如果页面大小为4 KB,页面表的大致大小是多少?

我的解决方案:

Number of pages in physical memory = (size of physical memory)/(size of page)
                                   = 64 * 2^10 / 4
                                   = 2^14
Number of pages in virtual memory = (size of virtual memory)/(size of page)
           size of virtual memory = 2^32 bits
                                  = 2^29 bytes
                                  = 2^19 kBytes
Number of pages in virtual memory = 2^19/4 = 2^17
=> Number of entries in page table = 2^17
Size of each entry = 17+14 =31 bits
Size of page table = 31 * 2^17 bits 
                   = 31 * 2^14 bytes
                   = 31 * 2^4 KB
                   = 31*16
                   = 496 KB

但答案是8 MB。为什么呢?

2 个答案:

答案 0 :(得分:0)

之前已经问过这个问题。但是,问题中没有足够的信息来确定页面表的大小。

  1. 它没有指定页表条目的大小。
  2. 它不指定映射到进程地址空间的页数。
  3. 它没有指定进程和系统地址速度之间的划分。 32位中有多少是进程地址空间的一部分。
  4. 它不指定这是进程还是系统表。

答案 1 :(得分:0)

8MB无法回答,
物理地址空间 = 64MB = 2 ^ 26B
虚拟地址 = 32位,∴虚拟地址空间 = 2 ^ 32B
页面大小 = 4KB = 2 ^ 12B
页数 = 2 ^ 32/2 ^ 12 = 2 ^ 20页。

帧数 = 2 ^ 26/2 ^ 12 = 2 ^ 14帧。

页面大小 = 2 ^ 20×14位≈2^ 20×16位≈2^ 20×2B = 2MB。