内存管理

1.Please compare NRU, NFU, WS, CLOCK  with LRU and write down the difference.
答:
①最近未使用页面置换算法(NRU)算法

找到最久没有使用的页面置换出去,页面被访问时设置R位,修改时设置M位,R位定期清0;

把页面分四类

0类:未被访问,未被修改的R=M=0

1类:未被访问,被修改R=0,M=1

2类:被访问,未被修改R=1,M=0

3类:被访问,被修改R=1,M=1

系统从类编号最小的非空类随机挑选一个置换

②最不常用算法NFU
为每个页面维持一个初值0的计数器,每次时钟中断,由操作系统扫描所有页面,把计数器加上当前的R位更新,这样每个计数器的值大概反映了被访问的频繁程度。缺页中断时,置换计数器数值最小的页面

③时钟页面置换算法CLOCK
当发生缺页中断时,算法首先检查表针指向的页面,如果它的R位是0就淘汰该页面,并把新的页面插入这个位置,然后把表针前移一个位置;如果R位是1就清除R位并把表针前移一个位置,重复这个过程直到找到了一个R位为0的页面为止。

④WS
工作集页面置换算法
定义一个工作集:在过去t秒内被访问的页面的集合。
扫描所有页面,若R==1,把当前时间写入页表项的“上次使用时间“ ,以表示缺页中断发生时该页面正在被使用。若R==0,表示在当前时钟滴答中,该页面还没有被访问过,则它就可以作为候选者被置换。且生存时间(当前时间-上次使用时间)>t,那么这个页面就不在工作集中,而用新的页面置换它,如果<t,,该页面仍在工作集中,把该页面临时保留下来,记录生存时间最长的页面。


总结:
NRU算法:最近未使用算法,LRU粗糙的近似
NFU算法:LRU近似,效率不高
时钟算法:二次机会的实现,避免移动链表元素
LRU算法:优秀但实现成本高
工作集算法:实现起来开销很大

原文地址:https://www.cnblogs.com/ku1274755259/p/11108531.html