Operating system WSClock近似算法

Operating system WSClock近似算法,operating-system,paging,virtual-memory,working-set,Operating System,Paging,Virtual Memory,Working Set,关于操作系统中用于页面替换的WSClock算法,我有一个问题 据我所知,WSClock结合了工作集(如果页面在最后T个时间间隔中被引用,则页面在WS中,因此最后引用时间使用R&M位存储在每个页面中)和时钟算法的功能(页面框架表存储为循环列表,当发生页面错误时,遍历列表以搜索工作集中不存在的页面) 在每个页面引用上,硬件将其R位设置为1。在某些时间间隔内,操作系统将所有页面的R位重置为0 当出现页面错误时,算法遍历列表,并对每个页面执行以下操作: 1) If R == 1 : set R = 0

关于操作系统中用于页面替换的WSClock算法,我有一个问题

据我所知,WSClock结合了工作集(如果页面在最后T个时间间隔中被引用,则页面在WS中,因此最后引用时间使用R&M位存储在每个页面中)和时钟算法的功能(页面框架表存储为循环列表,当发生页面错误时,遍历列表以搜索工作集中不存在的页面)

在每个页面引用上,硬件将其R位设置为1。在某些时间间隔内,操作系统将所有页面的R位重置为0

当出现页面错误时,算法遍历列表,并对每个页面执行以下操作:

1) If R == 1  : set R = 0, set t = process_t, go further
2) Else if R == 0 and (t - process_t) <= T, go further
3) Else if R == 0 and (t - process_t) > T 
        1) If M = 1 - set page for writing to disk, go further
        2) If M = 0 - this is our victim, evict

If there are no pages for immediate evict are found - traverse until a disk write for any marked page is finished, then evict.
If there are no pages scheduled for a disk write - take the one which was referenced to the most time ago.
1)如果R==1:set R=0,set t=process\u t,则继续
2) 如果R==0且(t-过程t)t
1) 如果M=1-设置写入磁盘的页面,请继续
2) 如果M=0-这是我们的受害者,驱逐
如果找不到要立即收回的页面-遍历,直到完成对任何标记页面的磁盘写入,然后收回。
如果没有为磁盘写入计划的页面,请选择最早引用的页面。
这个算法对我来说很好,除了一件事:

上一次引用页面的时间仅在一种情况下更改:如果在引用此页面后发生页面错误(R=1),但操作系统尚未将R位重置为0(R=0)。因此,据我所知,最后使用的时间仅由该方法近似,从而导致更好的性能

因此,对于确实经常使用的页面,毫无疑问,这些页面存在于流程的WS中,一切都很好:它们的参考频率高于OS重置事件的频率

但是应该有一些不吉利的页面经常被引用,但不幸的是,在这些引用之后没有页面错误发生。但它们也很不幸,当页面出现错误时,它们看起来好像没有被引用过,尽管这不是真的

因此,从我看到的情况来看,操作系统似乎只在页面错误事件期间拍摄工作集的快照。这些快照表示在R位重置和页面错误之间的时间间隔内引用的页面工作集

为什么这是真实工作集的一个很好的近似值

近似的质量(以及算法的有效性)是否由重置R位时的时间间隔值决定


所以这个值不应该太低,不能捕捉到我上面提到的大多数不走运的页面,也不应该太大,不能捕捉到实际上已经不在工作中的页面设定

事实上,以下是解释: 该算法使用工作集的近似值

这个近似值存储了进程的实际工作集的一部分。此外,可能不需要存储此实际工作集的某些部分

操作系统开发人员的任务是查找算法的参数(工作集存在时间间隔、重置位时间间隔)因此,与始终使用实际工作集的算法相比,这种近似值足以使算法运行得足够快,并且具有可接受的页面错误数


另外值得一提的是,在计算机工作期间,操作系统可以动态调整参数,以使算法与实际工作集保持足够接近。

实际上,以下是解释: 该算法使用工作集的近似值

这个近似值存储了进程的实际工作集的一部分。此外,可能不需要存储此实际工作集的某些部分

操作系统开发人员的任务是查找算法的参数(工作集存在时间间隔、重置位时间间隔)因此,与始终使用实际工作集的算法相比,这种近似值足以使算法运行得足够快,并且具有可接受的页面错误数


另外值得一提的是,在计算机工作期间,操作系统可以动态调整参数,以使算法与实际工作集保持足够接近。

仅总结上面所述内容:1)页面参考时间戳更改时根据页面错误频率确定。在我看来,更合理的做法是根据所有页面帧的某种类型的计时器来更改此时间戳,这可能比2)更接近实际工作集,这取决于如果页面错误在某个时刻变得非常罕见,那么工作集将为空(或者至少只包含位重置和下一页错误之间引用的页面)。这很奇怪。总结一下上面写的内容:1)页面引用时间戳何时更改取决于页面错误频率。在我看来,更合理的做法是根据所有页面帧的某种类型的计时器来更改此时间戳,这可能比2)更接近实际工作集,这取决于如果页面错误在某个时刻变得非常罕见,那么工作集将为空(或者至少只包含位重置和下一页错误之间引用的页面)。这非常奇怪。