缺页置换算法

概念

进程运行过程中,如果发生缺页中断,而此时内存中有没有空闲的物理块,为了能够把所缺的页面装入内存,系统必须从内存中选择一页换出。

算法:

●先进先出(FIFO)算法:
思想:最近刚访问的,将来访问的可能性比较大。

实现:使用一个队列,新加入的页面放入队尾,每次淘汰队首的页面,即最先进入的数据,最先被淘汰。

弊端:无法体现页面冷热信息

●最不经常访问淘汰算法( LFU (Least frequently used) )

思想:如果过去访问多次,那么将来访问的频率也更高

实现:每个数据块有一个引用计数,数据块按引用计数排序,每次淘汰队尾数据块

开销:排序开销

●最近最少使用LRU (Least Recently Used)

思想:置换最近一段时间以来最长时间未访问过的页面,如果数据最近被访问过,那么将来被访问的几率也更高

实现:使用一个栈,新页面或者命中的页面移动到栈底,每次替换栈顶的缓存页面

优点:LRU算法对热点数据命中率很高

缺点:缓存污染,偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。

●最久未使用k次淘汰算法(LRU-K)

思想:LRU-K 中的 K 代表最近使用的次数,LRU-1即LRU

实现:相比 LRU,LRU-K 需要多维护一个队列,用于记录所有缓存数据被访问的历史。只有当数据的访问次数达到 K 次的时候,才将数据放入缓存。当需要淘汰数据时,LRU-K 会淘汰第 K 次访问时间距当前时间最大的数据。

解决:LRU-K 的主要目的是为了 解决 LRU 算法“缓存污染”的问题。

猜你喜欢

转载自blog.csdn.net/qq_36459662/article/details/113881235