虚拟存储器管理(页面置换算法模拟)
操作系统是我们软件工程系学生所要学习的重要学科,操作系统对计算机系统资源的整合与管理也是具有举足轻重的作用,是所有软件与计算机硬件的唯一接口,所有的用户在使用计算机时都会得到操作系统提供的便捷服务。为了了解内存分页管理策略模拟实现了先进先出置换算法(FIFO)。
模拟实现存储器页面替换策略算法
先进先出置换算法(FIFO):该算法淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
(1)假设现在有一个请求队列:1,2,3,4,1,2,5,1,2,3,4,5
(2)内存块容量为3个
设计算法思路
当请求的内存页不在缓存中。且缓存已满时,应从缓存中删除保存时间最长的页面,从而为请求页面腾出空间,如果缓存未满,可直接将请求页面添加到缓存中,给定的页面最多只应在缓存中出现一次。
(1)创建一个长度为3的集合,其功能相当于有三个内存空间
ArrayList block = new ArrayList(3);
(2)声明数组存放请求队列
Integer[] data
源程序代码
>
>
> import java.util.ArrayList; //页置换策略—先进先出算法(FIFO) public class Fof {
> public ArrayList block = new ArrayList(3);//创建一个长度为3的集合,其功能相当于有三个块
>
> /** 将访问页添加块中 **/
> public ArrayList put(Integer data){
> //判断物理块里面的数据是否大于三个
> if (block.size() < 3){
> for(int i = 0;i < block.size();i++) {
> if (block.get(i) == data) {
> System.out.print("这个没有中断----");
> }
> }
> block.add(data);//不在在情况下,将形式参数的值添加到物理块集合中
> }else {
> for(int i = 0;i < block.size();i++) {
> if (block.get(i) == data) {//存在,当前数据存在物理块中,表示没有中断
> System.out.print("这个没有中断----");
> return block;//直接返回原来的物理块,不做任何处理
> }
> }
> block.remove(0);//将物理块集合首个元素移除
> block.add(data);//将新的添加到末尾
> }
> return block;//返回物理块
> }
> }
public class Arithmetic {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//1,2,3,4,1,2,5,1,2,3,4,5
Integer[] data = {new Integer(1),
new Integer(2),
new Integer(3),
new Integer(4),
new Integer(1),
new Integer(2),
new Integer(5),
new Integer(1),
new Integer(2),
new Integer(3),
new Integer(4),
new Integer(5)};
Fof f=new Fof();
for(int i = 0;i < data.length;i++) {
System.out.println(data[i]+"------>"+f.put(data[i]));
}
System.out.println("-------------------------------");
System.out.println("访问顺序总的次数为:"+data.length);
}
}