操作系统 请求分页管理(续)
作者:互联网
页分配和页置换策略
最小物理块数的确定
- 指保证进程正常运行所需的最小物理块数。当系统分配的物理块数少于此值时,进程将无法运行
- 进程应获得的最小物理块数与计算机的硬件结构有关,取决于指令的格式、 功能和寻址方式
- 对于单地址指令且采用直接寻址方式的机器,则所需最少2个物理块。其中,一块存放指令页面,另一块则存放数据页面
- 允许间接寻址的机器,至少要求有3个物理块
- 对于长度是两个或多于两个字节指令的机器,其指令本身可能跨两个页面,且源和目标地址所涉及的区域也可能跨两个页面,至少需要6个物理块
物理块的分配策略
- 在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。于是- 可组合出以下三种适用的策略
- 固定分配局部置换(Fixed Allocation, Local Replacement)
问题:分配块数难确定,太少,缺页频繁,吞吐量降低;太多,内存驻留进程数减少,CPU或其它资源可能空闲 - 可变分配全局置换(Variable Allocation, Global Replacement)
先分配给各进程一定数的物理块,系统有一空闲物理块队列,缺页时从空闲队列取,若空闲队列空时,在选页调出 - 可变分配局部置换(Variable Allocation, Local Replacemen
先分配给各进程一定数的物理块,缺页时从该进程在内存的页选一换出,若其频繁缺页,系统再分配若干附加物理块
- 固定分配局部置换(Fixed Allocation, Local Replacement)
物理块分配算法
平均分配算法
- 这是将系统中所有可供分配的物理块,平均分配给各个进程
- 例如,当系统中有100个物理块,有5个进程在运行时,每个进程可分得20个物理块。这种方式貌似公平,但实际上是不公平的,因为它未考虑到各进程本身的大小。如有一个进程其大小为200页,只分配给它20个块,这样,它必然会有很高的缺页率;而另一个进程只有10页,却有10个物理块闲置未用
按比例分配算法
- 这是根据进程的大小按比例分配物理块的算法。如果系统中共有n个进程,每个进程的页面数为Si,则系统中各进程页面数的总和为:
又假定系统中可用的物理块总数为m,则每个进程所能分到的物理块数为bi,将有:
b应该取整,它必须大于最小物理块数
- 这是根据进程的大小按比例分配物理块的算法。如果系统中共有n个进程,每个进程的页面数为Si,则系统中各进程页面数的总和为:
考虑优先权的分配算法
- 在实际应用中,为了照顾到重要的、紧迫的用户程序能尽快地完成, 应为它分配较多的内存空间
- 通常采取的方法是把内存中可供分配的所有物理块分成两部分:一部分按比例地分配给各进程;另一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程
- 在重要的系统,如实时控制系统,则可能是完全按优先权为各进程分配其物理块的
何时调入页面
- 预调页策略
- 采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面预先调入内存,成功率50%
- 请求调页策略
- 当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便提出请求,由OS将其所需页面调入内存
- 目前的虚拟存储中大多采用此种策略
从何处调入页面
在请求分页系统中的外存分为两部分:
通常,由于对换区是采用连续分配方式,而文件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况。
- 用于存放文件的文件区
- 用于存放对换页面的对换区
在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:
(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前, 便须将与该进程有关的文件,从文件区拷贝到对换区。
(2) 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。
(3) UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。
页面调入过程
- 每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后,转入缺页中断处理程序。该程序通过查找页表,得到该页在外存的物理块地址
- 若此时内存能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表
- 若内存已满,则须先按照某种置换算法从内存中选出一页准备换出:
- 页未被修改过,可不必将该页写回磁盘
- 页已被修改过, 则必须将它写回磁盘,然后再把所缺的页调入内存, 并修改页表中的相应表项,置其状态位为“1”,并将此页表项写入快表中。
- 在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据
请求分页中的地址变换过程
调页的时机
页面缓冲算法(PBA:Page Buffering Algorithm)
- 虽然LRU和Clock置换算法都比FIFO算法好,但它们都需要一定的硬件支持,置换一个已修改的页的开销要大。而页面缓冲算法则既改善分页系统的性能,又可采用一种较简单的置换策略。
特点:淘汰的页只是修改标志;若页被修改过,则在欲复盖它时回写,否则成批回写。
在欲重访问该页时,若页换出则只需修改标志 - 采用了可变分配和局部置换方式,置换算法采用FIFO
- 算法规定将一个被淘汰的页放入两个链表中的一个,即如果页面未被修改,就将它直接放进空闲链表中;否则,便放入已修改页面的链表中
PBA算法的主要特点是:
- 显著地降低了页面换进、换出的频率,使磁盘I/O的操作次数大为减少,因而减少了页面换进、换出的开销;
- 正是由于换入换出的开销大幅度减小,才能使其采用一种较简单的置换策略,如先进先出(FIFO)算法,它不需要特殊硬件的支持,实现起来非常简单。
由于请求分页式虚拟存储器系统的性能优越,在正常运行情况下,它能有效地减少内存碎片,提高处理机的利用率和吞吐量,故是目前最常用的一种系统。
但如果在系统中运行的进程太多,进程在运行中会频繁地发生缺页情况,这又会对系统的性能产生很大的影响,故还须对请求分页系统的性能做简单的分析。
工作集及抖动现象的消除
性能问题
- 颠簸(抖动)
在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统崩溃。这种现象称为颠簸或抖动 - 原因
- 页面淘汰算法不合理,分配给进程的物理页面数太少
- 具体的说,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待页面调进/调出的进程数目增加。造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。
- 进程发生缺页率的时间间隔与进程所获得的物理块数有关。
工作集的定义
- 所谓工作集,是指在某段时间间隔Δ里,进程实际所要访问页面的集合。
窗口为3、4、5时进程的工作集
采取局部置换策略
- 在页面分配和置换策略中,如果采取的是可变分配方式,则为了预防发生“抖动”,可采取局部置换策略。
把工作集算法融入到处理机调度中
- 当调度程序发现处理机利用率低下时,它将试图从外存调入一个新作业进入内存,来改善处理机的利用率。
利用“L=S”准则调节缺页率
- Denning于1980年提出了“L=S”的准则来调节多道程序度,其中L是缺页之间的平均时间,S是平均缺页服务时间,即用于置换一个页面所需的时间。
- 如果是L远比S大,说明很少发生缺页,磁盘的能力尚未得到充分的利用;反之,如果是L比S小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力。
- 只有当L与S接近时,磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明,利用“L=S”准则,对于调节缺页率是十分有效的。
选择暂停的进程
- 当多道程序度偏高时,已影响到处理机的利用率,为了防止发生“抖动”,系统必须减少多道程序的数目。
优缺点
优点
- 不要求进程的程序和数据在内存中连续存放,有效地解决了外部碎片问题。
- 提供了虚拟存储器,不要求进程中的程序和数据一次性全部装入内存,因此提高了内存的利用率,有利于多道程序的运行。
缺点
- 增加了硬件成本。必须有相应的硬件支持,如地址转换机构、缺页中断机构和选择淘汰页等都需要硬件支持。
- 可能因逻辑地址空间过大或多道程序的个数过多而造成系统抖动现象的产生。
- 虽然消除了外部碎片,但进程的最后一页还存在内部碎片问题。
标签:操作系统,管理,请求分页,对换,调入,内存,进程,缺页,页面 来源: https://blog.51cto.com/u_14175378/2759914