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

Size of Physical Memory VS size of Virtual Memory

我目前正在做一些关于虚拟内存概念的练习。但是,我不确定我是否理解正确,或者这个问题是否太琐碎以至于我担心太多:

A system is working on 20 bit wide virtual addresses. Page size is 4096 Byte and one-level paging is used.
a) What's the size of the virtual address-space?
b) What's the size of the addressable physical memory?

我会说这两个问题的答案是一样的,都是 2^20 字节。我无法寻址比虚拟地址更多的物理内存-space.

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

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

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

编辑: 我描述的翻译过程仅适用于问题中询问的一级页面表。两级分页是当今的标准,中间需要另一个分页。

(*):请参阅 user3344003 的回答和评论,其中提供了更多信息,说明为什么情况并非总是如此

实际上有些系统确实允许比虚拟地址 space 更大的物理地址 space。 32 位 Intel 就是一个例子。

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