如何为页表计算页面大小和条目?

时间:2014-12-30 17:06:50

标签: operating-system page-size

这句话对于操作系统意味着什么?

  

使用2 ^ 32地址空间和4K(2 ^ 12)页面大小,这将留下2 ^ 20   页表中的条目。每个条目4个字节,这相当于4   MB页表,太大而不能合理地保持连续   记忆。 (并与每个进程交换机交换内存和内存。)   请注意,对于4K页面,这将需要1024页才能保存   页面表!

请解释他们最后如何计算1024页?在这方面,每个条目4个字节是多少? 4K页面大小是什么意思? 4K意味着4 * 1024字节?他们是在考虑4个字节(每个字)还是4个字节意味着它有4 * 1024个字,每个字有一些大小,比如4个字节?

2 个答案:

答案 0 :(得分:5)

  

请向我解释他们最后如何计算1024页?

请记住,我们正在处理两个人的权力,所以

4 MB = 4,194,304字节

4 KB = 4096字节

4 MB / 4 KB = 4,194,304 Bytes / 4096 Bytes = 1024 字节

  

这方面的每个条目4个字节是多少?

您需要32位来引用所有 2 ^ 32 地址空间。每字节8位,32 bits = 4 字节。

例如,第一个地址为0,最后一个地址为4294967295或(2 ^ 32 - 1)。

Entry |   Page Memory Location
------------------------------------------
    1 |          0
    2 |       4096
    3 |       8192
  ... |        ...
 2^20 | 4294963200 ->  (2^32 - 1) - 4096

表格中的每个条目都指向内存中的1页。在这个例子中,我们可以说它从零开始。将有2 ^ 20个条目,它们将覆盖整个内存地址范围(2 ^ 32)。由于每个条目都是4096字节,因此您只需要2 ^ 20个条目即可覆盖所有页面。

  

4K表示4 * 1024字节?

是的,它指的是每页4096字节(4 * 1024)。

  

他们是在考虑4个字节(每个字),还是4个字节意味着它有4 * 1024个字,每个字的大小有4个字节?

在32位处理器上它可以更小,但通常一个字是32位或4字节。

添加评论

  

当我说页面大小为4K时,则表示它有1024个条目,每个条目有4个字节,或者1024 * 4条目,每个条目有1个字节或其他什么?

页面可以容纳任何内容,它是一个数据容器,在本例中为4096字节。 页面表包含指向页面条目。正如David所说,由于页表存储在内存中,因此它也存储在页面中。

  

有人说这种解释是错误的。正确的是:使用2 ^ 32地址空间和4K(2 ^ 12)页面大小,这将在表格中留下2 ^ 20页。每个条目4个字节,这相当于 4 GB 页表,这个表太大而无法合理地保留在连续的内存中。 (并且每个进程交换机都要交换内存。)请注意,对于4K页面大小,这将需要1024 k页(= 1M页)来保存总表!他是对还是错?

他不对。如果页面表实际上包含来自每个页面的数据,那么他就是正确的。使用4096字节页面和2 ^ 20个条目,这将等于4,294,967,296字节(4 GB),但条目大小仅为4个字节。所以你用2 ^ 20个条目多次获得4,194,304字节(4 MB)。

答案 1 :(得分:2)

文档假定这些值:

2^32 = number of bytes in address space
2^12 = 4K = 4*1024 = number of bytes in one page
2^20 = 1M = 1024*1024 = number of pages
4 = number of bytes in the page table to describe one page
4M = 4*1024*1024 = total number of bytes in the page table
1024 = (4*1024*1024)/(4*1024) = number of pages in the page table

所以4个字节是4个字节(页面表中一个页面的条目大小, 页面本身的大小!)。 是的,4K表示4 * 1024字节, 4 * 1024字。

操作系统和任何应用程序使用的所有内存都存储在系统某处的页面中。 由于页面表必须存储在内存中,因此它也存储在页面中。