内存管理——虚拟内存

来源:互联网 发布:淘宝首页自定义优惠券 编辑:程序博客网 时间:2024/05/16 13:59

    虚拟内存提供了一种假象,使进程认为它们可以使用比计算机固有的内存更多的内存。因此虚拟内存系统中有2种地址:被进程引用的地址、在主存中的地址。被进程引用的地址成为虚拟地址,在主存中的地址叫做物理地址


    当进程访问一个虚拟地址时,系统必须把它转换为真实地址。这种转换工作非常频繁,若用通用处理器来执行这样的转换,将会严重降低系统性能。因此,虚拟内存系统含有专用硬件,即内存管理单元(memory management unit,MMU),它可以将虚拟地址快速映射为真实地址。


    动态地址转换(dynamic address translation,DAT)机制在运行期间把虚拟地址转换为物理地址。使用动态地址转换的系统具有以下特性:进程的虚拟地址空间中的连续地址在物理内存空间中不一定是连续的,即所谓的假临近(artificial contiguity)。


    动态地址转换必须维护地址转换表,指明处理器虚拟地址空间(V)的哪些区域当前在主存中,以及位于哪里。这种映射必须包含V中每个地址的记录,那么映射信息将需要比主存更多的空间,因此这是不可行的。实际上,映射信息量只能占主存的很小一部分,否则它会占用操作系统和用户进程所需的太多内存。

    最广泛采用的方案是对信息按块进行分组,然后系统跟踪每个虚拟内存放在主存的什么地方。块的平均大小越大,映射信息量越小。然而,更大的块可能导致内部分段,使辅助存储器和主存直接需要更长的传输时间。

    至于信息块的大小,应该全部相同,或者可以有不同大小,也有一些讲究。如果块有一个固定的大小(或几个固定大小),则把它们成为页(page),相关的虚拟内存组织叫做分页(paging)。如果块可以有不同的大小,则把它们叫做段(segment),相关的虚拟内存组织叫做分段(segmentation)。