模拟虚拟页式存储.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟虚拟页式存储

模拟页面调度 模拟页式虚拟存储管理中硬件的地址转换和缺页中断,并用先进先出算法(FIFO)处理缺页中断。 1 页表 假定主存每块的大小为1024个字节,现有一个7页的作业,系统为该作业分配了4个主存块,0-3页已经装入主存(分别装入5,8,9,1块),页表如下: 页号 标志(1-在主存,0-不在主存) 主存块号 0 1 5 1 1 8 2 1 9 3 1 1 4 0 5 0 6 0 2 指令序列 假设该作业执行的指令序列如下表所示: 操作 页号 页内地址 + 0 70 + 1 50 * 2 15 存 3 21 取 0 56 - 6 40 移位 4 53 + 5 23 存 1 37 取 2 78 + 4 1 存 6 84 3 地址转换和缺页中断 设计一个地址转换程序来模拟硬件的地址转换和缺页中断,如果访问的页在主存,则形成绝对地址,输出绝对地址。 如果访问的页不在主存,则输出“* 该页页号”来表示缺页中断。 4 模拟页面调度 当缺页时,使用FIFO页面调度算法,调出最先进入主存的那一页,同时修改页表,调入页的主存块号填写成调出页的主存块号。输出“out 调出页号”,和“in 装入的新页号”。 提示: int[] p = {0,1,2,3};//前三页已在主存 p[k] = 新页号 k = (k + 1) mod 4 流程图: 5、程序架构和部分代码 5.1 页表项PagetableEntry类 package paging; /** * 页表项类,每个对象代表一个页表项 * 多个页表项组成一张页表 */ public class PagetableEntry { private int pageNumber;//页号 private int flag;//标志,1在主存,0不在主存 private int blockNumber;//块号 public PagetableEntry(int pageNumber,int flag,int blockNumber){ this.pageNumber = pageNumber; this.flag = flag; this.blockNumber = blockNumber; } public int getBlockNumber() { return blockNumber; } public void setBlockNumber(int blockNumber) { this.blockNumber = blockNumber; } public int getFlag() { return flag; } public void setFlag(int flag) { this.flag = flag; } public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } } 5.2 页表类Pagetable 页表对象初始化时加入7个页表项,每个页表项代码一页,7页中只有前4页在主存(其标志位为1),并且有其对应的主存块号。 Pagetable类提供三个方法: isPageIn():按照页号查询某页是否在主存中 getBlockNumber();按照页号查询该页对应的主存块号 modify(): 修改指定页的页表项(标志位,主存块号) package paging; import java.util.HashMap; public class Pagetable { private HashMapInteger,PagetableEntry table = new HashMapInteger,PagetableEntry();//页表 public Pagetable(){ //初始化页表,加入7个页表项,其中前4页在主存 PagetableEntry pe = new PagetableEntry(0,1,5);//创建第0页页表项 table.put(pe.getPageNumber(),pe);//将第0页页表项加入页表 pe = new PagetableEntry(1,1,8); //创建第1页页表项

文档评论(0)

80219pm + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档