第5章 虚拟存储器
一 、虚拟存储器概述
1. 常规存储管理方式的特征和局部性原理
(1)特征
①一次性。
②驻留性。
(2)局部性原理
局部性原理表现在时间局部性和空间局部性两方面。
2.虚拟存储器的定义和特征
(1)虚拟存储器的定义
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
(2)虚拟存储器的特征
①多次性。
②对换性。
③虚拟性。
3. 虚拟存储器的实现方法
(1)请求分页系统
分页请求系统是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它通 过调页功能及页面置换功能陆续地把即将运行的页面调入内存,同时把暂不运行的页面换出到外存上,为了能实 现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。
①硬件支持
a. 请求分页的页表机制
它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构。
b. 缺页中断机构
每当用户程序要访问的页面尚未调入内存时,便产生一缺页中断,以请求 OS 将所缺的页调入内存。
c. 地址变换机构
它同样是在纯分页地址变换机构的基础上发展形成的。
②实现请求分页的软件
包括有用于实现请求调页的软件和实现页面置换的软件。它们在硬件的支持下,将程序正在运行时所需的页 面(尚未在内存中的)调入内存,再将内存中暂时不用的页面从内存置换到磁盘上。
(2)请求分段系统。
(3)请求段页式系统。
二、请求分页存储管理方式
1. 请求分页中的硬件支持
(1)请求页表机制
在请求分页系统中的每个页表应含以下诸项:
缺页中断与一般中断的区别:
①在指令执行期间而不是一条指令执行完后产生和处理中断信号,属于内部中断。
②一条指令在执行期间可能产生多次缺页中断。
(3)地址变换机构
图5-1示出了请求分页系统中的地址变换过程。
图5-1 请求分页中的地址变换过程
2. 请求分页中的内存分配
(1)内存分配策略
①固定分配局部置换。
②可变分配全局置换。
③可变分配局部置换。
(2)物理块分配算法
采用固定分配策略时,可以采用以下几种算法将系统中可供分配的所有物理块分配给各个进程:
①平均分配算法。
②按比例分配算法。
如果系统中共有n 个进程,每个进程的页面数为S, 则系统中各进程页面数的总和为:
又假定系统中可用的物理块总数为m, 则每个进程所能分到的物理块数为 b;可由下式计算:
这里 ,bi 应该取整,它必须大于最小物理块数。
③考虑优先权的分配算法。
3.页面调入策略
(1)何时调入页面
①预调页策略。
②请求调页策略。
(2)页面调入过程
①发出缺页中断。
②将所缺页调入内存。
③修改页表。
(3)缺页率 ①定义
如果在进程的运行过程中,访问页面成功的次数为S, 访问页面失败的次数为F, 则 缺 页 率f 即 为
②影响因素
a. 页面大小。
b. 进程所分配物理块的数目。
c. 页面置换算法。
d. 程序固有特性。
③计算公式
假设被置换的页面被修改的概率是β,其缺页中断处理时间为ta,被置换页面没有被修改的缺页中断时间为 t₆, 那么,缺页中断处理时间的计算公式为
三、页面置换算法
1. 最佳置换算法和先进先出置换算法
(1)最佳置换算法
①最佳置换算法所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。
②该算法是无法实现的,但可以利用该算法去评价其他算法。
(2)先进先出(FIFO)页面置换算法
①FIFO 算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
②FIFO 算法可能出现 Belady 异常。
③FIFO 算法没有基于局部性原理。
2. 最近最久未使用和最少使用置换算法
(1)最近最久未使用 (LRU) 置换算法
①LRU 页面置换算法选择最近最长时间未使用的页面予以淘汰。
②最佳置换算法是从“向后看”的观点出发的;而LRU 算法则是“向前看”的。
③LRU 算法基于局部性原理。
④LRU 算法是堆栈类算法。
(2)最少使用 (LFU) 置换算法
LFU 算法选择在最近时期使用最少的页面作为淘汰页。
3.Clock 置换算法
(1)简单的Clock 置换算法(最近未用算法或NRU 算 法 ) 图5-2显示出了该算法的流程和示例。
图5-2 简单Clock 置换算法的流程和示例
(2)改进型Clock 置换算法
在改进型Clock 算法中,又增加了修改位M。
①四种页面类型
a.1 类 (A=0,M=0): 表示该页最近既未被访问,又未被修改,是最佳淘汰页。
b.2 类 (A=0,M=1): 表示该页最近未被访问,但己被修改,并不是很好的淘汰页。
c.3 类 (A=1,M=0): 表示最近已被访问,但未被修改,该页有可能再被访问。
d.4 类 (A=1,M=1): 表示最近已被访问且被修改,该页可能再被访问。
②执行过程
a. 从指针的当前位置开始,扫描循环队列,在这次扫描期间不改变访问位A, 选择第一个A=0 且 M=0 的 页面用于置换。
b. 如果第一步失败,则重新扫描,选择第一个A=0 且 M=1 的页面用于置换。在第二轮扫描期间,将所有 扫描过的页面的访问位都置0。
c. 如果第二步也失败,则将指针返回到开始的位置,且所有的访问位均为0。然后重复第一步,如果仍失败,必要时再重复第二步。
4. 访问内存的有效时间
在具有快表机制的请求分页管理方式中,存在下面三种方式的内存访问操作,以及是否考虑命中率和缺页率, 其内存有效访问时间分别为:
(1)被访问页在内存中,且其对应的页表项在快表中时:EAT=λ+t。
(2)被访问页在内存中,且其对应的页表项不在快表中时:EAT=λ+t+λ+t=2×(λ+t)。
(3)被访问页不在内存中,假设缺页中断处理时间为ε,则EAT=λ+t+ε+λ+t=ε+2(λ+t)。
(4)考虑快表的命中率a 和缺页率f 等因素时:EAT=λ+a×t+(1-a)×[t+fx(ε+λ+t)+(1-f)×(λ+t)]。
(5)如果不考虑命中率,仅考虑缺页率,设缺页中断处理时间为φ,得EAT=t +f×(φ+t)4-(1-f)xt。 其 中 ,EAT 为内存的有效访问时间,λ为查找快表的时间,t 为访问实际物理地址所需的时间。
四、“抖动”与工作集
1. 抖动
(1)定义
页面置换中,频繁的页面调度行为称为抖动或颠簸。
(2)产生“抖动”的原因
某个进程频繁访问的页面数目高于可用的物理页帧数目。
2.工作集
工作集是指在某段时间间隔里,进程实际所要访问页面的集合。
3. “抖动”的预防方法
(1)采取局部置换策略。
(2)把工作集算法融入到处理机调度中。
(3)利用 “L=S” 准则调节缺页率。
(4)选择暂停的进程。
五 、请求分段存储管理方式
1. 请求分段中的硬件支持
(1)请求段表机制
请求段表的段表项中包括以下字段:段名(号)、段长、段基址、存取方式、访问字段A、修改位M、 存 在
位 P、增补位、外存始址。
(2)地址变换机构
图5-3示出了请求分段系统的地址变换过程。
图5-3 请求分段系统的地址变换过程
2 . 分段保护
(1)越界检查。
(2)存取控制检查。
(3)环保护机构。