物理内存的大小VS虚拟内存的大小

时间:2018-02-04 21:30:51

标签: paging virtual-memory mmu

我目前正在进行一些关于虚拟内存概念的练习。但是,我不确定我是否理解正确,或者问题是否如此微不足道,以至于我只是担心太多:

  

系统正在处理20位宽的虚拟地址。   页面大小为4096字节,使用单级分页    a)虚拟地址空间的大小是多少?
   b)可寻址物理内存的大小是多少?

我会说两个问题的答案是一样的,它是2^20字节。我无法处理比虚拟地址空间更多的物理内存。

2 个答案:

答案 0 :(得分:2)

一般来说(作为类问题的答案),你是对的(*)。您的可寻址物理内存与虚拟内容的大小相同

首先是V2P翻译的重点。另外,请注意:如果您的虚拟地址更多,那么在您的程序中,您可能已经分配了永远不会到达RAM 的空间,因此这将是无用的,更不用说灾难性的了。另一方面,如果您可以映射更多地址而不是虚拟内存,那么物理空间会浪费,所以也没有意义

最后,要完全确定,您实际上可以自己进行翻译并计算:
从这20位中,你需要 12 来映射同一页面内的地址(2^12 = 4096,这是你页面的大小),你可以使用 8 剩下的位用于枚举/映射 Page Table 中的PTE。因此,您可以拥有2^8 = 256个PTE,并且每个条目"都有"一页4096字节,总共有(2^8) * (2^12) = 2 ^ 20字节,与你计算的相同。

编辑:我所描述的翻译流程仅适用于问题中提到的一级页面表格。今天规范的两级分页在步骤之间需要另一个。

(*):请参阅 user3344003 的答案和评论,但这提供了一些有关为什么并非总是如此的更多信息

答案 1 :(得分:1)

实际上,某些系统允许比虚拟地址空间更大的物理地址空间。 32位英特尔就是一个例子。

进程只能访问由地址中的位限制的内存范围,但系统可以通过使用字节页来访问相同位数的更大范围的内存。