先决条件 – 虚拟内存
当系统花费大部分时间来处理页面错误时,抖动是一种条件或情况,但实际完成的处理却可以忽略不计。
所涉及的基本概念是,如果为进程分配的帧太少,则会出现过多且过于频繁的页面错误。结果,CPU 不会做任何有用的工作,CPU 利用率会急剧下降。然后,长期调度程序将尝试通过将更多进程加载到内存中来提高 CPU 利用率,从而增加多道程序的程度。这将导致 CPU 利用率的进一步降低,从而引发更高页面错误的连锁反应,然后增加多道程序的程度,称为抖动。
局部模型 –
位置是一组主动使用的页面。位置模型指出,当一个进程执行时,它会从一个位置移动到另一个位置。一个节目通常由几个可能重叠的不同位置组成。
例如,当一个函数被调用时,它定义了一个新的位置,在该位置对函数调用的指令、局部和全局变量等进行内存引用。类似地,当函数退出时,进程离开这个位置。
处理技巧:
- 工作集模型 –
该模型基于上述局部模型的概念。
基本原则是,如果我们为进程分配足够的帧以适应其当前位置,那么它只会在移动到某个新位置时才会出错。但是如果分配的帧小于当前位置的大小,则进程必然会出现抖动。根据该模型,基于参数 A,工作集被定义为最近的“A”页引用中的页集。因此,所有活跃使用的页面总是最终成为工作集的一部分。
工作集的精度取决于参数 A 的值。如果 A 太大,则工作集可能会重叠。另一方面,对于较小的 A 值,可能无法完全覆盖该位置。
如果 D 是对框架的总需求,并且是进程 i 的工作集大小,
现在,如果“m”是内存中可用的帧数,则有两种可能性:
- (i) D>m 即总需求超过帧数,然后会发生抖动,因为某些进程将无法获得足够的帧。
- (ii) D<=m,则不会有颠簸。
- 页面错误频率 –
一种更直接的处理抖动的方法是使用页面故障频率概念的方法。
-
与抖动相关的问题是高页面错误率,因此,这里的概念是控制页面错误率。
如果页面错误率太高,则表明进程分配给它的帧太少。相反,页面错误率低表明进程有太多的帧。
如图所示,可以为所需的页面错误率建立上限和下限。
如果页面错误率低于下限,则可以从进程中删除帧。同样,如果缺页率超过上限,则可以为进程分配更多的帧数。
换句话说,系统的图形状态应该限制在给定图中形成的矩形区域内。在这里,如果页面错误率很高并且没有空闲帧,那么一些进程可以被挂起,分配给它们的帧可以重新分配给其他进程。然后可以稍后重新启动挂起的进程。