先进先出(FIFO)置换算法
来源:互联网 发布:华美淘宝客使用说明 编辑:程序博客网 时间:2024/06/06 03:49
定义
这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。
这里,我们只需要设置一个先进先出队列就可以。最先进入内存的页面最早被转换出去。
例如:假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
结果为:7
7 0
7 0 1
0 1 2
1 2 0
2 0 3
2 3 0
3 0 4
0 4 2
4 2 3
2 3 0
2 0 3
0 3 2
3 2 1
3 1 2
1 2 0
2 0 1
0 1 7
1 7 0
7 0 1
先进先出(FIFO)置换算法模拟源代码
/** * 先进先出转换算法 * @author Administrator * */public class FIFO {/** * 内存块的个数 */public static final int N = 3;/** * 内存块数组 */Object[] array = new Object[N];private int size;/** * 内存是非空为否 * @return */public boolean isEmpty() {if(0 == size)return true;elsereturn false;}public/** * 内存是非空满 * @return */ boolean isFulled() {if(size >= N) return true;else return false;}/** * 元素(页框)的个数 * @return */public int size() {return size;}/** * 查找元素o在数组中的位置 * @param o * @return */public int indexOfElement(Object o) {for(int i=0; i<N; i++) { if(o == array[i]) {return i;}}return -1;}/*public void push(Object o) {Node p = new Node(o);//Node p2 = head;p.next = head;head = p;}*//** * 页面转换 * @param obj */public Object trans(Object obj){Object e = null;int t = 0;if(indexOfElement(obj) != -1) {t = indexOfElement(obj);for(int i=t; i<size-1; i++) {array[i] = array[i+1];}array[size-1] = obj;} else {if(!isFulled()){array[size] = obj;size ++;} else {for(int i=0; i<size-1; i++) {array[i] = array[i+1];}array[size-1] = obj;}}if( -1 == t) {return null;} else {return array[t];}}/** * 输出内存区中的各数据 */public void showMemoryBlock() {for(int i=0; i<size; i++) {System.out.print(array[i] + " ");}}/** * 清空队列(页框) */public void clear(){}/** * @param args */public static void main(String[] args) {Integer iter[] = {7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};FIFO fifo = new FIFO();for(int i=0; i<iter.length; i++) {fifo.trans(iter[i]);fifo.showMemoryBlock();System.out.println();}}}
- 先进先出(FIFO)置换算法
- FIFO先进先出置换算法
- 页面置换算法-先进先出(FIFO)
- 先进先出(FIFO)置换算法
- 先进先出页面置换算法(FIFO)
- 先进先出置换算法
- 操作系统页面置换算法之先进先出(FIFO)算法
- FIFO(First-In First-Out)先进先出页面置换算法详解
- android开发常用的缓存策略详解(2)- 先进先出(FIFO)置换算法
- 先进先出页面置换算法
- /*先进先出页面置换算法*/
- FIFO先进先出页面置换实现请求分页
- 操作系统-页面置换算法-先进先出置换算法
- 先进先出队列 FIFO
- 先进先出缓存算法(FIFO)--java实现
- 先进先出页面淘汰算法(FIFO)
- 先进先出缓存算法(FIFO)--java实现
- 内存页面置换算法之先进先出(java 版)
- 【无涯契】【一】
- PHP 常见header 状态
- 别的程序员怎么读你的简历
- hibernate 统计数据
- cocos2d-x游戏开发(三)无限滚动地图
- 先进先出(FIFO)置换算法
- hdu 2101 A + B Problem Too(数论)
- ubuntu10.10 驱动安装(解决显卡驱动引起的不能进入图形界面)
- YUV格式详细解释与FFMPEG的关系
- android 高手之路
- 隐藏组合控件的某个子控件属性问题
- Cocos2d-x环境搭建及平台移植、如何删除xcode里的cocos2d-x模板
- 代码混淆(-)
- MFC如何使控件大小随着对话框大小自动调整