0

我对颠簸感到困惑。假设我们有一组页面:2 4 6 8 2 5 8 和工作集大小= 4。我们是否应该移动到页面大小的末尾,然后将所有工作集大小相加,然后与内存大小进行比较并决定是否发生颠簸?例如在这个集合中第一个区间WS(t1)={2,4,6,8}, WS(t2)={4,6,8,2}, WS(t3)= {6,8, 2,5},WS(t4)={8,2,5}。因此,当我们添加工作集大小 sum=15 时。我是否要将此值与内存大小进行比较并确定是否发生抖动?

4

2 回答 2

1

我想你不明白什么是颠簸。当您有许多页面错误时,CPU 利用率将会下降,因为您花时间将帧移入和移出 RAM。操作系统会认为多道程序的程度很低,所以它会启动一个新的进程,该进程也需要内存中的帧。这反过来又减少了进程拥有的帧数,这也可能导致它们抖动。因此,增加了问题。而不是修复它。

您在 Working-Set-Model 中的目标是估计您将在不久的将来访问的页面数量,并将它们保存在内存中,这样您就不会出现页面错误。

现在,如果我们想保持低页面错误数,我们需要进程频繁访问的页面在 RAM 中,它们是它的工作集。

如果对所有进程求和页数,然后乘以页大小,这就是保持低页错误数所需的内存量。如果此数字超过可用内存,则会发生页面错误并可能导致抖动

于 2016-10-06T22:25:28.343 回答
0

如果您要学习工作集模型,这是一个非常好的资源。

所以如果我以简单的方式总结要点

  • 当系统将所有时间都花在将页面加载到内存中时,就会发生抖动。
  • 因此它不执行任何生产性处理任务,这意味着浪费时间。
  • Thrashing的主要原因是进程所需的内存总量(总计)大大超过了实际内存总量,因此经常发生页面错误。
  • 作为一种解决方案,工作集模型保留每个进程的页面工作集。它有助于内存仅使用当前(现在和不久的将来)需要的页面。
于 2016-10-25T15:09:54.973 回答