《操作系统》实验报告三-页式虚拟存储管理中地址转换和缺页中断55_第1页
《操作系统》实验报告三-页式虚拟存储管理中地址转换和缺页中断55_第2页
《操作系统》实验报告三-页式虚拟存储管理中地址转换和缺页中断55_第3页
《操作系统》实验报告三-页式虚拟存储管理中地址转换和缺页中断55_第4页
《操作系统》实验报告三-页式虚拟存储管理中地址转换和缺页中断55_第5页
全文预览已结束

下载本文档

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

文档简介

实验项目名称页式虚拟存储管理中地址转换和缺页中断实验目的及要求深入了解页式存储管理如何实现地址转换。进一步认识页式虚拟存储管理中如何处理缺页中断。实验内容编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。假定内存64KB,每个内存块1024字节;作业最大支持到64KB,系统中每个作业分得内存块4块。实验步骤缺页处理:根据当前执行指令中逻辑地址的页号查页表,判断该页是否在主存储器中,若该页标志为“0”操作系统处理缺页中断的方法就是查内存分配表,找一个空闲内存块;若无空闲块,查页表,选择一个已在内存的页面,把它暂时调出内存。若在执行过程中该页被修改过,则需将该页信息写回磁盘,否则不必写回;找出该页的磁盘位置,启动磁盘读出该页信息,把磁盘上读出的信息装入第2补找到的内存块,修改页表中该页的标志为“1”;由于产生缺页中断的那条指令没有执行完,所以页面装入后应重新执行被中断的指令。当重新执行该指令时,由于要访问的页面已在内存中,所以可以正常执行。实验环境WindowsXP、visualstudio2005实验结果与分析#include"stdio.h"#definen64#definelength10struct{ intlnumber; intflag; intpnumber; intwrite; intdnumber;}page[n];intm;intpage_length;intp[length];inthead;page_interrupt(intlnumber){ intj; printf("发生缺页3中断%d\n",lnumber); j=p[head]; p[head]=lnumber; head=(head+1)%m; if(page[j].write==1) printf("将页d写回磁盘第Ì块\n",j,page[j].dnumber); page[j].flag=0; page[lnumber].pnumber=page[j].pnumber; page[lnumber].flag=1; page[lnumber].write=0; printf("淘汰内存块%2d中Ì页°3%2d,从䨮磁ä?盘¨¬第̨²%d块¨¦中D调Ì¡Â入¨?页°3%2d\n",page[j].pnumber,j,page[lnumber].dnumber,lnumber);}command(unsignedladdress,intwrite){ unsignedpaddress,ad,pnumber,lnumber;kk: lnumber=laddress>>10; ad=laddress&0x3ff; if(lnumber>=page_length) { printf("不存在该页3\n"); return; } if(page[lnumber].flag==1) { pnumber=page[lnumber].pnumber; paddress=pnumber<<10|ad; printf("逻辑地址是x对应物理地址是%x\n",laddress,paddress); if(write==1) page[lnumber].write=1; } else { page_interrupt(lnumber); gotokk; }}voidmain(){ intlnumber,flag,pnumber,write,dnumber; unsignedladdress; inti; printf("输入页3表的信息,创建页3表(若页°3号为a,则结束输入)\n"); printf("输入页3号和辅存地址:"); 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("输入页3号和辅存地址:"); scanf("%d%d",&lnumber,&dnumber); } page_length=i; printf(""输入指令性质<1-修改,0-不需要,其他-结束程序运行>和逻辑地址:",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",&pnumber); } printf("输入指令性质<1-修改,0-不需要,其他-结束程序运行>和¨ª逻辑地址:""); scanf("%d%x",&write,&laddress); while(write==0||write==1) { command(

温馨提示

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

评论

0/150

提交评论