页式存储管理模拟_第1页
页式存储管理模拟_第2页
页式存储管理模拟_第3页
页式存储管理模拟_第4页
页式存储管理模拟_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号姓名王娟实验日期2018.实验名称页式存储管理模拟实验目的:本实验通过模拟页式虚拟存储管理中硬件的地址转换,和采用先进先出算法(FIFO)的缺页中断处理的实现过程,来进一步加深对虚拟存储的理解。实验内容:此实验模拟页式虚拟存储管理中硬件的地址转换和采用先进先出算法(FIFO)的缺页中断处理。地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程,模拟地址转换的流程图如图1所示(模拟实验中假定主存64KB,每个主存块1024字节,即n=10,m=16,物理地址中块号6位,块内地址10位;作业最大64KB,即m=16,逻辑地址中页号6位,页内地址10位)。在模拟实验中页表格式如图2所示。

2、实验原理:页表用数组模拟,在模拟实验中,页表数据结构定义为:define n 32 /*模拟实验中假定的页表长度*/structint lnumber; /*页号*/ int flag; /*表示该页是否在主存,“1”表示在主存,“0”表示不在主存*/ int pnumber; /*该页所在主存块的块号*/ int write; /*该页是否被修改过,“1”表示修改过,“0”表示没有修改过*/ int dnumber /*该页存放在磁盘上的位置,即磁盘快号*/ pagen; /*页表定义*/本实验系统采用页面预置的方法分配主存空间时将前几页调入主存,假定系统中每个作业分得主存块m(m=4)块,

3、则将第0m-1页装入主存。因为是模拟硬件工作,所以模拟实验中如果访问的页不在主存时,则输出该页页号,表示硬件产生缺页中断,然后直接转去缺页中断处理。模拟实验中,由于采用页面预置方法,在给定的主存块中一定无空闲块,只能淘汰已在主存的一页。模拟实验中,没有启动磁盘的工作,淘汰的页需要写回磁盘时,用输出页号表示,调入新的一页时,将该页在页表中的存在标志置为“1”,输出页号表示将该页调入主存。模拟实验中使用先进先出调度算法。可以把在主存储器的页的页号按进入主存的先后次序排成队列,每次总是调出队首的页,当装入一个新页后,把新页的页号排入队尾。模拟实验中,用一个数组存放页号的队列。假定分配给作业的主存块数

4、为m,数组可由m个元素组成,p0,p1.pm-1,队首指针head和队尾指针tail,当装入一个新的页时,将其页号存入数组:tail=(tail+1)%m;ptail=新装入页的页号;当选择淘汰的页时,淘汰页的页号=phead;head=(head+1)%m;模拟实验中,采用页面预置的方法,页号队列的长度总是m,tail等于(head+1)%m。因此可以使用一个指针,只用head即可。在装入一个新的页时,装入页和淘汰页同时执行,语句改为:淘汰页的页号=phead;phead=新装入页的页号;head=(head+1)%m; 模拟实验中,采用先进先出页面置换算法的缺页中断流程图如图3所示。 模拟

5、实验执行一条指令时,不模拟指令的执行,只是考虑执行是否修改页面,若修该页面,则将页面的页表中修改标志置为“1”,然后输出转换后的物理地址,并输出物理地址来表示一条指令的完成;如果访问的页不存在时,则产生缺页中断,往后直接转去缺页中断处理,最后模拟中断返回,就是返回重新进行地址转换。一条指令执行的模拟流程图如图4所示。模拟程序中首先手工输入页表信息,创建该作业的页表;然后循环执行假定的指令,观察地址转换情况。模拟程序的完整流程图如图5所示。实验过程与结果: #define n 64 /*模拟实验中假定的页表长度*/ #define length 10 Struct int lnumber; /*

6、页号*/ int flag; /*表示页是否在主存,“1”表示在,“0”表示不在*/ int pnumber; /*该页所在主存块的块号*/ int write; /*该页是否被修改过,“1”表示修改过,“0”表示没有修改过*/ int dnumber; /*该页存放在磁盘上的位置,即磁盘块号*/ pagen; /*页表定义*/ int m; /*m为作业在主存中的主存块块数*/ int page_length; /*页表实际长度*/ int plength; /*存放在主存中页的页号*/ int head; /*主存中页号队列头指针*/ page_interrupt(lnumber) int

7、 lnumber; int j;Printf(“发生缺页中断* %dn”,lnumber);/*淘汰页*/j=phead;phead=lnumber;head=(head+1)%m;if(pagej.write=1) printf(“将页%d写回磁盘第%d块n”,j,pagej.dnumber);pagej.flag=0; /*第j页存在标志改为“0”*/pagelnumber.pnumber=pagej.pnumber;pagelnumber.flag=1; /*第lnumber页存在标志改为“0”*/pagelnumber.write=0; /*第lunmber页修改标志改为“1”*/pr

