操作系统页面置换算法之最近最少使用算法(LRU)
来源:互联网 发布:福利资源博客源码 编辑:程序博客网 时间:2024/05/16 14:23
LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。
下面以java语言模拟实现LRU算法,其中,引用串中不包含0号页号。
代码如下:
import java.util.LinkedList;
import java.util.List;
public class LRU {
public static void main(String[] args) {
int framesize = 5;//帧数量
int[] s = { 1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6 };//引用串
int[] is = new int[s.length];
for (int i = 0; i < s.length; i++)
is[i] = 0;
int aa[][] = new int[s.length][framesize];
List<Integer> q = new LinkedList<Integer>();
int count = 0;
for (int i = 0; i < framesize; i++)
q.add(0);
for (int i = 0; i < s.length; i++) {
if (q.contains(new Integer(s[i]))) {
q.remove(new Integer(s[i]));
q.add(new Integer(s[i]));
} else {
q.remove(0);
q.add(new Integer(s[i]));
count++;
is[i] = 1;
}
int j = 0;
for (Integer v : q)
aa[i][j++] = v;
}
for (int i = 0; i < framesize; i++) {
for (int j = 0; j < s.length; j++) {
System.out.print(aa[j][i] + " ");
}
System.out.println();
}
System.out.println();
for (int i = 0; i < s.length; i++) {
System.out.print(is[i] + " ");
}
System.out.println();
System.out.println("total : " + count);
}
}
执行结果如下:
0 0 0 0 0 0 3 4 4 4 4 5 6 1 1 1 7 7 7 7
0 0 0 1 1 3 4 2 1 5 5 6 1 2 2 7 6 6 6 1
0 0 1 2 3 4 2 1 5 6 6 1 2 3 7 6 3 3 1 2
0 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3
1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
============================
1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0
total : 8
其中,等号上方每一列代表队列,0表示空闲帧。等号下方1代表发生页面置换,0代表未发生页面置换。
- 操作系统页面置换算法之最近最少使用算法(LRU)
- LRU(最近最少使用页面置换算法)淘汰算法
- LRU(最近最少使用页面置换算法)淘汰算法
- [Leetcode-146] LRU Cache 最近最少使用页面置换算法
- LRU(Least Recently Used)最近最少使用页面置换算法
- 操作系统页面置换算法之LRU算法
- LRU最近最久未使用页面置换算法
- 操作系统页面置换算法之FIFO,LRU
- C++模拟操作系统最近最少使用算法(LRU),acm
- 【python学习笔记】3:LRU(最近最少使用页面置换)算法
- 最近最久未使用(LRU)置换算法
- 自适应Lru(最近最少使用)算法
- 页面置换算法-最近最久未用(LRU)
- LRU算法,最近最少使用算法
- LRU算法,最近最少使用算法
- 缓存淘汰算法--LRU算法【最近最少使用算法LRU置换策略适用于热点数据比较多的场景】
- 操作系统-页面置换算法-最近最久未使用算法
- 操作系统实验之最近最久未使用算法(LRU)模拟
- M4A格式的ID3信息提取
- selenium 常见的问题解决
- 怎么查看linux服务器的cpu信息和核心数?
- java虚拟机-垃圾回收
- ViewFlipper控件入门
- 操作系统页面置换算法之最近最少使用算法(LRU)
- Java基础课程-面向对象
- Eclipse快捷键 10个最有用的快捷键
- MariaDB是未来的开源方向
- 优先队列与堆排序
- libc.so.6: file format not recognized; treating as linker script & libc.so.6:1: syntax error
- hello world
- linux strace命令
- HDU - 2222 - Keywords Search(AC自动机)