Operating system 如何计算页面表的页面大小和条目?

Operating system 如何计算页面表的页面大小和条目?,operating-system,page-size,Operating System,Page Size,这句话对于操作系统意味着什么 如果地址空间为2^32,页面大小为4K(2^12),则剩下2^20 页面表中的条目。每个条目4个字节,相当于4个字节 MB页表,太大,无法合理地保持连续 记忆。(并使用每个进程开关交换内存的输入和输出。) 请注意,对于4K页面,仅保存 页面表格 请解释他们是如何计算出最后1024页的?在这方面,每个条目4字节是多少?4K页面大小的含义是什么?4K表示4*1024字节吗?他们考虑的是4个字节(每个字),还是4个字节意味着它有4*1024个字,每个字都有一些大小,比如4

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

如果地址空间为2^32,页面大小为4K(2^12),则剩下2^20 页面表中的条目。每个条目4个字节,相当于4个字节 MB页表,太大,无法合理地保持连续 记忆。(并使用每个进程开关交换内存的输入和输出。) 请注意,对于4K页面,仅保存 页面表格


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

文档假定这些值:

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个字

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

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

记住我们要处理的是二的幂,所以

4MB=4194304字节

4KB=4096字节

4MB/4KB
=
4194304字节/4096字节
=1024字节

在这方面,每个条目4字节是多少

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

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

表中的每个条目都指向内存中某个地方的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页面大小,仅保存整个表就需要1024K页(=1M页)!他是对的还是错的


他错了。如果页面表实际上包含来自每个页面的数据,那么他将是正确的。对于4096字节的页面和2^20个条目,这将等于4294967296字节(4GB),但条目的大小只有4个字节。因此,将其乘以2^20个条目,得到4194304个字节(4 MB)。

当我说页面大小为4K时,这意味着它有1024个条目,每个条目有4个字节,或者1024*4个条目,每个条目有1个字节,或者其他什么?我对此感到非常困惑。谢谢你的快速回复。更新了我的答案以回应你的评论。我修改了我关于每个条目4字节的答案。有人说解释是错误的。正确的一个是:使用2^32地址空间和4K(2^12)页面大小,表中只剩下2^20页。在每个条目4字节的情况下,这相当于一个4GB页表,它太大了,无法合理地保存在连续内存中。(以及使用每个进程开关交换内存的大小。)请注意,对于4K页面大小,仅保存整个表就需要1024K页(=1M页)!他是对的还是错的?我修正了我的答案。简短回答:他不正确。4K页面大小意味着1024个条目,每个条目有4个字节。是这样吗@David K对于页面表的一页,是的,它是1024个条目,每个条目有4个字节。对于一个页面来说,无论应用程序/操作系统选择放在该页面上的内容是什么,它的值都是4096字节。你能解释一下最后一行吗?一般来说,一页是4096。。“在那页上放什么?”?谢谢。@hellodear页面是用来保存数据的大小单位。正如所说:
页面、内存页面或虚拟页面是一个固定长度的连续虚拟内存块,由页面表中的单个条目描述
@jmstoker那么每个条目4个字节的含义是什么?我明白了,它总共是4096字节。那么,图片中的4个字节从哪里来?非常感谢。我的陈述错了吗?不,是你引用的那个。
Entry |   Page Memory Location
------------------------------------------
    1 |          0
    2 |       4096
    3 |       8192
  ... |        ...
 2^20 | 4294963200 ->  (2^32 - 1) - 4096