8、intf(“淘汰主存块%2d中的页%2d,从磁盘第%d块中调入页%2dn”,pagej.pnumber,j,pagelnumber.dnumber,umber);/*缺页中断处理函数结束*/Command(laddress,write)unsigned laddress;int write;unsigned paddress,ad,pnumber,lnumber;kk:/*取出逻辑地址laddress的页号lnumber(高6位)和页内地址ad*/lnumber=laddress10;ad=laddress&0x33ff;if(lnumber=page_length)printf(“不存在该页

9、n”);return;if (pagelnumber.flag=1) /*页在主存*/pnumber=pagelnumber.pnumber; /*从页表中取得块号*/paddress=pnumber10/ad; /*合并块号和块内地址,形成物理地址padress*/ Printf(“逻辑地址是:%x对应的物理地址是:%xn”,laddress,paddress); If(write=1) /*如果需要写,修改页的修改标志位*/ Pagelnumberwrite=1; else page_interrupt(lnumber); -goto kk; /*命令处理函数结束*/main() int

10、lnumber,flag,pnumber,write,dnumber;unsigned laddress;int I;/*输入页表信息,创建页表page*/printf(“输入页表信息,创建页表(若页号为-1,则结束输入)n”);printf(“输入页号和辅存地址:”);scanf(%d%d,&lnumber,&dnumber);I=0;While(lnumber !=-1)pageI.lnumber=lnumber; pageI.flag=0; pageI.write=0; pageI.dnumber=dnumber; I+; Printf(“输入页号和辅存地址:”); scanf(%d%d

11、,&lnumber,&dnumber);page_length=I;printf(“输入主存块号,主存块数要小于%d,(以-1结束):”,i);scanf(“%d”,&pnumber);m=0;head=0;while(pnumber !=-1)if(m=i)pagem.pnumber=pnumber; pagem=m; m+;scanf(“%d”,&pnumber);printf(“输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:”);scanf(“%d%x”,&write,&laddress);while(write= =0/write= =1)command(ladd

12、ress,write); /*执行指令*/ printf(“输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:”); scanf(“%d%x”,&write,&laddress); /*main()结束*/3测试(运行时屏幕显示) 输入页表信息,创建页表(若页号为-1,则结束输入) 输入页号和辅存地址:0 11 输入页号和辅存地址:1 12 输入页号和辅存地址:2 13 输入页号和辅存地址:3 21 输入页号和辅存地址:4 22 输入页号和辅存地址:5 23 输入页号和辅存地址:6 121 输入页号和辅存地址:-1 1输入主存块号,主存块号要小于7,(以-1结束):5 8 9

13、 1 1 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 46 逻辑地址是:46 对应的物理地址是:1446 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 432 逻辑地址是:432 对应的物理地址是:2032 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 80f 逻辑地址是:80f 对应的物理地址是:240f 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 c15 逻辑地址是:c15 对应的物理地址是:415 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 38 逻辑地

14、址是:38 对应的物理地址是:1438 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 1828 发生缺页中断*6 淘汰主存块5中的页0,从磁盘121块中调入页6 逻辑地址是:1828 对应的物理地址是:1428 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 1035 发生缺页中断*4 淘汰主存块8中的页1,从磁盘22块中调入页4 逻辑地址是:1035 对应的物理地址是:2035 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 1417 发生缺页中断*5 淘汰主存块9中的页2,从磁盘23块中调入页5 逻辑地址是:1417

15、 对应的物理地址是:2417 输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:1 425 发生缺页中断*1 将页3写回磁盘第21块淘汰主存块1中的页3,从磁盘第12块中调入页1逻辑地址是:425 对应物理地址是:425输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:0 84e发生缺页终端*2淘汰主存块5中的页6,从磁盘第13块中调入页2逻辑地址是:84e 对应物理地址是:144e输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:01001逻辑地址是:1001 对应物理地址是:2001输入指令性质(1-修改,0-不需要,其他-结束程序运行

16、)和逻辑地址:11854发生缺页终端*6将页4写回磁盘第22块淘汰主存块8中的页4,从磁盘第121块中调入页6逻辑地址是:1854 对应物理地址是:2054输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:-11输入指令性质(1-修改,0-不需要,其他-结束程序运行)和逻辑地址:-11思考题1 为实现分页存储管理,需要哪些硬件支持。页表机制、地址变换机构2 实现虚拟存储器,需要哪些硬件支持。(1)请求分页/段的页表或段表机制:请求分页存储管理是建立在分页存储管埋的基础上,并结合虚拟存储系统原理实现的,是目前常用的一种实现虚拟存储器的方式。(2)缺页/段中断机构:作用就是就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。(3)地址变换机构:当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址(相对地址)分为页号页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论