操作系统-页式虚拟存储管理中地址转换和页式中断

一、实验目的

通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。深入了解页式存储管理如何实现地址转换;进一步认识页式虚拟存储管理中如何处理缺页中断以及页面置换算法。

二、实验内容

设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列, 为简单起见。页面淘汰算法采用 FIFO页面淘汰或LRU算法,并且在淘汰一页时,只将该页在页表中标志位进行修改。而不再判断它是否被改写过,也不将它写回到辅存。
具体的做法可以是:
(1)产生一个需要访问的指令地址流或按下表2中的指令地址流。
(2)指定合适的页面尺寸(例如以 1K为1页);
(3)指定内存页表的最大长度,并对页表进行初始化; 下表1
每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;同时输出绝对地址。如果该页不在主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页(只将该页在页表中标志位进行修改),打印页表情况;逐个地址访问,直到所有地址访问完毕。
存储管理算法的流程图如下:

在这里插入图片描述

假定主存的每个主存块1024字节,系统中每个作业分得主存块4块。
页表如下:
页号 标志 主存块号 修改标志 磁盘位置
0 1 5 0 011
1 1 8 0 012
2 1 9 0 013
3 1 1 0 021
4 0 0 022
5 0 0 023
6 0 0 121
指令流如下:
操作 页号 页内地址 操作 页号 页内地址

  • 0 070 移位 4 053
  • 1 050 + 5 023
  • 2 015 存 1 037
    存 3 021 取 2 078
    取 0 056 + 4 001
  • 6 040 存 6 084

依次执行上述指令序列来调试你的程序。仅模拟指令的执行,不考虑指令序列中具体操作的执行。

三、实验环境

软件:eclipse
win10

四、实验步骤

import java.util.Scanner;

class Yetable{
	public int yeno;
	public int logo;
	public int kuaino;
	public int xiugai;
	public String home;
	public Yetable(int yeno, int logo, int kuaino, int xiugai,
			String home) {
		super();
		this.yeno = yeno;
		this.logo = logo;
		this.kuaino = kuaino;
		this.xiugai = xiugai;
		this.home = home;
	}
	public Yetable(int yeno, int logo,  int xiugai,
			String home) {
		super();
		this.yeno = yeno;
		this.logo = logo;
		this.xiugai = xiugai;
		this.home = home;
	}
}

public class Mainclass {
	public static void main(String[] args) {
		Yetable[] table = new Yetable[7];
		table[0]=new Yetable(0,1,5,0,"011");
		table[1]=new Yetable(1,1,8,0,"012");
		table[2]=new Yetable(2,1,9,0,"013");
		table[3]=new Yetable(3,1,1,0,"021");
		table[4]=new Yetable(4,0,0,"022");
		table[5]=new Yetable(5,0,0,"023");
		table[6]=new Yetable(6,0,0,"121");
		int[] tihuan = new int[]{0,1,2,3};
		int yeno;
		Scanner scan = new Scanner(System.in);
		int dizhi;
		int jueduidizhi;
		int flag=0;
		int a=0;
		System.out.println("页号  "+"标志  "+"主存块号"+"修改标志"+"磁盘位置");
		for(int j=0;j<table.length;j++){
			System.out.println(table[j].yeno+"    "+table[j].logo+"    "+table[j].kuaino+"      "+table[j].xiugai+"      "+table[j].home);
		}
		while(true){
			System.out.println("请输入要访问的页号:");
			yeno = scan.nextInt();
			System.out.println("请输入页号的页内地址:");
			dizhi =scan.nextInt();
			for(int i=0;i<table.length;i++){
				if(yeno==table[i].yeno){
					a++;
					if(table[i].logo==1){
						System.out.println("页号  "+"标志  "+"主存块号"+"修改标志"+"磁盘位置");
						for(int j=0;j<table.length;j++){
							System.out.println(table[j].yeno+"    "+table[j].logo+"    "+table[j].kuaino+"      "+table[j].xiugai+"      "+table[j].home);
						}
						jueduidizhi=table[i].kuaino*1024+dizhi;
						System.out.println("绝对地址:"+jueduidizhi);
						break;
					}else{
						if(flag==4){
							flag=1;
						}
						table[i].logo=1;
						int m=tihuan[flag];
						table[m].logo=0;
						table[i].kuaino=table[m].kuaino;
						table[m].kuaino=0;
						tihuan[flag]=table[i].yeno;
						flag++;
						System.out.println("页号  "+"标志  "+"主存块号"+"修改标志"+"磁盘位置");
						for(int j=0;j<table.length;j++){
							System.out.println(table[j].yeno+"    "+table[j].logo+"    "+table[j].kuaino+"      "+table[j].xiugai+"      "+table[j].home);
						}
						break;
					}
				}
				
			}
			if(a==0){
				System.out.println("无此页号!");
				continue;
			}
			
		}
		
		
	}

}

五、实验结果与讨论

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面结果略

  • 7
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【实验目的】 1. 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解; 2. 熟悉虚存管理的各种面淘汰算法; 3. 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 【实验准备】 1.虚拟存储器的管理方  段管理  管理  段管理 2.面置换算法  先进先出置换算法  最近最久未使用置换算法  Clock置换算法  其他置换算法 【实验内容】 1. 实验题目 设计一个请求存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。面淘汰算法采用 FIFO面淘汰算法,并且在淘汰一时,只将该抹去。而不再判断它是否被改写过,也不将它写回到辅存。 2. 具体做法 产生一个需要访问的指令地址流;指令合适的面尺寸(例如以 1K或2K为1);指定内存表的最大长度,并对表进行初始化;每访问一个地址时,首先要计算该地址所在的号,然后查表,判断该是否在主存——如果该已在主存,则打印表情况;如果该不在主存且表未满,则调入一并打印表情况;如果该不足主存且表已满,则按 FIFO面淘汰算法淘汰一后调入所需的,打印表情况;逐个地址访问,直到所有地址访问完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值