【问题标题】:How is the page size and entries calculated for a page table?如何计算页表的页大小和条目?
【发布时间】:2015-02-26 20:38:02
【问题描述】:

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

使用 2^32 地址空间和 4K ( 2^12 ) 页面大小,剩下 2^20 页表中的条目。每个条目 4 个字节,这相当于 4 MB 页表,太大而无法合理保持连续 记忆。 (并在每个进程切换时换入和换出内存。) 请注意,对于 4K 页面,这将需要 1024 个页面来保存 页表!

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

【问题讨论】:

  • 我的说法有误吗?
  • 不,你引用的那个。

标签: operating-system page-size


【解决方案1】:

请解释一下他们最后是如何计算 1024 页的?

请记住,我们正在处理 2 的幂,所以

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 字节。 页表包含指向页面条目。正如大卫所说,由于页表存储在内存中,所以它也存储在页面中。

有人说这个解释是错误的。正确的是:使用 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)。

【讨论】:

  • 当我说页面大小为 4K 时,这意味着它有 1024 个条目,每个条目有 4 个字节,或者 1024*4 个条目,每个条目有 1 个字节,或者还有什么?我对此感到非常困惑。感谢您的快速响应。
  • 更新了我的答案以解决您的评论
  • 我修改了关于每个条目 4 字节的答案。
  • 有人说这个解释是错误的。正确的是:使用 2^32 地址空间和 4K (2^12) 页大小,这会在表中留下 2^20 页。每个条目 4 个字节,这相当于一个 4 GB 的页表,它太大而无法合理地保存在连续的内存中。 (并且在每个进程切换时换入和换出内存。)请注意,对于 4K 页大小,这将需要 1024 k 页(=1M 页)来保存整个表!他是对还是错?
  • 我修改了我的答案。简短的回答:他错了。
【解决方案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 字。

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

【讨论】:

  • 4K 页面大小意味着 1024 个条目,每个条目 4 个字节。这样对吗? @大卫K
  • 对于页表的一页,是的,它有 1024 个条目,每个条目 4 个字节。一般来说,对于一个页面,应用程序/操作系统选择放在该页面上的任何内容都是 4096 字节。
  • 你能说明最后一行吗?一般来说,对于一个页面,它是 4096 ..“在那个页面上放什么”?谢谢。
  • @hellodear 页面是保存数据的大小单位。正如wikipedia 所说:A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described by a single entry in the page table
  • @jmstoker 那么每个条目 4 个字节的含义是什么?我的意思是它总共有 4096 个字节。那么,图片中的这 4 个字节从何而来?非常感谢。
猜你喜欢
  • 2023-03-22
  • 2012-05-28
  • 2011-12-16
  • 2019-09-17
  • 1970-01-01
  • 2013-04-25
  • 2014-07-28
  • 2014-07-31
相关资源
最近更新 更多