os “抖动”与工作集

这篇博客讨论了请求分页式虚拟存储器系统在多道程序环境中的性能,特别是在进程数量过多导致的‘抖动’现象。‘抖动’是由于进程频繁缺页,大量时间消耗在页面交换上,降低了处理机利用率。工作集理论被引入,用于优化物理块分配,减少缺页率。预防‘抖动’的策略包括局部置换策略、工作集算法融入处理机调度和利用‘L=S’准则调节多道程序度。通过合理调整,可以提高系统吞吐量并避免‘抖动’影响。
摘要由CSDN通过智能技术生成

由于请求分页式虚拟存储器系统的性能优越,在正常运行情况下,它能有效地减少内存碎片,提高处理机的利用率和吞吐量,故是目前最常用的一种系统。但如果在系统中运行的进程太多,进程在运行中会频繁地发生缺页情况,这又会对系统的性能产生很大的影响,故还须对请求分页系统的性能做简单的分析。

多道程序度与“抖动”

多道程序度与处理机的利用率

由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。但处理机的实际利用率却如下图中的实线所示。其中横轴表示多道程序的数量,纵轴表示相应的处理机的利用率。在横轴的开始部分,随着进程数目的增加,处理机的利用率急剧增加;但到达 N1,时,其增速就明显地减慢了,当到达 Nmax 时,处理机的利用率达到最大,以后先开始缓慢下降,当到达N2点时,若再继续增加进程数,利用率将加速下降而趋于0,见下图中的 N3 点。之所以会发生在后面阶段利用率趋于0的情况,是因为在系统中已发生了“抖动”。
在这里插入图片描述

产生“抖动”的原因

发生“抖动”的根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待页面调进/调出的进程数目增加。显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。我们称此时的进程是处于“抖动”状态。
“抖动”是在进程运行中出现的严重问题,必须采取相应的措施来解决它。为此有不少学者对它进行了深入的研究,提出了许多非常有效的解决方法。由于“抖动”的发生与系统为进程分配物理块的多少有关,于是有人提出了关于进程“工作集”的概念。


工作集

工作集的基本概念

进程发生缺页率的时间间隔与进程所获得的物理块数有关。图5-10示出了缺页率与物理块数之间的关系。从图中可以看出,缺页率随着所分配物理块数的增加明显地减少,当物理块数超过某个数目时,再为进程增加一物理块,对缺页率的改善并不明显。可见,此时已无必要再为它分配更多的物理块。反之,当为某进程所分配的物理块数低于某个数目时,每减少一块,对缺页率的影响都变得十分明显,此时又应为该进程分配更多的物理块。为了能清楚地说明形成图5-10所示曲线的原因,还须先介绍关于"工作集”的概念。
在这里插入图片描述
关于工作集的理论是1968年由 Denning 提出并推广的。 Denning 认为,基于程序运行时的局部性原理得知,程序在运行期间,对页面的访问是不均匀的,在一段时间内仅局限于较少的页面,在另一段时间内,又可能仅局限于对另一些较少的页面进行访问。这些页面被称为活跃页面。如果能够预知程序在某段时间间隔内要访问哪些页面,并将它们调入内存,将会大大降低缺页率,从而可显著地提高处理机的利用率。

工作集的定义

所谓工作集,是指在某段时间间隔 Δ \Delta Δ里,进程实际所要访问页面的集合。 Denning 指出,虽然程序只需要少量的几页在内存便可运行,但为了较少地产生缺页,应将程序的全部工作集装入内存中。然而我们无法事先预知程序在不同时刻将访问哪些页面,故仍只有像置换算法那样,用程序的过去某段时间内的行为作为程序在将来某段时间内行为的近似。具体地说,是把某进程在时间 t t t 的工作集记为 w ( t , Δ ) w(t,\Delta) w(t,Δ),其中的变量 Δ \Delta Δ称为工作集的“窗口尺寸”( Windows size )。图5-11示出了某进程访问页面的序列和窗口大小分别为3、4、5时的工作集。由此可将工作集定义为,进程在时间间隔 ( t − Δ , t ) (t-\Delta,t) (tΔ,t)中引用页面的集合
在这里插入图片描述

工作集 w ( t , Δ ) w(t,\Delta) w(t,Δ)是二元函数,即在不同时间 t t t 的工作集大小不同,所含的页面数也不同;工作集与窗口尺寸 Δ \Delta Δ有关,是窗口尺寸 Δ \Delta Δ的非降函数(nondecreasing function),从图5-11可看出这点,即
w ( t , Δ ) ⊆ w ( t , Δ + 1 ) w(t,\Delta)\subseteq w(t,\Delta+1) w(t,Δ)w(t,Δ+1)


“抖动”的预防方法

为了保证系统具有较大的吞吐量,必须防止“抖动”的发生。目前已有许多防止“抖动”发生的方法。这些方法几乎都是采用调节多道程序度来控制“抖动”发生的。下面介绍几个较常用的预防“抖动”发生的方法。

采取局部置换策略

在页面分配和置换策略中,如果采取的是可变分配方式,则为了预防发生“抖动”,可采取局部置换策略。根据这种策略,当某进程发生缺页时,只能在分配给自己的内存空间内进行置换,不允许从其它进程去获得新的物理块。这样,即使该进程发生了“抖动”也不会对其它进程产生影响,于是可把该进程“抖动”所造成的影响限制在较小的范围内。该方法虽然简单易行,但效果不是很好,因为在某进程发生“抖动”后,它还会长期处在磁盘I/O的等待队列中,使队列的长度增加,这会延长其它进程缺页中断的处理时间,也就是延长了其它进程对磁盘的访问时间。

把工作集算法融入到处理机调度中

当调度程序发现处理机利用率低下时,它将试图从外存调入一个新作业进入内存,来改善处理机的利用率。如果在调度中融入了工作集算法,则在调度程序从外存调入作业之前,必须先检查每个进程在内存的驻留页面是否足够多。如果都已足够多,此时便可以从外存调入新的作业,不会因新作业的调入而导致缺页率的增加;反之,如果有些进程的内存页面不足,则应首先为那些缺页率居高的作业增加新的物理块,此时将不再调入新的作业。

利用“L=S”准则调节缺页率

Denning于1980年提出了“L=S ”的准则来调节多道程序度,其中 L 是缺页之间的平均时间, S 是平均缺页服务时间,即用于置换一个页面所需的时间。如果是 L 远比 S 大,说明很少发生缺页,磁盘的能力尚未得到允分的利用;反之,如果是 L 比 S 小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力。只有当 L 与 S 接近时,磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明,利用“ L = S ”准则,对于调节缺页率是十分有效的。

选择暂停的进程

当多道程序度偏高时,已影响到处理机的利用率,为了防止发生“抖动”,系统必须减少多道程序的数目。此时应基于某种原则选择暂停某些当前活动的进程,将它们调出至磁盘上,以便把腾出的内存空间分配给缺页率发生偏高的进程。系统通常都是采取与调度程序一致的策略,即首先选择暂停优先级最低的进程,若需要,再选择优先级较低的进程。当内存还显拥挤时,还可进一步选择暂停一个并不十分重要、但却较大的进程,以便能释放出较多的物理块,或者暂停剩余执行时间最多的进程等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alkali!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值