有人能给我一个操作系统中使用的 VSWS 算法的高级概述吗?

问题描述

我正在尝试寻找可以为我提供简单、清晰、简洁的 VSWS 算法描述的视频/资源,但我似乎找不到任何视频/资源。任何帮助将不胜感激!

解决方法

谁能给我一个 VSWS 算法的高级概述...

可变间隔采样工作集算法的基本思想是:

  • 每个虚拟页面都有一个“已使用”标志

  • 当程序运行时,如果/当程序使用虚拟页面(包括页面的数据必须从其他地方/磁盘获取才能使用时),CPU 或操作系统将页面的“是使用”标志。

  • 经过一段时间后,操作系统会检查所有“已使用”标志,并决定如果页面未使用,则它不是工作集的一部分(并且可能会驱逐它们以释放物理记忆);然后清除所有“已使用”标志(为下一个可变的时间量做好准备)。

...用于操作系统?

我不认为它实际上用于现代操作系统。

大多数操作系统都基于“最近最少使用”松散地使用某些东西;其中使用类似的“可变抽样”方法来估计“最后一次使用页面的时间”(而不仅仅是单个“已使用”标志),然后用于估计“未来使用的可能性”;然后可以将其与“驱逐成本”和“程序优先级”相结合,得出综合分数;其中得分最差的页面被认为是“最好驱逐以释放物理内存”。

注1:如果页面被修改并需要写入交换空间(然后可能稍后从交换空间加载回来),那么它具有更高的“驱逐成本”;如果一个页面自从上次从文件或交换空间中获取后没有被修改,那么它的“驱逐成本”就较低。为了提高性能(降低逐出成本,不要忘记估计是粗略的,而且通常不能很好地预测未来的使用),更喜欢逐出“比逐出更便宜”的页面是有意义的。

注2:当有多个任务在运行时;对某些任务给予优待是好的。举一个极端的例子,想象一下,如果操作系统处于“低内存”条件下并且不断地颠簸(向/从磁盘传输数据);并且管理员/用户正试图终止导致所有磁盘垃圾但无法终止的错误程序,因为他们需要用来解决问题的工具没有响应(因为这些工具没有得到优惠待遇并且必须从“已经被颠簸”的磁盘中获取)。

注意 3:在某些情况下(例如一个名为 sleep() 的任务,确定它很快就会醒来是微不足道的)可以使用其他信息来更好地估计“未来的概率”使用”而不是简单的“最近最少使用”算法。

注 4:通常,当操作系统需要释放一些物理内存时,还可以考虑其他事情(例如文件数据缓存)(并且还可以参与“计算分数并驱逐任何具有最差分数”系统)。

注 5:现代系统也会在实际请求数据之前预取数据(例如从文件等)。完全有可能预取的“没有被任何程序请求,根本没有使用”的数据比“显式请求和以前使用过的”数据更重要。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...