📜  处理抖动的技巧

📅  最后修改于: 2021-09-27 15:02:47             🧑  作者: Mango

先决条件 – 虚拟内存

当系统花费大部分时间来处理页面错误时,抖动是一种条件或情况,但实际完成的处理却可以忽略不计。

所涉及的基本概念是,如果为进程分配的帧太少,则会出现过多且过于频繁的页面错误。结果,CPU 不会做任何有用的工作,CPU 利用率会急剧下降。然后,长期调度程序将尝试通过将更多进程加载到内存中来提高 CPU 利用率,从而增加多道程序的程度。这将导致 CPU 利用率的进一步降低,从而引发更高页面错误的连锁反应,然后增加多道程序的程度,称为抖动。

局部模型 –
位置是一组主动使用的页面。位置模型指出,当一个进程执行时,它会从一个位置移动到另一个位置。一个节目通常由几个可能重叠的不同位置组成。

例如,当一个函数被调用时,它定义了一个新的位置,在该位置对函数调用的指令、局部和全局变量等进行内存引用。类似地,当函数退出时,进程离开这个位置。

处理技巧:

  1. 工作集模型 –

    该模型基于上述局部模型的概念。
    基本原则是,如果我们为进程分配足够的帧以适应其当前位置,那么它只会在移动到某个新位置时才会出错。但是如果分配的帧小于当前位置的大小,则进程必然会出现抖动。

    根据该模型,基于参数 A,工作集被定义为最近的“A”页引用中的页集。因此,所有活跃使用的页面总是最终成为工作集的一部分。

    工作集的精度取决于参数 A 的值。如果 A 太大,则工作集可能会重叠。另一方面,对于较小的 A 值,可能无法完全覆盖该位置。

    如果 D 是对框架的总需求,并且WSS_i 是进程 i 的工作集大小,

    D=\sum\nolimits{ WSS_ i}

    现在,如果“m”是内存中可用的帧数,则有两种可能性:

    • (i) D>m 即总需求超过帧数,然后会发生抖动,因为某些进程将无法获得足够的帧。
    • (ii) D<=m,则不会有颠簸。
  2. 页面错误频率 –

    一种更直接的处理抖动的方法是使用页面故障频率概念的方法。

  1. 与抖动相关的问题是高页面错误率,因此,这里的概念是控制页面错误率。

    如果页面错误率太高,则表明进程分配给它的帧太少。相反,页面错误率低表明进程有太多的帧。

    如图所示,可以为所需的页面错误率建立上限和下限。
    如果页面错误率低于下限,则可以从进程中删除帧。同样,如果缺页率超过上限,则可以为进程分配更多的帧数。
    换句话说,系统的图形状态应该限制在给定图中形成的矩形区域内。

    在这里,如果页面错误率很高并且没有空闲帧,那么一些进程可以被挂起,分配给它们的帧可以重新分配给其他进程。然后可以稍后重新启动挂起的进程。