导图社区 《计算机操作系统》 第5章 虚拟存储器
计算机操作系统的第5章“虚拟存储器”的思维导图
编辑于2020-09-27 11:18:38第五章 虚拟存储器
引言
第四章所介绍的存储器管理都是属于传统存储器管理方式
特点
要求将一个作业完整的装入到内存中
特点导致的情况
1、有的作业很大,所要求的内存空间超过内存总量,作业无法装入内存
2、有大量作业要求运行,但内存容量不足以一次性装入所有的作业,只能装入少量的作业
第五章提出的虚拟存储器的作用:弥补传统存储器管理方式下的不足,实现对内存扩充
从虚拟上对内存容量进行扩充
让用户感觉容量比实际上的大
因此本章也是属于存储器管理
5.1 虚拟存储器概述
5.1.1 常规存储管理方式的特征和局部性原理
常规式存储器管理方式的特征
1、一次性
概念:作业必须一次性的全部装入到内存后才能运行
缺点:大作业无法再小内存中运行,同时无法支持更高的并法级
2、驻留性
概念:作业在运行期间一直驻留在内存中
缺点:运行中的进程在因IO等原因而停止时,会继续占用宝贵的内存资源
局部性原理:确保能够实施虚拟存器的基本原理
1、时间局限性
概念:程序中的某个指令,在不久的将来再次执行
情况:循环操作
2、空间局限性
概念:程序中的某个指令的周围存储单元,在不久的将来会执行
情况:程序的顺序操作
虚拟存储器的工作情况:请求调页(段)、页(段)置换功能
5.1.2 虚拟存储器的定义和特征
虚拟器的定义:一种具有请求调入功能和置换功能的,在逻辑上扩充内存的一种寄存器系统
虚拟器的特征
1、多次性:作业允许分成多次调入内存中,只需要调入内存的那部分是需要的运行的即可
2、对换性:进程运行期间,允许将那些暂时不使用的代码和数据从内存调至外存的对换区上
3、虚拟性:指能够从逻辑上扩充内存容量,使用户看到的内存容量大于实际内存容量
5.1.3 虚拟存储器的实现方式
虚拟寄存器的实现都是基于离散分配存储管理方式的基础上实现的
实现方式
1、分页请求系统
实现上:在传统的分页系统上增加请求调度和置换功能所实现的页式虚拟存储器
支持
硬件支持
1、请求分页的页表机制:在传统的页表机制上增加若干项而形成
2、缺页中断机制机构:用于产生缺页中断
3、地址变换机构:在纯分页地址变换机构上发展的
软件支持:实现请求调度和置换的软件
2、请求分段系统
实现上:在传统的分段系统上增加请求调度和置换功能所实现的段式虚拟存储器
支持
硬件支持
1、请求分段的段表机制
2、缺段中断机制机构
3、地址变换机构
软件支持:实现请求调度和置换的软件
5.2 请求分页存储管理方式
5.2.1 请求分页中的硬件机制
1、请求分页的页表机制
字段说明
字段内容:页号、物理块号、状态位P、访问字段A、修改位M、外存地址
1、状态位P
作用:指示该页是否已调入内存
使用者:供程序访问时参考
2、访问字段A
作用:记录本页在一段时间内的被访问的次数
使用者:提供给置换算法在选择换出时参考
3、修改位M
作用:标识该页是否被修改
使用者:供置换页面时参考
4、外存地址
作用:指出该页在外存上的地址,通常时物理块号
使用者:供调入该页时参考
2、缺页中断机构
作用:每当访问的页面不在内存中,便产生一缺页中断
与普通中断常有的步骤:保护CPU现场、分析中断原因、转入对应的中断的程序、恢复CPU现场
不同与普通中断的明显区别
1、指令的执行期间可以产生和处理中断信号
2、一条指令可能在执行期间产生多次缺页中断
3、地址变换机构
作用:将逻辑地址映射到物理地址,额外增加了一些其他功能,如产生和处理缺页中断
地址变化的过程
1、检查快表,试图查找该页是否存在快表中,存在,便修改访问位为1
2、不存在,则去内存中的页表查找,结合访问位和状态位查看
5.2.2 请求分页中的内存分配
1、最小物理块数的确定:即进程最少分配多少物理块
过大,浪费内存资源
过小,进程将无法运行,或者造成很高的缺页率
2、内存分配策略
固定分配局部置换
固定分配:每个进程分配的物理块是固定的
局部配置:当需要置换进程时,只能从进程的固定物理块中选出一个换出
可变分配全局置换
可变分配:初始时,每个进程分配一定数目的物理块,随着进程的执行,可根据情况适当的变化
全局置换:当需要置换进程时,从进程的空闲物理块中选出一个换出
3、物理块分配算法
平均分配算法:每个进程分配的物理块数是总的物理块数除以总的进程,但是对于大空间的进程不公平
按比例分配算法:按进程占总进程的空间大小的比例分配物理块数
基于优先权的分配算法:优先权高的,分配更多的物理块数
5.2.3 页面调入策略
1、何时调入页面
1、预调页策略:一种以预测为基础的策略,将那些预计不久之后被会被访问的页面预先调入
2、请求调页策略:当页面不在内存中,发出缺页请求,OS响应并进行请求调页
2、从何处调入页面
1、足够的对换空间时:将处于文件区的有关文件拷贝到对换区
2、缺少足够的对换空间:不会被修改的从文件区调入,会修改的先拷贝到对换区
3、Unix方式:未运行的页面从文件去调入,曾经运行过且换出的页面,放在对换区
原因:磁盘被分为文件区和对换区,文件区离散的,对换区是连续的。从文件区中读取可能需要到各个离散的地址上去读取,而对换区能够找起始地址后直接读取完。所以对换区的数据存取(I/O)比文件区的快,因此尽可能地利用好对换空间
3、页面调入过程(简介):缺页中断、保留CPU环境、分析中断原因、转入缺页中断处理程序、查找该页的物理块、该进程的物理块是否能容纳该页、不能则进行置换
4、缺页率
影响因素
1、页面大小,页面越大,页数越少,缺页率越低
2、分配的物理块数越多,缺页率越低
3、程序的局部性越好,缺页率越低
4、页面置换算法
5.3 页面置换算法
置换算法围绕目标而展开:具有较低的页面更换频率,即换出的页面在很长时间不会被使用,甚至不再需要被使用
5.3.1 最佳置换算法和先进先出置换算法
1、最佳置换算法
置换标准:换出的页面必须在在很长时间不会被使用,甚至不再需要被使用
条件:需要提前知道页面使用的页号顺序,这样才能知道自己换出的页面以后是否会使用
结果:很显然条件是不可能的成立,因此只是一种理论算法),只能作为理想目标来参考
2、先进先出置换算法:即该算法总是淘汰最先进入内存的页面
5.3.2 最近最久未使用和最近最少使用置换算法
最近最久未使用置换算法
置换标准:将选择最近最久的未使用的页面淘汰
硬件支持二选一即可
1、寄存器:各个页面配置一个移位寄存器,初始化为全0 ,每当进程访问某物理块时,对应的寄存器最高位置为1。移位器会根据定时信号每隔一定时间项右移动一位
2、栈:用来保存各个页面的页号,每当经常访问某页面时,就将其压入栈顶,那么栈底就是最近最久未使用的页面的页号
最近最少使用置换算法
使用寄存器即可,需要置换时,查看移位寄存器上是1的位数总和,即代表了最近使用的次数
5.3.3 CLock置换算法
简单型的CLock置换算法
Clock:指的就是锁,当锁位0的时候就可以置换。在这里就是访问位(不同于访问字段)
访问位:只要页面被访问,就将其置为1。
置换标准:按照FIFO寻找第一满足访问位为0的页面,每次访问到访问位为1的页面,就将其访问位置为0,再去访问下一位
改进型的CLock置换算法
改进点:增加了修改位作为锁的一部分
原因:修改后的程序或数据还需要重新拷贝到磁盘上,需要的开销是大于未修改的文件
5.3.4 页面缓冲算法PBA
特点
1、显著降低了页面换出、换入的频率
2、由于换入换出的开销大幅度减小,就能够采用一种简单的置换策略
缓冲算法设置两个链表
1、空闲页面链表
是一个空闲物理块的链表,由系统掌握的空闲物理块
目的:发生缺页后,从空闲页面链表给出一个空闲物理块来调入页面,并将本该被置换的页面放在空闲页面链表的末尾
2、修改页面链表
是一个已修改的页面形成的链表
目的:减少已修改页面换出的次数
5.3.5 访问内存的有效时间
5.4 抖动与工作集
5.4.1 多道程序度与“抖动”
1、多带程序度的大小
恰当的:增大多道程序的数目,能够有效的提高处理机的利用率
过大的:由于抖动的存在,超过一定运行程序的数目,会造成抖动,处理机将大量时间花在置换进程上,处理机利用率反而降低
2、抖动
概念:进程频繁的发生缺页现象
原因:进程数太多,分配的物理块就越少,抖动就越厉害
5.4.2 工作集
工作集:指某段时间间隔A里,进程实际要访问页面的集合
实际上:程序的运行是未知的,无法事先预知工作集,只能依靠程序的过去某段时间的行为作为将来在某段时间内的近似行为
5.4.3 “抖动”的预防方法
1、采取局部置换策略:保证及时进程发生了抖动,也只局限于自己的物理块中,不影响其他进程
2、把工作集算法融入到处理机调度上:处理机调度合理安排作业进入程序
3、利用L=S准则调节缺页率:L代表缺页之间的平均时间,S代表平均缺页服务的时间
4、选择暂停的进程:只发生严重的抖动时,将部分优先级低的进程暂停,将他们调出到磁盘上,以便腾出内存空间
5.5 请求分段存储管理方式
比请求分页存储管理方式复杂,但是在一些基本原理上是差不多的
5.5.2 分段的共享与保护
1、共享段表
2、共享段的分配与回收
3、分段的保护
1、越界检查:段号大于等于段表长度,发出地址越界中断信号
2、存取控制检查:根据存取字段的访问方式进行访问才是合法的
3、换保护机构
0环(最高层次):操作系统的内核
中间环:重要的驱动程序、实用程序
外环:用户程序
1、程序可以访问同层次、低层次环的数据 2、程序可以访问同层次、高层次环的服务