24李后浪 实验五虚拟页式管理

24李后浪 实验五虚拟页式管理

ID:10413781

大小:120.00 KB

页数:5页

时间:2018-07-06

24李后浪 实验五虚拟页式管理_第1页
24李后浪 实验五虚拟页式管理_第2页
24李后浪 实验五虚拟页式管理_第3页
24李后浪 实验五虚拟页式管理_第4页
24李后浪 实验五虚拟页式管理_第5页
资源描述:

《24李后浪 实验五虚拟页式管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告实验项目名称:虚拟页式管理实验时间:2014.5.12实验室:K4-406指导老师:李芳一、实验目的了解通过利用操作系统调用实现用户程序分配内存以及回收所用内存的程序过程,加深对操作系统存储管理机制的理解二、实验内容通过阅读和分析实验程序,学习Windows程序设计、调试和运行的方法。三、实验过程程序修改前,高6位为页号,低10位为页内偏移:源程序为:#include"stdio.h"#include"iostream.h"#definen64/*模拟实验中假定的页表长度*/#definelength10

2、struct{intlnumber;/*页号*/intflag;/*表示该页是否在主存,"1"表示在主存中,"0"表示不在*/intpnumber;/*该页所在主存块的块号*/intwrite;/*该页是否被修改过,"1"表示修改过,"0"表示没有修改过*/intdnumber;/*该页存放在磁盘上的位置,即磁盘块号*/}page[n];/*页表定义*/intm;/*m为该作业在主存中的主存块块数*/intpage_length;/*页表实际长度*/intp[length];/*存放在主存中页的页号*/inthe

3、ad;/*主存中页号队列*/voidpage_interrupt(intlnumber){intj;printf("发生缺页中断*%d",lnumber);/*淘汰页*/j=p[head];p[head]=lnumber;head=(head+1)%m;if(page[j].write==1)printf("将页%d写回磁盘第%d块",j,page[j].dnumber);page[j].flag=0;/*第j页存在标志改为"0"*/page[lnumber].pnumber=page[j].pnumbe

4、r;page[lnumber].flag=1;/*第lnumber页存在标志改为"1"*/page[lnumber].write=0;/*第lunmber页修改标志改为"0"*/printf("淘汰主存块%2d中的页%2d,从磁盘第%d块中调入页%2d",page[j].pnumber,j,page[lnumber].dnumber,lnumber);}/*缺页中断处理函数结束*/voidcommand(unsignedladdress,intwrite){unsignedpaddress,ad,pnumbe

5、r,lnumber;kk:/*取出逻辑地址laddress的页号lnumber(高6位)和页内地址ad*/lnumber=laddress>>10;ad=laddress&0x3ff;if(lnumber>=page_length){printf("不存在该页");return;}if(page[lnumber].flag==1)/*页在主存*/{pnumber=page[lnumber].pnumber;/*从页表中取得块号*/paddress=pnumber<<10

6、ad;/*合并块号和块内地址形成物理地

7、址paddress*/printf("逻辑地址是:%x对应物理地址是:%x",laddress,paddress);if(write==1)/*如果需要写,修改页的修改标志位*/page[lnumber].write=1;}else{page_interrupt(lnumber);/*缺页中断*/gotokk;}}/*命令处理函数结束*/main(){intlnumber,flag,pnumber,write,dnumber;unsignedladdress;inti;/*输入页表的信息,页号从0开始,依次编

8、号,创建页表page*/printf("输入页表的信息,创建页表(若页号为-1,则结束输入))");printf("输入页号和辅存地址:");scanf("%d%d",&lnumber,&dnumber);i=0;while(lnumber!=-1){page[i].lnumber=lnumber;page[i].flag=0;page[i].write=0;page[i].dnumber=dnumber;i++;printf("输入页号和辅存地址:");scanf("%d%d",&lnumber,&dnum

9、ber);}page_length=i;printf("输入主存块号,主存块数要小于%d,(以-1结束):",i);scanf("%d",&pnumber);m=0;head=0;while(pnumber!=-1){if(m<=i){page[m].pnumber=pnumber;page[m].flag=1;p[m]=m;m++;}scanf("%d",&pnumbe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。