请向我解释他们最后是如何计算 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)。