1、第6章 虚拟存储管理,虚拟存储器的引入,请求页式存储管理,请求段式存储管理,6.1虚拟存储器的引入,前面介绍的存储管理方案要求进程全部装入内存才可运行。但这会出现两种情况: 有的进程因太大,内存装不下而无法运行。 系统中进程数太多,因系统容量有限只能让少数进程先运行。,1968年P.Denning 提出局部性原理(理论基础):程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分;相应的,它所访问的存储空间也局限于某个区域。程序执行时,大多数情况下是顺序执行的。 过程调用会使程序的执行轨迹从一部分内存区域转至另一部分区域, 但过程调用的深度不会超过5。 程序中有许多循环
2、语句,这些语句会重复多次执行。 程序中对数据结构的操作,往往局限在很小的范围内。,局部性原理,局部性的表现,空间局部性 程序一旦访问某存储单元,不久后会访问其附近的存储单元。 时间局部性 程序中的某条指令一旦执行,不久后会再次执行。 程序中的某个数据结构一旦被访问,不久后会再次被访问。,虚拟存储器,进程运行时,不全部装入内存,仅将当前要运行的那部分装入内存。 当进程访问不在内存的那部分程序和数据时,再将其装入内存。 若此时内存已满,将暂时不用的部分程序和数据换出,腾出空间。,从用户的角度看,系统具有的内存容量比实际大得多, 所以称为 虚拟存储器。,虚拟存储器的定义,虚拟存储器是指具有请求调入功
3、能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。,离散性 (实现虚拟存储器的基础) 进程不装入连续的存储空间,内存分配采用离散分配方式。 多次性 一个进程被分割,多次调入内存。 对换性 进程在运行过程中允许将部分程序和数据换进、换出内存。 虚拟性 (实现虚拟存储器的重要目标) 从逻辑上扩充了内存的容量。,虚拟存储器的特征,状态位P:记录该页是否在内存。P=1该页在内存;P=0该页不在内存。 访问字段A:记录该页多长时间没有被访问。 修改位M:记录该页在内存期间是否被修改过。M=1该页调入内存后被修改过;M=0该页调入内存后未被修改过。 外存地址: 该页在外存的地址。,页表的扩充,6
4、.2请求页式存储管理, 在页式存储管理的基础上,进程的页根据需要请求调入内存,称为请求页式存储管理。,缺页中断机构,缺页中断是一种特殊的中断。主要表现在: 在指令执行期间产生和处理中断信号。 一条指令执行期间,可能产生多次缺页中断。,缺页中断: 当要访问的页不在内存,产生一个缺页中断,请求操作系统将所缺的页调入内存。,地址变换机构,在页式存储管理基础上增加的功能: 产生和处理缺页中断 从内存换出一页从外存调入一页,请求页式存储管理驻留集管理,驻留集管理包括以下内容: 分配给进程的物理块数 分配策略固定的?还是可变的? 置换策略局部置换?还是全局置换?,驻留集:在某段时间间隔内,进程要访问的页面
5、集合。,每个进程分配的物理块越少,则内存中进程数越多。 为每个进程分配的物理块数目的减少,则缺页率提高,降低进程的执行速度。每个进程分配的物理块达一定数量后,再增加分配,缺页率不会有明显改善。,分配给进程的物理块数,为每个进程分配多少物理块?,驻留集管理 (分配策略和换出策略),固定分配、局部置换为每个进程分配固定页数的内存空间、且运行过程中不变。当进程缺页时,只能从该进程在内存的几个页面中选出一页换出,然后再调入一页,保证进程的页数不变。 可变分配、全局置换系统开始先为每个进程分配一定数目的物理块。整个系统有一空闲块队列,当某进程缺页时,系统从空闲块队列中选出一块分配给进程。空闲块队列空时,
6、从所有进程的页面中权衡选择一页换出。 可变分配、局部置换进程缺页时,只能从该进程在内存的页面中选出一页换出。若某进程频繁缺页,则再为其分配一些物理块。反之,若某进程缺页率特别低,则减少分配给它的物理块数,请求页式存储管理的调入策略,何时调入页面 请调:发生缺页时,调入内存。 预调:预计要访问的页,提前调入内存。 从何处调入把外存分成两部分:文件区和对换区 进程的所有页面都放在对换区。 只将修改过的页面放在对换区,未改的放在文件区。 首次从文件区调入,换出时放在对换区,以后从对换区调入。,请求页式存储管理的页面置换算法,最佳置换算法OPT 先进先出置换算法FIFO 最近最久未使用置换算法LRU
7、时钟置换算法,目标:把未来不再使用的或短时间内不再使用的页调出。,最佳置换算法OPT,进程访问总页面数为20 结果:缺页9次,页面换出6次。缺页率45。,页面走向,思想置换那些不再使用,或最长时间不使用的页。,先进先出页面置换算法FIFO,进程访问总页面数为20 OPT与FIFO的比较结果: OPT:缺页9次, 页面换出6次。缺页率45 FIFO:缺页15次,页面换出12次。缺页率75,OPT页面走向,FIFO页面走向,思想新进入内存的页被先置换出去。,最近最久未使用LRU页面置换算法,OPT页面走向,LRU页面走向,思想用“过去”的行为预测将来,置换“最近最久未使用”的页。,进程访问总页面数
8、为20 OPT与LRU的比较结果: OPT:缺页9次, 页面换出6次。缺页率45 LRU:缺页12次,页面换出9次。缺页率60,时钟页面置换算法CLOCK, LRU性能较好,但实现困难!因此可用时钟(CLOCK)置换算法。 为每页设一访问位,再将内存中的所有页面链接成一个循环队列。当某页被访问时,其访问位置1。置换算法在选择一页淘汰时,只需检查其访问位。如果是0,就选择该页换出;如果是1,则重新将其置为0,暂不换出。,CLOCK页面置换算法,除了考虑页面的使用情况外,还要考虑该页是否被修改过。 由访问位A和修改位M组合成下面四种情况的组合: A=0,M=0该页既未被访问过、又未被修改过,是最佳
9、淘汰页。 A=0,M=1该页最近未被访问、但已被修改,可以被淘汰。 A=1,M=0最近已被访问,但未被修改,该页有可能再被访问。 A=1,M=1最近已被访问且被修改,该页可能再被访问。,CLOCK算法执行过程 从当前位置扫描循环队列,寻找类页面。 若步骤失败,开始第二轮扫描,寻找类页面淘汰。并将所经过的页面的访问位置0。 若步骤也失败,重复步骤1,若仍失败,再重复步骤2。,请求页式存储管理系统的性能,正确选择驻留集窗口大小:窗口大小选择得过小,频繁产生缺页中断。窗口大小选择得很大,失去了虚拟存储器的意义。,驻留集: 即在某段时间间隔内,进程实际要访问的页面的集合。,缺页率与物理块数的关系,为进程分配的物理块数应该取该曲线的拐点附近或稍大些。,CPU的利用率与多道程序数的关系,抖动的产生并不是“多道程序的度越高,系统吞吐量越大。”当CPU的利用率达到某一峰值后,若继续增加多道程度,将产生抖动。抖动预防方法加载控制 L=S准则 (产生缺页的平均时间L等于系统处理缺页的平均时间 S)采用局部置换挂起若干进程,抖动:进程的大部分时间都用于页面的换进/换出,而几乎不能完成任何有效工作,P148/ 4 6 7 8,作业,