24李后浪 实验五虚拟页式管理.doc_第1页
24李后浪 实验五虚拟页式管理.doc_第2页
24李后浪 实验五虚拟页式管理.doc_第3页
24李后浪 实验五虚拟页式管理.doc_第4页
24李后浪 实验五虚拟页式管理.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

实验报告实验项目名称:虚拟页式管理 实验时间:2014.5.12实验室: K4-406 指导老师:李 芳一、实验目的了解通过利用操作系统调用实现用户程序分配内存以及回收所用内存的程序过程,加深对操作系统存储管理机制的理解二、实验内容通过阅读和分析实验程序,学习Windows程序设计、调试和运行的方法。 三、实验过程程序修改前,高6位为页号,低10位为页内偏移:源程序为:#include stdio.h#include iostream.h#define n 64 /*模拟实验中假定的页表长度*/#define length 10structint lnumber;/*页号*/int flag; /*表示该页是否在主存,1表示在主存中,0表示不在*/int pnumber;/*该页所在主存块的块号*/int write; /*该页是否被修改过,1表示修改过,0表示没有修改过*/int dnumber;/*该页存放在磁盘上的位置,即磁盘块号*/pagen; /*页表定义*/int m; /*m为该作业在主存中的主存块块数*/int page_length;/*页表实际长度*/int plength; /*存放在主存中页的页号*/int head; /*主存中页号队列*/void page_interrupt(int 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页存在标志改为1*/ pagelnumber.write=0;/* 第lunmber页修改标志改为0*/ printf(淘汰主存块%2d中的页%2d,从磁盘第%d块中调入页%2dn, pagej.pnumber,j,pagelnumber.dnumber,lnumber); /*缺页中断处理函数结束*/ void command( unsigned laddress,int write) unsigned paddress,ad,pnumber,lnumber; kk: /*取出逻辑地址laddress的页号lnumber(高6位)和页内地址ad*/ lnumber=laddress10; ad=laddress&0x3ff; if(lnumber=page_length) printf(不存在该页n); return; if(pagelnumber.flag=1) /*页在主存*/ pnumber=pagelnumber.pnumber;/* 从页表中取得块号*/ paddress=pnumber10|ad; /* 合并块号和块内地址形成物理地址paddress*/ printf(逻辑地址是:%x 对应物理地址是:%xn,laddress,paddress); if(write=1)/*如果需要写,修改页的修改标志位*/ pagelnumber.write=1; elsepage_interrupt(lnumber);/*缺页中断*/ goto kk; /*命令处理函数结束*/main( )int lnumber,flag,pnumber,write,dnumber;unsigned laddress;int i;/*输入页表的信息,页号从0开始,依次编号,创建页表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,&lnumber,&dnumber);page_length=i;printf(输入主存块号,主存块数要小于%d,(以1结束):,i);scanf(%d,&pnumber);m=0;head=0;while(pnumber!=-1)if(m10; ad=laddress&0x3ff; paddress=pnumber9; ad=laddress&0x1ff; paddress=pnumber9|ad; 结论:通过本次验证性实验,让我了解到了操作系统是如何进行虚拟页式管理的。当然在实验中我也遇到了许多问题。比如一开始我不清楚高地址6位与低地址10位是如何从逻辑地址转换到物理地址的;当发生缺页时,操作系统是如何进行处理的;修改程序时,将程序改为高地址7位表示页号与低地址9位表示页内偏移。最终我通过问老师弄清楚了这些问题。操作系统先建立页号与辅存的对应关系,再建立页号与主存块的对应关系页表。源程序高地址6位先找到页号,再根据低地址10位进行页内偏移;当发生缺页时,操作系统

温馨提示

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

评论

0/150

提交评论