计算机操作系统-第五章 虚拟存储器

158 阅读6分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第五章 虚拟存储器

引入

常规存储管理的问题

常规存储管理方式的共同点:要求一个作业全部装入内存后方能运行。可能出现的问题

  1. 有的作业很大,所需内存空间大于内存总容量,使作业无法运行
  2. 有大量作业要求运行,但内存容量不足以容纳下所有作业,只能让一部分先运行,其它在外存等待。

解决方案:

  1. 增加内存容量
  2. 从逻辑上扩充内存容量:覆盖、对换、虚拟存储技术

局部性原理

  1. 时间局部性 如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作。
  2. 空间局部性 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。

虚拟存储器的定义和特征

虚拟存储器的基本原理

在这里插入图片描述

虚拟存储器的定义

虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

逻辑容量由内存容量和外存容量之和所决定。 运行速度接近于内存速度,成本接近于外存。 在这里插入图片描述 速度和容量:虚拟存储量的扩大是以牺牲 CPU 工作时间以及内外存交换时间为代价。 虚拟存储器的容量取决于主存与辅存的容量,最大容量是由计算机的地址结构决定。 虚拟存储器的逻辑地址空间理论上不受物理存储器的限制。如 32 位机器,虚拟存储器的最大容量就是 4G,再大 CPU 无法直接访问。

虚拟存储器的特征

  1. 多次性(最重要的特征)
  2. 对换性
  3. 虚拟性

虚拟性以多次性和对换性为基础,而多次性和对换性必须以离散分配为基础。

虚拟存储器的实现方法

  1. 请求分页(虚拟分页)
  2. 请求分段(虚拟分段)
  3. 请求段页式(虚拟段页式)

请求分页

  1. 定义 在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储器系统。

它允许只装入若干页的用户程序和数据,便可启动运行,以后在硬件支持下通过调页功能和置换页功能,陆续将要运行的页面调入内存,同时把暂不运行的页面换到外存上,置换时以页面为单位。

  1. 条件 硬件支持:请求分页的页表机制、缺页中断1机构和地址变换机构。
  1. 流程 在这里插入图片描述

请求分段

  1. 定义 在分段系统的基础上,增加了请求调段功能及分段置换功能,所形成的段式虚拟存储器系统。

它允许只装入若干段的用户程序和数据,便可启动运行,以后再硬件支持下通过请求调段功能和分段置换功能,陆续将要运行的段调入内存,同时把暂不运行的段换到外存上,置换时以段为单位

  1. 条件 硬件支持:请求分段的段表机制、缺段中断机构和地址变换机构。 软件:请求调段功能和段置换功能的软件。

缺页率

在这里插入图片描述

抖动

  1. 定义(详细的请看书) 刚被淘汰出内存的页面,过后不久又要访问它,需要再次将其调入,而该页调入内存后不久又再次被淘汰出内存,然后又要访问它,如此反复,使得系统把大部分时间用在了页面的调进换出上,这种现象称为抖动。
  2. 预防方法 a. 采取局部置换策略 b. 在处理机调度中引入工作集策略(工作集不再解释) c. 用L=S准则调节缺页率 d. 挂起若干进程

页面置换算法

  1. 最佳置换算法(OPT) 思路:选择永远不再需要的页面或最长时间以后才需要访问的页面予以淘汰。

最佳置换算法是一种理想化的算法,性能最好,实际上这种算法无法实现,因为页面访问的未来顺序很难精确预测,但可用该算法评价其它算法的优劣。

  1. 先进先出置换算法(FIFO) 思路:选择先进入内存的页面予以淘汰。

Belady奇异现象,是指采用页面置换FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多,但缺页率反而提高的异常现象,这是一个违反直觉的现象。 在这里插入图片描述

  1. 最近最久未使用算法(LRU) 思路:选择最近一段时间最长时间没有被访问过的页面予以淘汰。

:如果某个页面被访问了,则它可能马上还要访问。如果很长时间未被访问,则它在最近一段时间也不会被访问。该算法的性能接近于最佳算法,但实现起来较困难。因为要找出最近最久未使用的页面,必须为每一页设置相关记录项,用于记录页面的访问情况,并且每访问一次页面都须更新该信息。这将使系统的开销加大,所以在实际系统中往往使用该算法的近似算法。 在这里插入图片描述 条件:实现开销很大,必须有硬件支持。(寄存器、栈、)

  1. 最近最少使用置换算法(LFU) 思路:选择在最近时期使用最少的页面为淘汰页。

每当进程访问某页面时,将该页面对应寄存器的最高位 (Rn−1) 置 1,系统定期 (如 100ms) 将寄存器右移一位并将最高位补 0。在一段时间内,ΣRi 最小的页面就是最近最少使用的页面。

  1. 最近未使用算法 (Not Recently Used,NRU,又称Clock置换算法) 思路: 在这里插入图片描述 流程: 在这里插入图片描述
  2. 比较 在这里插入图片描述

访问内存的有效时间EAT(了解)

在这里插入图片描述 在这里插入图片描述

Footnotes

  1. 在请求分页系统中,当访问的页不在内存,便产生一个缺页中断。缺页中断是在指令执行期间产生和处理中断信号(要访问的指令或数据不在内存)。一条指令在执行期间,可能产生多次缺页中断。 软件:请求调页功能和页置换功能的软件。