操作系统虚拟内存
虚拟内存
虚拟内存的存在是为了运行比物理内存还大的程序,可以让系统看上去比实际物理空间大小大得多,并为多道程序的执行创造了条件。
明确一个概念:内存中的每一个存储单元都必须有确切的地址,而例如对32位机来说,能发出的地址数目就是2^32=4G,这也被称为处理器的寻址能力。因此机器内存的大小也应该是和处理器的最大寻址能力对应的。
但现实往往不是这样的,导致了大量寻址能力的浪费。但我们可以明确一点:程序总是被逐断运行的,一段时间内会稳定运行在某一段程序中。
因此一种做法是:把要运行的那一段程序从辅存(磁盘等外部存储设备)中复制出来,其余仍然留在辅存。当要运行下一段程序时,就把内存中的上一段程序换回到磁盘中。这也就让内存看起来变大了,这个存储空间也被叫做虚拟内存空间。这个虚拟内存空间是右寻址能力决定的。
这也就是说,一个程序被执行,需要执行两次映射,第一次映射到虚拟内存,第二次映射到物理内存。负责这个任务的硬件部分被称为存储管理单元(MMU),软件部分被称为内存管理模块。
内存管理模块记录着一个虚拟地址/物理地址映射表,作为MMU转换的依据。