虚拟地址空间是否驻留在虚拟内存中?

时间:2013-12-28 21:02:44

标签: memory-management operating-system

虚拟地址空间是否驻留在虚拟内存中?我有一个混乱,每个过程 有自己的虚拟内存和页表,并在将虚拟地址加载到物理内存时从虚拟地址转换为物理地址,但虚拟地址空间在哪里出现?我已经浏览了许多操作系统书籍,但它到处都只是对特定词语的解释,而不是它所在的位置以及它们与它们如何运作之间的关系。 请理论上解释一下,不需要例子。 提前致谢。

2 个答案:

答案 0 :(得分:0)

(虚拟)地址空间是给定地址宽度的允许地址集(即x86上的2 ^ 32字节,x64上的2 ^ 64)。虚拟内存通常意味着几乎相同。它是特定进程或应用程序或整个系统的允许地址集。单个应用程序的虚拟内存最多可以与系统的虚拟地址空间一样大。每个应用程序只能“看到”操作系统分配给它的虚拟地址空间(并且由于一些技巧,每个应用程序可能具有相同大小的虚拟地址空间,并且总和可能大于地址空间系统)。

物理内存(更正确:物理RAM),是有效安装的RAM模块的数量。它通常小于虚拟地址空间。如果需要,操作系统会进行交换以将需要的内存页从硬盘带入物理内存。物理内存中的内存页面具有物理地址虚拟地址。普通应用程序只能看到虚拟地址,并且它们不会(也不必)关心内存页面的物理加载位置。因此,在应用程序或调试器中看到的地址实际上是该应用程序的虚拟地址空间中的虚拟地址。只有在直接连接硬件时才需要物理地址。如果操作系统决定这样做,它甚至可以不断变化。

希望这会让它更清晰一些。

答案 1 :(得分:0)

我不是专家,但我认为虚拟寻址和分页是80386之后引入的cpu保护模式的一部分,它不是操作系统的一部分。操作系统控制页表。例如,对于虚拟地址,它们只是可执行文件中的数字 objdump -d会显示它们