请求分页式存储管理的地址转换过程实现.doc
《请求分页式存储管理的地址转换过程实现.doc》由会员分享,可在线阅读,更多相关《请求分页式存储管理的地址转换过程实现.doc(13页珍藏版)》请在咨信网上搜索。
1、第2部分、请求分页式存储管理的地址转换过程实现:基本要求:在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。页面置换算法至少应实现先进先出(FIFO)、最近最久未使用(LRU)等算法。 参考学时:16学时实验提示:1、 建立一个位示图,用来模拟内存的分配情况,位示图的位数与设定的物理块个数相同。程序启动时可利用一组随机0和1填充位示图,表示内存已被占用情况。假设内存容量为64K,块大小为1K,则共有64个块,对应的位示图可能的值如下:第0字节1 0 1 1 0 0 1 1第2字节1 1 1 0 0 1 1 1第4字节0 0 0 1 1 1
2、 1 1第6字节1 1 1 1 1 0 0 0第1字节0 1 1 0 1 1 0 0第3字节1 0 0 0 0 1 1 1第5字节0 1 1 1 0 0 1 1第7字节0 0 0 0 0 0 0 1该位示图表示内存的2(0字节第2位)、3(0字节第3位)、6(0字节第6位)、8(1字节第0位)、9(1字节第1位)、12(1字节第4位)、15(1字节第7位)等块没有被占用。2、 创建进程时输入进程大小,并根据程序中设定的物理块大小为进程分配物理块,同时建立页表。例如,在上图基础上,若要建立一个大小为5000字节的进程,则:l 计算出该进程共有“向上取整(5000/1024)=5”个页,需要占用5
3、个内存块;l 建立空的页表,即长度为5的一维整数数组;l 从位示图中找出前5个“0”位在整个位示图中的位置号(即i字节j位为0,则该位的位置为8*i+j),并将这些号依次填入页表中,同时把前5个“0”改为“1”,以示对应内存块已经分配。3、 输入当前执行进程所要访问的逻辑地址,并将其转换成相应的物理地址。4、 进程退出时,根据其页表内容向位示图反向回填“1”。5、 扩充页表,将其变成支持请求和置换功能的二维页表(增加存在位等)。创建进程时可装入固定的前三页(或键盘输入初始装入页数,不同进程的装入个数可以不同),其余页装入到置换空间内(置换空间大小应为内存空间大小的1.5倍,对其还需建立独立的位
4、示图)。6、 分别采用FIFO和LRU置换算法对地址转换过程中遇到的缺页现象进行页面置换,可将多次地址转换过程中所涉及到的页号视为进程的页面访问序列,从而计算置换次数和缺页率。import java.util.Vector;import java.io.*;class ProcessPage PageTable;Vector PageQueue;private int size;private int Pagecount;private String name;double visit;double replacement;public void setPage(Page PageTable)
5、 this.PageTable=new PagePageTable.length;for(int i=0;iPageTable.length;i+) this.PageTablei=PageTablei;public int getPageBlock(int PageNum) return PageTablePageNum.getBlockNum();public void setSize(int size) this.size=size; public void setPagecount(int Pagecount) this.Pagecount=Pagecount; public int
6、getPagecount() return Pagecount;visit=0;replacement=0;public Process() public Process(String name)this.name=name;public String toString()return name;class Page int flag;int blockNum;int writed;/xiu gai weiint accessfield;/fang wen zi duanint swapsapce_blockno;/wai cun dizhiint t;blockNum=0;writed=0;
7、accessfield=0;t=0;public Page() flag=1;swapsapce_blockno=-1;public Page(int flag,int swapsapce_blockno) this.flag=flag;this.swapsapce_blockno=swapsapce_blockno;public int getBlockNum() return blockNum;public int getFlag() return flag; class OS2 public static Vector ready,blocked; public static Proce
8、ss running; public static BufferedReader br; static int a=new int88; static intd=new int1010;/置换空间 static int count=0; public OS2() ready=new Vector(); blocked=new Vector();br=new BufferedReader(new InputStreamReader(System.in);for(int i=0;ia.length;i+) for(int j=0;jai.length;j+) if(Math.random()0.5
9、) aij=0; else aij=1; for(int i=0;id.length;i+) for(int j=0;jdi.length;j+) if(Math.random(); try int i=Integer.parseInt(br.readLine(); switch(i) case 0: System.exit(0); case 1: createNewProcess(); break; case 2: switchCurrentProcess(); break; case 3: blockCurrentProcess(); break; case 4: wakeupBlocke
10、dProcess(); break; case 5: terminateCurrentProcess(); break; case 6: transform(); break; case 7: showPage(); break; case 8: System.out.println(位示图-); print(a); System.out.println(置换空间-); print(d); break; case 9: look(); break; catch(Exception e) System.out.println(e); System.out.println(执行进程:+(runni
11、ng=null?none:running);System.out.print(就绪进程:); printList(ready);System.out.print(阻塞进程:); printList(blocked); public static void printList(Vector v) for(int i=0;iv.size();i+) System.out.print(v.elementAt(i)+t); System.out.println(); public static void createNewProcess() try System.out.print(进程名称:); S
12、tring name=br.readLine(); Process process=new Process(name); ready.add(process); System.out.print(进程大小:); double size=Integer.parseInt(br.readLine(); int numPage=0; numPage=(int)Math.ceil(size/1024); process.setPagecount(numPage); Page P=new PagenumPage; process.PageQueue=new Vector(); st: for(int i
13、=0;ia.length;i+) for(int j=0;jai.length;j+) if(aij=0) if(count3) /Page p1=new Page(); /Pcount=p1; Pcount=new Page(); Pcount.blockNum=8*i+j; process.PageQueue.add(Pcount); Pcount.t=3-count; count+; aij=1; if(count=numPage) break st; else for(int m=0;md.length;m+) for(int n=0;n0) running=(Process)read
14、y.elementAt(0); ready.removeElementAt(0); else running=null; public static void blockCurrentProcess() if(running!=null) blocked.add(running); if(ready.size()0) running=(Process)ready.elementAt(0); ready.removeElementAt(0); else running=null; public static void wakeupBlockedProcess() if(blocked.size(
15、)0) /running=(Process)blocked.elementAt(0); ready.add(Process)blocked.elementAt(0); blocked.removeElementAt(0); if(running=null) running=(Process)ready.elementAt(0); ready.removeElementAt(0); else /blocked=null; public static void terminateCurrentProcess() whileExit(); if(running!=null) running=null
16、; if(ready.size()0) running=(Process)ready.elementAt(0); ready.removeElementAt(0); else if(blocked.size()0) running=(Process)blocked.elementAt(0); blocked.removeElementAt(0); else running=null; public static void transform() try if(running!=null) System.out.print(输入逻辑地址:);int LogicAdds=Integer.parse
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 请求 分页 存储 管理 地址 转换 过程 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。