java请求调页存储管理方式的模拟_请求调页存储管理方式的模拟

该博客介绍了如何使用Java模拟请求调页存储管理方式,包括实验目的、内容和具体的置换算法如OPT、FIFO和LRU。通过模拟作业执行过程,计算缺页率,加深对请求调页系统的理解。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif请求调页存储管理方式的模拟

实验3请求调页存储管理方式的模拟 1实验目的 通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。 2实验内容 (1)假设每个页面中可存放10条指令,分配给一作业的内存块数为4。 (2)模拟一作业的执行过程。该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已经在内存中,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块中均已装入该作业,则需进行页面置换。最后显示其物理地址,并转下一条指令。在所有320条指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。 (3)置换算法:请分别考虑OPT、FIFO和LRU算法。 (4)作业中指令的访问次序按下述原则生成: •50%的指令是顺序执行的。 •25%的指令是均匀分布在前地址部分。 •25%的指令时均匀分布在后地址部分。 代码: package mainDart; import java.util.ArrayList; import java.util.List; import java.util.Random; public class FIFO { private static int times=0;//记录置换内存页面的次数 /** * 随机产生0~319之间的数 * 产生320条指令 * * @return 包含320条指令的数组 */ public static int[] productNumber() { int order[] = new int[320];//数组存储的数字表示指令 Random rand = new Random(); for(int i=0;i<320;i++) { if(i%4==0) { order[i]=rand.nextInt(319); //0<=order<319 } else if(i%4==1) { order[i]=order[i-1]+1;//1<=order<320 } else if(i%4==2) { order[i]= rand.nextInt(order[i-1]); } else if(i%4==3) { order[i]=order[i-1]+rand.nextInt(320-order[i-1]); } } return order; } /** * 打印链表 * @param list */ public static void printList(List list) { for(int temt:list) { System.out.print(temt+“\t“); } System.out.println(); } /** * 先进先出算法 * 总是淘汰最先进入内存的页面 * 在实现的时候,记录上一次所替换的页面在内存的下标,则本次要替换的位置就是上次下标+1的位置,并且下标是0~3循环的 * @param memoryNum * @param page */ public static void FIFOChangePage(List memoryNum,int page) { int index = FIFOChangePage(memoryNum,page,++times); memoryNum.remove(index); memoryNum.add(index, page); } /** * 返回本次替换的页面在内存中的位置 * @param memoryNum * @param page * @param times记录替换页面的次数,第一次替换的是内存第0个单元 * @return */ public static int FIFOChangePage(List memoryNum,int page,int times) { if(times==1) { return 0; } int index = (FIFOChangePage(memoryNum,page,times-1)+1)%4; return index; } public static void main(String[] args) { int[] order = productNumber(); System.out.println(“320条随机指令数:“); for(int i =0;i

假设每个页面中可存放10条指令,分配给作业的内存块数为4。 用C语言语言模拟一个作业的执行过程,该作业共有320条指令, 即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需要记录缺页的次数,并将相应页调入内存。如果4个内存块均已装入该作业,则需要进行页面置换,最后显示其物理地址,并转向下一条指令。在所有320条指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。 置换算法:请分别考虑最佳置换算法(OPT)、先进先出(FIFO)算法和最近最久未使用算法(LRU)。 作业中指令的访问次序按下述原则生成: 50%的指令是顺序执行的; 25%的指令是均匀分布在前地址部分; 25%的指令是均匀分布在后地址部分; 具体的实施方法是:    在[0,319]的指令地址之间随机选取一起点m;    顺序执行下一条指令,即执行地址序号为m+1的指令;    通过随机数,跳转到前地址部分[0,m+1]中的某条指令处,其序号为m1;    顺序执行下一条指令,其地址序号为m1+1的指令;    通过随机数,跳转到后地址部分[m1+2,319]中的某条指令处,其序号为m2;    顺序执行下一条指令,其地址序号为m2+1的指令; 重复跳转到前地址部分,顺序执行,跳转到后地址部分,顺序执行的过程直至执行320条指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值