3

这个陈述对于操作系统意味着什么?

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

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

4

2 回答 2

6

请向我解释他们最后是如何计算 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 字节。页表包含指向pages条目。正如大卫所说,由于页表存储在内存中,它也存储在页面中。

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

于 2014-12-30T17:37:30.867 回答
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 字。

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

于 2014-12-30T17:36:23.477 回答