计算机操作系统 LRU算法 缺页中断

来源:互联网 发布:易建联伦敦奥运会数据 编辑:程序博客网 时间:2024/06/04 19:12

计算机操作系统  LRU算法 缺页中断


所谓的缺页,就是要访问的页不再内存中, 需要从外存中调入内存才可访问


LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

1.2. 实现

最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:

1. 新数据插入到链表头部;

2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;

3. 当链表满的时候,将链表尾部的数据丢弃。

1.3. 分析

【命中率】

当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。

【复杂度】

实现简单。

【代价】

命中时需要遍历链表,找到命中的数据块索引,然后需要将数据移到头部。



加深理解:

看下题:

一进程刚获得3个主存块的使用权,若该进程访问页面的次序是1,2,3,4,1,2,5,1,2,3,4,5.当采用LRU算法时,发生的缺页此次数是()

A. 9
B. 10
C. 11
D. 12

 

答案 B

再看一题:

LRU算法,缺页是什么概念?怎么计算缺页次数?
有一个虚拟存储系统,分配给某个进程3 页内存(假设开始时内存为空),页面访问序列是:2,3,2,1,5,2,4,5,3,2,5,2.若采用LRU 页面淘汰算法,缺页次数为( ).
答案是这样解析的(我看不懂):内存中依次是231,215(淘汰3),152(淘汰1),254(淘汰2),532(淘汰4).刚开始3页内存为空时,需要3次缺页调度,所以缺页次数为7.

写一个解题过程加深理解:

【】 3   2     开始都没有2 3  缺页 2 3 共2次

又来一个2 

【】  2  3   缺页 0次

来一个1 

1 2 3  缺页 1 缺页1次

来一个5 

 5 1 2 缺5  缺页1次

来一个 2 

2 5 1  上一个就有2 缺0次

来一个4 

4 2 5   缺4 缺页1次

来 一个5 

5 4 2 上一个就有5 命中5缺0次

来一个3 

3 5 4 缺3 缺1次

来一个2 

2 3 5 缺2 缺页1次

来一个5 

5 3 2 上一个就有5 缺0次

来一个2 

2 5 3 上一个就有2 缺0 次

总共算一下 共缺页7次



0 0