Computer Operation System
安徽师范大学——计算机与信息学院———— 作者(授课教师): 周文
第4章所介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行。于是,出现了下面这样两种情况:
常规存储器管理方式的特征 我们把前一章中所介绍的各种存储器管理方式统称为传统存储器管理方式,它们全都具有如下两个共同的特征:
(1) 一次性
(2) 驻留性
局部性原理
P.Denning
才真正指出:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。 虚拟存储器的基本工作情况
虚拟存储器的定义
虚拟存储器
。虚拟存储器的特征
与传统的存储器管理方式比较,虚拟存储器具有以下三个重要特征:
(1) 多次性。
(2) 对换性。
(3) 虚拟性。
分页请求系统
1) 硬件支持
2) 实现请求分页的软件
请求分段系统
1) 硬件支持
主要的硬件支持有:
(1) 请求分段的段表机制。
(2) 缺页中断机构。
(3) 地址变换机构。
2) 软件支持
请求页表机制
、缺页中断机构
以及地址变换机构
。请求页表机制
在请求分页系统中需要的主要数据结构是请求页表,其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。为了满足页面换进换出的需要,在请求页表中又增加了四个字段。这样,在请求分页系统中的每个页表应含以下诸项:
页号 | 物理块号 | 状态号 | 访问字段A | 修改位M | 外存地址 |
---|---|---|---|---|---|
缺页中断机构
(1) 在指令执行期间产生和处理中断信号。
(2) 一条指令在执行期间可能产生多次缺页中断。
地址变换机构
请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上,为实现虚拟存储器,再增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等等。
图5-2示出了请求分页系统中的地址变换过程。
最小物理块数的确定
内存分配策略
在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。于是可组合出以下三种适用的策略。
1) 固定分配局部置换(Fixed Allocation,Local Replacement)
2) 可变分配全局置换(Variable Allocation,Global Replacement)
3) 可变分配局部置换(Variable Allocation,Local Replacement)
物理块分配算法
在采用固定分配策略时,如何将系统中可供分配的所有物理块分配给各个进程,可采用下述几种算法:
(1) 平均分配算法,即将系统中所有可供分配的物理块平均分配给各个进程。
(2) 按比例分配算法,即根据进程的大小按比例分配物理块。如果系统中共有个进程,每个进程的页面数为,则系统中各进程页面数的总和为:
又假定系统中可用的物理块总数为,则每个进程所能分到的物理块数为可由下式计算:
(3) 考虑优先权的分配算法。
在实际应用中,为了照顾到重要的、紧迫的作业能尽快地完成,应为它分配较多的内存空间。
通常采取的方法是把内存中可供分配的所有物理块分成两部分:
一部分按比例地分配给各进程;
另一部分则根据各进程的优先权进行分配,为高优先进程适当地增加其相应份额。
为使进程能够正常运行,必须事先将要执行的那部分程序和数据所在的页面调入内存。现在的问题是:
(1) 系统应在何时调入所需页面;
(2) 系统应从何处调入这些页面;
(3) 如何进行调入的。
何时调入页面
(1) 预调页策略。
(2) 请求调页策略。
从何处调入页面
(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。
(2) 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改,则不必再将它们重写到磁盘(换出),以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时便须调到对换区,以后需要时再从对换区调入。
(3) UNIX方式。
UNIX
系统允许页面共享,某进程请求的页面有可能已调入内存,直接使用不再调入。页面调入过程
缺页率
假设一个进程的逻辑空间为n页,系统为其分配的内存物理块数为。如果在进程的运行过程中,访问页面成功(即所访问页面在内存中)的次数为S,访问页面失败(即所访问页面不在内存中,需要从外存调入)的次数为F,则该进程总的页面访问次数为,那么该进程在其运行过程中的缺页率即为:
事实上,在缺页中断处理时,当由于空间不足,需要置换部分页面到外存时,选择被置换页面还需要考虑到置换的代价,如页面是否被修改过。
没有修改过的页面可以直接放弃,而修改过的页面则必须进行保存,所以处理这两种情况时的时间也是不同的。假设被置换的页面被修改的概率是β,其缺页中断处理时间为ta,被置换页面没有被修改的缺页中断时间为tb,那么,缺页中断处理时间的计算公式为
最佳(Optimal)置换算法
最佳置换算法是由Belady
于1966年提出的一种理论上的算法。
其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。
采用最佳置换算法通常可保证获得最低的缺页率。
但由于人们目前还无法预知,一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以利用该算法去评价其它算法。
先进先出(FIFO)页面置换算法
FIFO算法
是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
该算法实现简单,只需把一个进程已调入内存的页面按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。
但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数等的页面,FIFO算法
并不能保证这些页面不被淘汰。
典型例题
在一个请求分页系统中,采用FIFO页面置换算法
时,假如一个作业的页面走向为,当分配给该作业的物理块数M分别为3和4时,试计算在访问过程中所发生的缺页次数和缺页率,并比较所得结果。
答案
LRU(Least Recently Used)置换算法的描述
FIFO置换算法
的性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。
最近最久未使用(LRU)
的页面置换算法是根据页面调入内存后的使用情况做出决策的。
LRU置换算法的硬件支持
1) 寄存器
如果我们把n位寄存器的数看作是一个整数,那么,具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面。
2) 栈
最少使用(Least Frequently Used,LFU)置换算法
LFU算法
时,应为在内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率。该置换算法选择在最近时期使用最少的页面作为淘汰页。简单的Clock置换算法
当利用简单Clock算法时,只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。
改进型Clock置换算法
置换代价
。 除了访问位A,增加一个修改位M
A=0,M=0:
该页最近既没有被访问,也未被修改,最佳淘汰页A=0,M=1:
该页最近既没有被访问,但已被修改,不是最好的淘汰页A=1,M=0:
该页最近被访问,也未被修改,可能再次访问A=1,M=1:
该页最近被访问且被修改过,该页可能再次被访问影响页面换进换出效率的若干因素
(1) 页面置换算法。
(2) 写回磁盘的频率。
(3) 读入内存的频率。
页面缓冲算法PBA
PBA算法的主要特点是:
① 显著地降低了页面换进、换出的频率,使磁盘I/O的操作次数大为减少,因而减少了页面换进、换出的开销;
② 正是由于换入换出的开销大幅度减小,才能使其采用一种较简单的置换策略,如先进先出(FIFO)算法,它不需要特殊硬件的支持,实现起来非常简单。
1) 空闲页面链表
2) 修改页面链表
多道程序度与处理机的利用率
由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。
但处理机的实际利用率却如图5-9中的实线所示。
产生“抖动”的原因
工作集的基本概念
进程发生缺页率的时间间隔与进程所获得的物理块数有关。
图5-10示出了缺页率与物理块数之间的关系。
工作集的定义
所谓工作集,是指在某段时间间隔Δ里,进程实际所要访问页面的集合。
Denning指出
,虽然程序只需要少量的几页在内存便可运行,但为了较少地产生缺页,应将程序的全部工作集装入内存中。
然而我们无法事先预知程序在不同时刻将访问哪些页面,故仍只有像置换算法那样,用程序的过去某段时间内的行为作为程序在将来某段时间内行为的近似。
采取局部置换策略
把工作集算法融入到处理机调度中
利用“L=S”准则调节缺页率
“L=S”
的准则来调节多道程序度,其中L是缺页之间的平均时间,S是平均缺页服务时间,即用于置换一个页面所需的时间。选择暂停的进程
请求段表机制
在请求分段式管理中所需的主要数据结构是请求段表。在该表中除了具有请求分页机制中有的访问字段A、修改位M、存在位P和外存始址四个字段外,还增加了存取方式字段和增补位。这些字段供程序在调进、调出时参考。下面给出请求分段的段表项。
缺段中断机构
在请求分段系统中采用的是请求调段策略。每当发现运行进程所要访问的段尚未调入内存时,便由缺段中断机构产生一缺段中断信号,进入OS后,由缺段中断处理程序将所需的段调入内存。
与缺页中断机构类似,缺段中断机构同样需要在一条指令的执行期间产生和处理中断,以及在一条指令执行期间,可能产生多次缺段中断。
但由于分段是信息的逻辑单位,因而不可能出现一条指令被分割在两个分段中,和一组信息被分割在两个分段中的情况。
缺段中断的处理过程如图5-12所示。
地址变换机构
请求分段系统中的地址变换机构是在分段系统地址变换机构的基础上形成的。
因为被访问的段并非全在内存,所以在地址变换时,若发现所要访问的段不在内存,必须先将所缺的段调入内存,并修改段表,然后才能再利用段表进行地址变换。
为此,在地址变换机构中又增加了某些功能,如缺段中断的请求及处理等。
图5-13示出了请求分段系统的地址变换过程。
共享段表
(1) 共享进程计数count
。
(2) 存取控制字段。
(3) 段号。
共享段的分配与回收
1) 共享段的分配
2) 共享段的回收
分段保护
在分段系统中,由于每个分段在逻辑上是相对独立的,因而比较容易实现信息保护。目前,常采用以下几种措施来确保信息的安全。
1) 越界检查
2) 存取控制检查
3) 环保护机构
答案
采用LRU算法,缺页次数为7
假设一个计算机系统中有4个页面,装入时间、上次调用时间和每个页面的访问位A、修改位M如下表所示。
试问,分别采用NRU、FIFO、LRU算法时将淘汰哪些页?
答案
三种算法淘汰的页面分析如下:
NRU算法
是从那些最近一个时间内未被访问过的页中选一页淘汰,由于第0页的A和M位均为0,故第0页是最近一个时间内未被访问的页,所以NRU算法将淘汰第0页FIFO算法
淘汰最先进入的页面。最先进入内存(装入时间最小)的是第2页,所以FIFO算法淘汰第2页LRU算法
淘汰最近最久未使用的页面。最近最久未使用的页(上次调用时间最小)是第1页,所以LRU算法淘汰第1页。本节结束 2019年10月5日