【操作系统】抖动与工作集

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

由于虚拟存储器系统能从逻辑上扩大内存,人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。

如果多道程度过高,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统崩溃。这种现象称为颠簸或抖动(thrashing) 。

【操作系统】抖动与工作集_第1张图片

抖动的后果:缺页率急剧增加,内存有效存取时间加长,系统吞吐量骤减(趋近于零) ;系统已基本不能完成什么任务。

抖动产生原因:同时运行的进程数过多,进程频繁访问的页面数高于可用的物理块数,造成进程运行时频繁缺页。CPU 利用率太低时,调度程序就会增加多道程序度,将新进程引入系统中,反而进一步导致处理机利用率的下降。

操作系统需要一种降低缺页率、防止抖动的内存管理方法:工作集策略

驻留集和工作集管理

驻留集:指请求分页存储管理中给进程分配的物理页面(块)的集合。

驻留集大小即是这个集合中元素的个数。

每个进程的驻留集越小,则同时驻留内存的进程就越多,CPU 利用率越高。

进程的驻留集太小的话,则缺页率高,请求调页的开销增大。

抖动的原因:多道程序度过高,导致平均驻留集过小。

缺页率与系统为进程分配物理块的多少(驻留集的大小)有关。缺页率随着分配物理块的增加而减少。

当物理块数达到某个数值时,物理块数的增加对缺页率没有明显影响。当物理块数小于某个数值时,减少一块都会对缺页率有较大影响。

【操作系统】抖动与工作集_第2张图片

工作集

1968 年 Denning 提出了工作集(Working Set) 理论。

工作集是指在某段时间间隔 ∆ 里,进程实际要访问的页面的集合。

把进程在某段时间间隔 ∆ 里,在时间 t 的工作集记为w(t,∆),变量 ∆ 称为工作集“窗口尺寸” 。

对于给定的页面走向,如果 ∆ = 10 次存储访问,在 t1时刻的工作集是 W(t1,10)=(1,2,5,6,7),在 t2 时刻,工作集是 W(t2,10)=(3,4)

图示

【操作系统】抖动与工作集_第3张图片

  • 工作集的大小是变化的。
  • 相对比较稳定的阶段和快速变化的阶段交替出现。
  • 根据局部性原理,进程会在一段时间内相对稳定在某些页面构成的工作集上。
  • 当局部性区域的位置改变时,工作集大小快速变化。
  • 当工作集窗口滑过这些页面后,工作集又稳定在一个局部性阶段。

【操作系统】抖动与工作集_第4张图片

工作集精确度与窗口尺寸 ∆ 的选择有关。如果 ∆ 太小,那么它不能表示进程的局部特征;如果 ∆ 为无穷大,那么工作集合是进程执行需要的所有页面的集合。

如果页面正在使用,它就落在工作集中;如果不再使用,它将不出现在相应的工作集中。

工作集是局部性原理的近似表示。

如果能找出一个作业的各个工作集,并求出其页面数最大者,就可估计出该进程所需的物理块数。

利用工作集模型可以进行页面置换。工作集页面置换法的基本思想:找出一个不在工作集中的页面,把它淘汰。

工作集策略(Working Set Strategy)

类似于 LRU 算法,工作集用进程过去某段时间内的行为作为未来某段时间内行为的近似。

利用工作集进行驻留集调整的策略

  • 操作系统监视每个进程的工作集变化情况。
  • 只有当一个进程的工作集在内存中时才执行该进程。
  • 定期淘汰驻留集中不在工作集中的页面。
  • 总是让驻留集包含工作集(不能包含时则增大驻留集)

工作集策略存在的问题

  • 工作集过去的变化未必能够预示工作集未来的变化。
  • 记录每个进程的工作集变化开销太大。 (需要为每个进程维护一个基于时间顺序的访问页面队列)
  • 工作集窗口尺寸 ∆ 大小的最优值难以确定。
  • 工作集策略的思想是合理的,很多操作系统试图采用近似的工作集策略。
  • 操作系统可以不直接监视工作集大小,而是通过监视缺页率来达到类似效果。

抖动的预防方法

采取局部置换策略

仅允许进程在自身范围内进行置换。即使发生抖动,也可以把影响限制在较小范围内。

在处理机调度中引入工作集策略

  • 操作系统跟踪每个进程的工作集,并为进程分配大于其工作集的物理块。
  • 操作系统跟踪每个进程的工作集,并为进程分配大于其工作集的物理块。
  • 如果所有工作集之和增加到超过了可用物理块的总数,操作系统会暂停一个进程,将其页面调出并且将其物理块分配给其他进程,防止出现抖动现象。

用 L=S 准则调节缺页率(Denning, 1980)

  • L:缺页之间的平均时间。S:平均缺页服务时间
  • L 大于 S,很少缺页,磁盘能力没有被充分利用。
  • L 小于 S,频繁缺页,超过磁盘的处理能力。
  • 调整并发程序度,使得 L 与 S 接近。这种情况下,磁盘和处理机到可以达到最佳利用率。
  • 一种类似的策略称为“50% 准则”策略:让磁盘保持50% 的利用率,这时 CPU 也达到最高的利用率。

挂起若干进程

  • 当多道程序度偏高,已影响到处理机的利用率时,为了防止发生抖动,系统必须减少多道程序的数目。把某些低优先级的进程挂起,从而腾出内存空间。

你可能感兴趣的:(操作系统)