2014-12-04 114 views
0

我给出的以下信息:页表尺寸

虚拟地址:32位

物理地址:30个比特

页面大小:8 KB

页表项:4字节

我想要计算页表的大小。页表大小是通过使用虚拟地址空间还是物理地址空间来计算的?

虚拟:
2^32/2^13 = 2^19页* 2^2入口尺寸= 2^21页表尺寸

物理:
2 ^二分之三十○^ 13 = 2^17页* 2^2条目大小= 2^19页表大小

由于地址大小的差异,我不确定物理内存地址空间是否会约束较大的虚拟地址空间。

鉴于问题提供的信息有限,我非常感谢任何一种方法的帮助。

+1

类似主题? [questions/4029838/determine-page-table-size-for-virtual-memory](https://stackoverflow.com/questions/4029838/determine-page-table-size-for-virtual-memory) – 2014-12-04 18:18:59

+1

问问自己什么一个页表被用于。提示:它既可以将虚拟页面映射到物理页面,也可以将物理页面映射到虚拟页面(但通常不是两者)。如果你知道哪些是正确的,那么应该告诉你需要多少个单独的映射来覆盖整个地址空间,并且从那里你可以计算出整个页面表占用的内存量...... – twalberg 2014-12-04 18:41:52

+0

不幸的是,不知道哪些是正确的。我的猜测是,表的大小只需要适应物理地址空间。 – FantasticSponge 2014-12-04 18:52:56

回答

1

无论谁给了你这个问题,给你一个没有答案。人们不断重复地问这个同样的问题。我很想知道源代码。

该问题反映了对页表结构的基本理解不足。

如果没有系统地址空间,就不可能实现页表。这个问题没有解释地址空间是如何分解的,因为用户和系统。这使问题变得毫无意义。

如果页面本身是可分页的,则物理限制不会影响页面大小。

虚拟限制只是限制。页表不必(并且很少)跨越整个虚拟地址空间。虚拟地址空间只会为大小设置高端。

我当然希望这个问题不在教科书中。

1

物理地址大小(30位)是一个红色的鲱鱼。

如果你有32位虚拟地址,每页是8KB(2^13),那么需要2 ^(32-13)页来存储每个虚拟地址。

页表的大小是2 ^(32-13)=由每个条目的字节数mulitplied 2^19页地址,因此:

页表大小=(2^19)* 4 = 2 MB

2^19 * 1个字节为1/2 MB

编辑: 要回答你的问题,你用的虚拟地址空间。