跳转至

虚拟存储管理方式

虚拟存储器是一种技术,允许计算机系统提供一个比物理内存(主存)更大的存储空间。它通过将一部分数据存储在较慢的辅助存储(如硬盘)中,并在需要时将这些数据调入主存来模拟一个大型的存储空间。虚拟存储器的出现使得程序员不再需要关心内存的实际大小,因为它创造了一个看似几乎无限的存储空间。

虚拟存储器的定义

  • 虚拟存储器实际上并不存在,它是一个抽象的概念,目的是为了扩展主存的容量,允许程序可以访问超出实际物理内存的存储空间。
  • 它是通过离散分配的存储管理方式(如分页、分段等)来实现的,允许作业在不同时间调入主存,即使整个作业不完全加载到主存中。
  • 虚拟存储器的容量取决于计算机的地址结构和辅助存储器(如磁盘)的容量,而与实际的主存储器容量无关。系统通过硬件和操作系统的协同工作,使得虚拟存储器看起来像是主存一样快速,但其成本更低,接近辅助存储器的成本。

虚拟存储器的主要特征

虚拟存储器有四大特征,分别是:

  • 离散性:虚拟存储器打破了传统的连续存放的限制。内存中的数据并不是连续存放的,而是分散的。这意味着系统不再要求程序的所有数据必须连续存放在物理内存中。

  • 多次性:虚拟存储器支持部分装载,即作业可以只加载一部分页面或段到主存中。作业可以在执行时多次调入主存。这样,可以在主存空间有限的情况下,依然能够运行大规模程序。

  • 对换性:虚拟存储器允许在主存和辅助存储(如硬盘)之间对换数据。当某个数据页不再使用时,它可以被换出主存,空出来的空间可以用来加载其他数据页。对换机制确保了程序可以运行,尽管它的数据存储并不完全在主存中。

  • 虚拟性:通过虚拟存储器,程序认为自己拥有一个巨大的地址空间,而实际上它的物理存储空间要小得多。这使得程序员可以在不考虑物理内存限制的情况下编写程序。

请求分页式存储管理

请求分页式存储管理是虚拟存储器的一种实现方式,结合了分页存储管理页面置换技术,它通过以下方式来管理虚拟存储:

基本工作原理

在请求分页式存储管理中,作业的页面并不会一次性加载到主存中,而是根据需要动态加载:

  • 部分装载:作业启动时,只装入它的一部分页面到主存中。其他页面可以延迟加载。
  • 缺页中断:当程序执行过程中,如果访问的页面尚未加载到主存,就会触发一个缺页中断。系统将检测到缺页,并启动磁盘I/O操作,将缺失的页面从辅助存储(如磁盘)调入主存。
  • 页面置换:如果主存空间已满,系统需要选择某个当前不活跃的页面将其置换出去,为新加载的页面腾出空间。这一过程涉及到页面置换算法(如LRU(最近最少使用)算法)。

工作流程

  • 启动作业:在作业启动时,只会加载必要的部分页面到主存。这些页面可能是程序的初始代码或者程序执行时必须立即访问的部分。

  • 缺页中断:当程序执行时,如果遇到一个页面不在主存中,操作系统就会产生一个缺页中断。缺页中断触发后,操作系统会查找该页面所在的辅助存储。

  • 页面置换:如果主存空间已满,操作系统会通过页面置换算法(如FIFO、LRU等)决定将哪个页面调出,并把所需页面调入主存。被置换出去的页面可能会被写回磁盘,以便将来再次需要时重新加载。

  • 地址转换:通过地址转换机制,程序访问的逻辑地址(虚拟地址)会被映射到物理地址。操作系统通过查找页表,找到页面对应的物理位置。