操作系统-页式储存.docVIP

  • 18
  • 0
  • 约3.71千字
  • 约 6页
  • 2017-09-01 发布于河南
  • 举报
操作系统-页式储存

《计算机操作系统》 实验报告 题 目: 页式存储 学 部: 信息科学与技术学部 专 业: 软件工程 班 级: 姓 名: 学 号: 指导老师: 设计时间: 实验题目 页式存储管理部分功能模拟实验 实验目的 了解存储器的管理任务和功能 了解Windows存储器管理模式和特点 深入了解页式存储管理如何实现地址转换 进一步认识页式存储管理中如何处理缺页中断 掌握几种页面置换算法的实现方法 实验内容 模拟页式存储管理,主要包括处理模拟地址转换和采用先进先出页面设置法的缺页中断流程图。 本次实验中,使用软件程序来模拟整个地址转换过程;还采用先进先出页面置换算法。实验中假定主存64KB,每个主存块1024B,即n=10,m=16,物理地址中块号6位,块内地址10位;作业最大64KB,即m=16,逻辑地址中页号6位,页内地址10位。 实验中执行一条指令时,不模拟指令的执行,知识考虑指令执行时是否修改页面,若修改页面,则将该页的页表中的修改中得标志置为1,然后输出转换后的物理地址,并输出物理地址来表示一条指令执行完毕,如果访问的页面不在主存,则产生缺页中断,然后直接转去进行缺页中断处理,最后模拟中断返回,即返回重新进行地址转换。 实验设计思路和算法 主要设计模拟页式虚拟存储管理中的地址转换和缺页中断处理,其中地址转换流程为取页号,查页表,存在则直接取,并进行相应的修改,若不存在,则进行缺页处理;缺页处理中,主要采用FIFO来决定,与哪个页进行置换。 主要数据结构及其说明 #define n 64 #define length 10 struct { int lnumber;//页号 int flag; //表示该页是否在主存,1表示在主存,0表示不在主存 int pnumber; //表示该页所在主存块的块号 int write; //表示该页是否修改过,1表示修改过,0表示没有修改过 int dnumber;//表示该页存放在磁盘上的位置,即磁盘块号 }page[n]; int m; int page_length; int p[length];//数组p[]存放位于主存块中的页面序号 int head; //page_interrupt()函数的功能是进行缺页处理 测试数据设计及测试结果分析 首先,通过键盘依次输入了4个主存块,块号为6,8,5,3,同时,将第0,1,2,3个页面依次调入块6,8,5,3中,将这4个页面的页号相应地存入 数组p[0],p[1],p[2],p[3]中,然后再通过键盘依次输入逻辑地 址:78,64,785,abc,1000,1acb,1453,2010,然后分离出逻辑地址高六位的页号(分别对应第0,0,1,2,4,6,5,8 个页面)和低10位的页内地址,由于前4个逻辑地址对应的页号在主存中,所以将这4个页号对应的主存块号和页内地址合成为物理地址;对于后4个逻辑地址, 由于对应的页号不在主存中,所以要进行缺页处理,采用FIFO算法。 程序流程图 程序运行结果 九 、程序代码 #includestdio.h #define n 64 #define length 10 struct { int lnumber;//页号 int flag; //表示该页是否在主存,1表示在主存,0表示不在主存 int pnumber; //表示该页所在主存块的块号 int write; //表示该页是否修改过,1表示修改过,0表示没有修改过 int dnumber;//表示该页存放在磁盘上的位置,即磁盘块号 }page[n]; int m; int page_length; int p[length];//数组p[]存放位于主存块中的页面序号 int head; //page_interrupt()函数的功能是进行缺页处理 void page_interrupt(int lnumber) { int j; printf(发生缺页中断%d\n,lnumber); //下面要填的空白是进行页面置换,采用的是FIFO算法 j=p[head]; p[head]=lnumber; head=(head+1)%m; if(page[j].

文档评论(0)

1亿VIP精品文档

相关文档