虚拟存储器管理(页面置换算法模拟)

虚拟存储器管理(页面置换算法模拟)

操作系统是我们软件工程系学生所要学习的重要学科,操作系统对计算机系统资源的整合与管理也是具有举足轻重的作用,是所有软件与计算机硬件的唯一接口,所有的用户在使用计算机时都会得到操作系统提供的便捷服务。为了了解内存分页管理策略模拟实现了先进先出置换算法(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);  
       
	}
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值