WINDOWS XP, ReactOS系统对内存管理的实现原理
WINDOWS XP, ReactOS系统对内存管理的实现原理
内存管理
前面讲过,一个操作系统要称为现代意义上的操作系统,就必须提供对内核的保护、对不同用户程序之间的隔离,并允许软件的装入位置浮动。一个计算机系统,如果在硬件上不能支持这些基本要求,就不配称为现代意义上的操作系统。而满足这些基本要求的手段,就是采用基于页面映射的“虚拟内存”机制,或者说提供“页式内存管理”。在硬件上,这是由CPU芯片内部(或外部)的“存储管理单元”MMU 支持的。现代的微处理器芯片一般都带MMU。而在软件上,则由操作系统内核中的内存管理模块实现。“内存管理”这个词也有广义和狭义之分,广义的“内存管理”指一切与内存有关的管理,包括缓冲区的分配与释放等,而狭义的“内存管理”实际上就是指页面映射以及与此有关的操作。
采用页式内存管理时,程序中所使用的内存地址,即CPU中的运算单元 ALU 所发出的都是“虚拟地址”,虚拟地址是不能直接用来访问物理内存的,需要由MMU 将其“映射”到某个物理页面上转换成“物理地址”才能访问。如果某个虚拟地址区间没有这样的映射,或者虽有映射而不允许某些模式的访问,CPU就不能访问物理内存。下面是个示意图:
图中的 CPU 由“运算单元”ALU 和“存储管理单元”MMU 两大部分组成。ALU 所使用的地址即机器指令中所使用的地址是虚拟地址。而实际用来访问物理内存的地址,则为物理地址。如果MMU不存在,或者没有