Alex_McAvoy

想要成为渔夫的猎手

抖动与工作集

【抖动】

多道程序度

由于虚拟存储器系统从逻辑上扩大内存,只需要装入一个进程的部分程序和数据即可运行,为提高处理机的利用率,可采取增加多道程序的方法,即在系统中运行更多的进程

如下图,随着进程数目的增加,处理机的利用率也增加,但到增速逐渐减缓,直到达到峰值,之后再进行增加,处理机利用率反而下降,这是因为在系统中已经发生了抖动

抖动

抖动,即刚被换出的页很快又要被访问,需要将其重新调入,而此时又需要再选一页调出,置换完毕后,刚被调出的页又被访问,又需要将其调入,频繁地更换页面,使得一个进程在运行过程中将大部分时间都花在了置换工作上

产生抖动的根本原因在于,同时在系统中运行的进程太多,由此分配给每一进程的物理块太小,不能满足进程正常运行的基本要求,从而使得每个进程频繁地出现缺页

而大量的缺页会使得系统中排队等待页面调度的进程数增加,对磁盘的有效访问时间也随之增加,造成每个进程大部分时间都用于页面的换进换出,从而导致处理机利用率急剧下降甚至趋于 $0$ 的情况

抖动的预防

为保证系统具有较大的吞吐量,必须防止抖动的产生,常见的预防抖动的方法如下:

  • 采取局部置换策略
  • 将工作集算法融入到处理机调度中,即在页面调入内存前检查各进程的工作集,为缺页率高的增加有限物理块
  • 利用 $L= S$ 准则来调节缺页率,即:当缺页间的平均时间 $L$ 置换一个页面所需时间 $S$ 相等时,磁盘和处理机可达到他们的最大利用率
  • 抖动发生时,暂停某些进程,从而调节多道程序度

【工作集】

进程发生缺页的时间间隔与进程获得的物理块数有关联,缺页率随着分配物理块数的增加明显地减少

基于程序局部性原理可知,程序在运行期间,对页面的访问是不均匀的,因此,若能预知程序在某段时间要访问的页面并全部调入他们,将大大降低缺页率,显著地提供处理机的利用率

由于无法预知程序在不同时刻访问的页面,因此只能像置换算法那样用程序过去某段时间的行为作为程序将来某段时间的行为的近似

工作集,是指在某段时间间隔 $\Delta$ 中,进程时间所访问页面的集合

具体来说,可以用一个二元函数 $W(t, \Delta)$ 来表示某进程在执行时刻 t 的工作集,在不同时间 t 的工作集大小不同,所含的页面数也不同,其是窗口尺寸 $\Delta$ 的非降函数,即:

感谢您对我的支持,让我继续努力分享有用的技术与知识点!