请求分页式存储管理的地址转换过程实现.doc

请求分页式存储管理的地址转换过程实现.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2部分、请求分页式存储管理的地址转换过程实现: ●基本要求:在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。页面置换算法至少应实现先进先出(FIFO)、最近最久未使用(LRU)等算法。 ●参考学时:16学时 ●实验提示: 建立一个位示图,用来模拟内存的分配情况,位示图的位数与设定的物理块个数相同。程序启动时可利用一组随机0和1填充位示图,表示内存已被占用情况。 假设内存容量为64K,块大小为1K,则共有64个块,对应的位示图可能的值如下: 第0字节1 0 1 1 0 0 1 1第2字节1 1 1 0 0 1 1 1 第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 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 创建进程时输入进程大小,并根据程序中设定的物理块大小为进程分配物理块,同时建立页表。例如,在上图基础上,若要建立一个大小为5000字节的进程,则: 计算出该进程共有“向上取整(5000/1024)=5”个页,需要占用5个内存块; 建立空的页表,即长度为5的一维整数数组; 从位示图中找出前5个“0”位在整个位示图中的位置号(即i字节j位为0,则该位的位置为8*i+j),并将这些号依次填入页表中,同时把前5个“0”改为“1”,以示对应内存块已经分配。 输入当前执行进程所要访问的逻辑地址,并将其转换成相应的物理地址。 进程退出时,根据其页表内容向位示图反向回填“1”。 扩充页表,将其变成支持请求和置换功能的二维页表(增加存在位等)。创建进程时可装入固定的前三页(或键盘输入初始装入页数,不同进程的装入个数可以不同),其余页装入到置换空间内(置换空间大小应为内存空间大小的1.5倍,对其还需建立独立的位示图)。 分别采用FIFO和LRU置换算法对地址转换过程中遇到的缺页现象进行页面置换,可将多次地址转换过程中所涉及到的页号视为进程的页面访问序列,从而计算置换次数和缺页率。 import java.util.Vector; import java.io.*; class Process{ Page []PageTable; VectorPage PageQueue; private int size; private int Pagecount; private String name; double visit; double replacement; public void setPage(Page []PageTable) { this.PageTable=new Page[PageTable.length]; for(int i=0;iPageTable.length;i++) { this.PageTable[i]=PageTable[i]; } } public int getPageBlock(int PageNum) { return PageTable[PageNum].getBlockNum(); } public void setSize(int size) { this.size=size; } public void setPagecount(int Pagecount) { this.Pagecount=Pagecount; } public int 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 wei int accessfield;//fang wen zi duan int swapsapce_blockno;//wai cun dizhi int t; { blockNum=0; writed=0; accessfield=0; t=0; } public Page() { flag=1; swapsapce_blockno=-1; } p

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档