【发布时间】:2014-06-24 15:01:53
【问题描述】:
在几本书和网站上,虚拟内存管理的一个原因是它只允许将程序的一部分加载到 RAM 中,因此可以更有效地使用 RAM。
1) 为什么我们需要虚拟内存管理来只加载程序的一部分?为什么我们不能使用物理地址加载程序的一部分?
2) 除了将进程内存的不同部分(堆栈、堆等)分离到不同物理位置的安全原因之外,我真的看不出虚拟内存还有什么其他好处?
3) 为什么进程认为地址是连续的(由虚拟地址提供)而实际上它们是不连续的很重要?
编辑:我知道虚拟内存允许更多内存被视为 RAM 的明显原因。
【问题讨论】:
-
尝试在只有 8G RAM 的计算机上运行需要 16G 的程序。
-
(如果没有虚拟内存,还有很多其他方法可以做到这一点,主要涉及“覆盖”。但它们很少是更好的方法。)
-
想象一下,您所在城市的地址是随机分配的,第四街 213 号紧邻胡桃街 952 号,等等。如果没有某种地址到物理坐标的自动“翻译”,您将拥有一个非常很难找到自己的路。
-
@HotLicks 我不明白为什么底层物理内存地址必须是“无序的”(正如您在类比中所说的那样)?
-
想象一下,建造房屋的人们在查看理想化的城市地图时选择了他们想要的位置,一个人选择了一个在山上的位置,另一个人在那里选择了一个可以俯瞰很晚的位置,然后是房屋出于效率原因,从城市的一个角落开始,彼此相邻建造。
标签: memory-management operating-system paging virtual-memory