操作系统原理 第4章 存储管理-请求分页系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2) 按比例分配算法 这是根据进程的大小按比例分配物理块的算法。如果系
统中共有n个进程,每个进程的页面数为 Si,则系统中各进程
页面数的总和为:
S Si
i 1
又假定系统中可用的物理块总数为m,则每个进程所能分 到的物理块数为bi,将有:
Si bi m S
b应该取整,它必须大于最小物理块数。
2. LRU置换算法的硬件支持
LRU算法实现时需要为每个页面设置一个时 间项,用来记录该页面上次被访问的时间, 每次将时间数值最小的页面淘汰掉。
1) 寄存器 为了记录某进程在内存中各页的使用情况,须为每个 在内存中的页面配置一个移位寄存器,可表示为 R=Rn-1Rn-2Rn-3 … R2R1R0
2、从何处调入 请求分页系统中把外存分成两部分:一是文件 区,用于存放文件;二是对换区(swap),用 于存放对换页面。当发生换页时,从缺的页从 何处调入通常有3种实现: (1)全部从对换区调入。这要求系统有足够 的对换区空间,进程装入时全部复制到对换区 (2)只将修改过的页放在对换区。适合对换 区空间小的情形 (3)首次从文件区调入,运行后所有换出的 页面都放在对换区,以后再次调入是从对换区 调入。Unix系统采用此方式。
最先进入内存的页面,即选择在内存中停留时间最长(年
龄最老)的一页予以淘汰 。实现时可以引入一个替换指
针指向最老的页面置换次数?缺页中断次数?
为了说明FIFO页面置换算法相关的可能问题,考虑一下
引用串:1,2,3,4,1,2,5,1,2,3,4,5。
注意到对4个可用内存块的缺页次数(10)比3个内存块的缺
4.7.1 请求分页的硬件支持
1、页表机制
页号 状态位 物理块号 外存地址 访问位 修改位
状态位(中断位):标识该页是否在内存(0或1);
访问位:标识该页面的近来的访问次数或时间(换出);
修改位:标识此页是否在内存中被修改过; 外存地址:记录该页面在外存上的地址,即(外存而非内
存的)物理块号。
运行;在执行过程中,可使用请求调入中断动态装入要访问但又不在
内存的页面;当内存空间已满,而又需要装入新的页面时,者根据置
换功能适当调出某个页面,以便腾出空间而装入新的页面。
为了实现页式虚存,系统需要解决下面三个问题:
1)系统如何感知进程当前所需页面不在主存(页表机制); 2)当发现缺页时,如何把所缺页面调入主存(缺页中断机构); 3)在置换页面时,根据什么策略选择欲淘汰的页面(置换算法)。
NRU算法——Clock置换算法
NRU(Not Recently Used):最近未使用页面淘 汰算法 该算法在需要淘汰某一页时,从那些最近一个时 期内未被访问的页中任选一页淘汰。只要在页表 中增设一个访问位即可实现。当某页被访问时, 访问位置1。否则,访问位置O。系统周期性地对 所有引用位清零。当需淘汰一页时,从那些访问 位为零的页中选一页进行淘汰。
4.8.3 Clock置换算法 又称为二次机会算法、NRU最近未使用算法
1. 简单的Clock置换算法 实现:需要构建循环队列,引入 一个查找指针 入口
块号 查寻指针前进一步,指向 下一个表目 否 置页面访 问位=“0” 0 1 2 页面访问位= 0? 是 选择该页面淘汰 返回 3 4 5 6 7 5 1 0 1 2 1 4 0 替换 指针 页号 访问位 指针
4
7 4
0 7 4
7 0 4
图 4-29 用栈保存当前使用页面时栈的变化情况
LRU近似算法
要完全实现LRU算法是一件十分困难的事 情。因为要找出最近最久未被使用的页面 的话,就必须对每一个页面都设置有关的 访问记录项,而且每一次访问都必须更新 这些记录。这显然要花费巨大的系统开销 (包括硬件开销和时间开销)。因此,在 实际系统中往往使用LRU的近似算法,包 括NRU(最近未使用)算法和LFU(最少使 用)算法。
页次数(9)还要大。这种令人难以相信的结果称为Belady 异常现象,即缺页次数随内存块增加而增加。
3.最近最久未使用(LRU)置换算法
最近最久未使用置换算是用过去的引用串的情况来预测将
要到来的引用串的情况(以“最近的过去”作为“不久将 来”的近似),选择过去的最近一段时间内最久没有使用 的页面淘汰掉。它的实质是:当需要置换一页时,选择在 最近一段时间里最久没有使用过的页面予以淘汰 。
缺页中断引发的连续中断
4.7.2
内存分配策略和分配算法
1.最小物理块数的确定 这里所说的最小物理块数,是指能保证进程正常运行所 需的最小物理块数。当系统为进程分配的物理块数少于此值
时,进程将无法运行。进程应获得的最少物理块数与计算机
的硬件结构有关,取决于指令的格式、功能和寻址方式。
2.物理块的分配策略 1) 固 定 分 配 局 部 置 换 (Fixed Allocation , Local Replacement) 为每个进程分配一定数目的物理块,在整个运行期间都 不再改变。采用该策略时,如果进程在运行中发现缺页,则 只能从该进程在内存的n个页面中选出一个页换出,然后再调 入一页,以保证分配给该进程的内存空间不变。实现这种策 略的困难在于:应为每个进程分配多少个物理块难以确定。 若太少,会频繁地出现缺页中断,降低了系统的吞吐量;若 太多,又必然使内存中驻留的进程数目减少,进而可能造成 CPU空闲或其它资源空闲的情况,而且在实现进程对换时, 会花费更多的时间。
3) 考虑优先权的分配算法 在实际应用中,为了照顾到重要的、紧迫的作业能尽快 地完成,应为它分配较多的内存空间。通常采取的方法是把 内存中可供分配的所有物理块分成两部分:一部分按比例地
分配给各进程;另一部分则根据各进程的优先权,适当地增
加其相应份额后,分配给各进程。在有的系统中,如重要的 实时控制系统,则可能是完全按优先权来为各进程分配其物
2) 可变分配全局置换 (Variable Allocation , Global Replacement)
这可能是最易于实现的一种物理块分配和置换策略,已 用于若干个OS中。在采用这种策略时,先为系统中的每个进 程分配一定数目的物理块,而OS自身也保持一个空闲物理块 队列。当某进程发现缺页时,由系统从空闲物理块队列中取 出一个物理块分配给该进程,并将欲调入的(缺)页装入其中。 这样,凡产生缺页(中断)的进程,都将获得新的物理块。仅 当空闲物理块队列中的物理块用完时,OS才能从内存中选择 一页调出,该页可能是系统中任一进程的页,这样,自然又 会使那个进程的物理块减少,进而使其缺页率增加。
§4.8 页面置换算法
4.8.1 最佳置换算法
最佳置换算法是由Belady于1966年提出的一种理论上的算
法。 其所选择的被淘汰页面,将是以后永不使用的,或
许是在最长(未来)时间内不再被访问的页面。采用最佳置
换算法,通常可保证获得最低的缺页率。
实现:无法实现,对衡量其他算法有理论上的指导意义,
2.缺页中断机构
程序在执行时,首先检查页表,当状态位指示该页不在主存 时,则引起一个缺页中断发生,其中断执行过程与一般中 断相同:
保护现场(CPU环境); 中断处理(中断处理程序装入页面);
恢复现场,返回断点继续执行。
缺页中断与一般中断的不同点:
一般中断是一条指令完成后检查是否有中断 缺页中断是在指令执行期间产生和处理中断, 一条指令执行时可能产生多个缺页中断(如指令可能访问多
图 4-28 某进程具有8个页面时的LRU访问情况
2) 栈: 栈顶始终存放最新被访问的页面,而栈底则存放最近最 久 未访问的页面
4 7 0 7 1 1 7 0 4 0 0 1 7 4 1 1 0 7 4 2 2 1 0 7 4 1 1 2 0 7 4 2 2 1 0 7 4 6 6 2 1 0 7
实际上无法实现(需要能看见未来!)。
假定系统为某进程分配了三个物理块,并考虑有以下的页
面号引用串: 7,0,1,2,0,3,0,4,2,3,0,
3,2,1,2,0,1,7,0,1
算法名称、思想及实现是关键!
2.先进先出(FIFO)页面置换算法
FIFO算法是最早出现的页面置换算法。该算法总是淘汰
3.物理块分配算法 1) 平均分配算法 这是将系统中所有可供分配的物理块平均分配给各个进 程。例如,当系统中有100个物理块,有5个进程在运行时, 每个进程可分得20个物理块。这种方式貌似公平,但实际上 是不公平的,因为它未考虑到各进程本身的大小。如有一个 进程其大小为200页,只分配给它20个块,这样,它必然会 有很高的缺页率;而另一个进程只有10页,却有10个物理块 闲置未用。
3) 可 变 分 配 局部置换 (Variable Allocation , Local Replacement)
为每个进程分配一定数目的物理块,但当某进程发现缺 页时,只允许从该进程在内存的页面中选出一页换出,这样 就不会影响其它进程的运行。如果进程在运行中频繁地发生 缺页中断,则系统须再为该进程分配若干附加的物理块,直 至该进程的缺页率减少到适当程度为止;反之,若一个进程 在运行过程中的缺页率特别低,则此时可适当减少分配给该 进程的物理块数,但不应引起其缺页率的明显增加。
理块的。
4.7.3 调页策略 1.调入页面的时机
1) 预调页策略
如果进程的许多页是存放在外存的一个连续区域中, 则一次调入若干个相邻的页,会比一次调入一页更高效些。 但如果调入的一批页面中的大多数都未被访问,则又是低 效的。可采用一种以预测为基础的预调页策略,将那些预 计在不久之后便会被访问的页面预先调入内存。如果预测 较准确,那么,这种策略显然是很有吸引力的。但遗憾的 是,目前预调页的成功率仅约50%。故这种策略主要用于进 程的首次调入时,由程序员指出应该先调入哪些页。
2) 请求调页策略 当进程在运行中需要访问某部分程序和数据时,若发现 其所在的页面不在内存,便立即提出请求,由OS将其所需页 面调入内存。由请求调页策略所确定调入的页,是一定会被 访问的,再加之请求调页策略比较易于实现,故在目前的虚 拟存储器中大多采用此策略。但这种策略每次仅调入一页, 故须花费较大的系统开销,增加了磁盘I/O的启动频率。
其执行过程可分成以下三步:
(1) 从指针所指示的当前位置开始, 扫描循环队列, 寻 找A=0且M=0的第一类页面, 将所遇到的第一个页面作为所 选中的淘汰页。 在第一次扫描期间不改变访问位A。 (2) 如果第一步失败,即查找一周后未遇到第一类页面, 则开始第二轮扫描,寻找A=0且 M=1 的第二类页面,将所遇 到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所 有扫描过的页面的访问位都置0。 (3) 如果第二步也失败,亦即未找到第二类页面,则将指 针返回到开始的位置,并将所有的访问位复0。 然后重复第
学习目标
理解并掌握请求分页存储管理系统中的硬件支持
理解请求分页存储管理系统中的内存分配策略和 分配算法 掌握主要页面置换算法
§4.7 请求分页存储管理方式
请求分页存储管理的基本思想
请求分页存储管理方式是实现虚拟存储器的一种常用技术;
基本思想:在进程开始运行之前,仅装入当前要执行的部分页面即可
图 4-31 简单Clock置换算法的流程和示例
2. 改进型Clock置换算法 由访问位A和修改位M可以组合成下面四种类型的页面:
1类(A=0, M=0): 表示该页最近既未被访问, 又未被修改,
是最佳淘汰页。
2类(A=0, M=1): 表示该页最近未被访问, 但已被修改,
并不是很好的淘汰页。 3类(A=1, M=0): 最近已被访问, 但未被修改, 该页有 可能再被访问。 4类(A=1, M=1): 最近已被访问且被修改, 该页可能再被 访问。
个内存地址,这些地址在不同的页中)。
相应的中断处理程序把控制转向缺页中断子程序。执行此子 程序,即把所缺页面装入主存。然后处理机重新执行缺页 时打断的指令。这时,就将顺利形成物理地址。缺页中断 的处理过程是由硬件和软件共同实现的。
页面 6 5 4 A: 3 2 1 指令 cop y A TO B B: