南京邮电大学实验报告模版 2

上传人:飞*** 文档编号:44783207 上传时间:2018-06-14 格式:DOC 页数:18 大小:919KB
返回 下载 相关 举报
南京邮电大学实验报告模版 2_第1页
第1页 / 共18页
南京邮电大学实验报告模版 2_第2页
第2页 / 共18页
南京邮电大学实验报告模版 2_第3页
第3页 / 共18页
南京邮电大学实验报告模版 2_第4页
第4页 / 共18页
南京邮电大学实验报告模版 2_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《南京邮电大学实验报告模版 2》由会员分享,可在线阅读,更多相关《南京邮电大学实验报告模版 2(18页珍藏版)》请在金锄头文库上搜索。

1、实实 验验 报报 告告(2014 / 2015 学年学年 第第 一一 学期)学期)课程名称计算机操作系统实验名称虚拟存储中页面置换算法的模拟实现实验时间2014年12月19日指导单位南京邮电大学指导教师崔衍学生姓名班级学号学院(系)物联网院专 业网络工程- 2 -实实 验验 报报 告告实验名称实验名称虚拟存储中页面置换算法的模拟实现指导教师指导教师崔衍实验类型实验类型上机实验上机实验实验学时实验学时4实验时间实验时间2014.12.19一、一、 实验目的和要求实验目的和要求目的:通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法要求:(1

2、)设计实现下面算法,并输出下述各种算法的命中率。先进先出的算法(FIFO);最近最少使用算法(LRR);最佳淘汰算法(OPT)先淘汰最不常用的页地址。(2)多次反复运行改进后的程序,观察并记录运行结果,并分析原因。二、实验环境实验环境(实验设备实验设备)Vc+6.0- 3 -二、二、 实验原理及内容实验原理及内容实验三#include #include#include#include#define Bsize 4typedef struct BLOCK/声明一种新类型物理块类型 int pagenum;/页号int accessed;/访问字段,其值表示多久未被访问BLOCK; int pc;

3、/程序计数器,用来记录指令的序号int n;/缺页计数器,用来记录缺页的次数 static int temp320;/用来存储 320 条随机数BLOCK blockBsize; /定义一大小为 4 的物理块数组/*void init( ); /程序初始化函数int findExist(int curpage);/查找物理块中是否有该页面int findSpace( );/查找是否有空闲物理块int findReplace( );/查找应予置换的页面void display ( );/显示void suijishu( );/产生 320 条随机数,显示并存储到 temp320void page

4、string( );/显示调用的页面队列void OPT( );/OPT 算法void LRU( );/ LRU 算法void FIFO( );/FIFO 算法/*void init( ) for(int i=0;iblockpos.accessed)pos = i;/找到应予置换页面,返回 BLOCK 中位置return pos;/-void display( )- 5 -for(int i=0; ipc;coutselect;couttemp-filename; cintemp-content; if(recent-child=NULL) temp-parent=recent; temp-

5、child=NULL; recent-child=temp; temp-prev=temp-next=NULL; coutchild; while(ttemp-next) ttemp=ttemp-next; if(strcmp(ttemp-filename,temp-filename)=0 return 1; ttemp-next=temp; temp-parent=NULL; temp-child=NULL; temp-prev=ttemp; temp-next=NULL; cout “child=NULL) coutchild; while(temp) if(temp-isdir) cou

6、t “filename “filenamenext; coutfilename; if(recent-child=NULL) coutchild-filename,filename)=0) coutchild-contentchild;- 13 -while(temp-next) if(strcmp(temp-next-filename,filename)=0) coutnext-contentfilename; if(recent-child=NULL) coutchild-filename,filename)=0) recent-child-isopen=1;/设置文件标记为打开 cinr

7、ecent-child-content; recent-child-isopen=0;/设置文件标记为关闭 coutchild; while(temp-next) if(strcmp(temp-next-filename,filename)=0) recent-child-isopen=1;/设置文件标记为打开 cintemp-next-content; recent-child-isopen=0;/设置文件标记为关闭 coutfilename; temp=new fnode; if(recent-child) temp=recent-child; while(temp-next if(str

8、cmp(temp-filename,filename)!=0) coutparent=NULL) temp-prev-next=temp-next; if(temp-next) temp-next-prev=temp-prev; temp-prev=temp-next=NULL; else if(temp-next) temp-next-parent=temp-parent; temp-parent-child=temp-next; delete temp; couttemp-filename; if(recent-child=NULL) temp-parent=recent; temp-ch

9、ild=NULL; recent-child=temp; temp-prev=temp-next=NULL; else ttemp=recent-child; while(ttemp-next) ttemp=ttemp-next; if(strcmp(ttemp-filename,temp-filename)=0 return 1; ttemp-next=temp; temp-parent=NULL; temp-child=NULL; temp-prev=ttemp; temp-next=NULL; return 1; 切换目录 int dir() int i=0,j=0; temp=new

10、fnode; temp=recent; if(temp!=root) cout “child=NULL) coutchild; while(temp) if(temp-isdir) cout “filename “filenamenext; cout“Total: “ directors“ i“files“ j endl; - 17 -四、实验小结四、实验小结(包括问题和解决方法、心得体会、意见与建议等)通过课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。在这短短的两周时间里,通过浏览、阅读有关的

11、资料,学到了很多东西,同时也发现仅仅书本的知识是远远不够的,需要把知识运用到实践中去,能力才能得到提高。 两种页面置换算法 FIFO 和 LRU 理解起来相当容易,但在实际编程实现的时候需要注意各种细节,需要耐心细致,实际编程中遇到一些细节上的小问题确实需要仔细考虑才行。 思考题:1.如果增加分配给作业的内存块数,则将会对作业运行过程中的缺页率产生什么影响?答:LUR 算法将降低缺页率;OPT 算法将降低缺页率;FIFO 算法将提高缺页率 2.为什么一般情况下,LRU 具有比 FIFO 更好的性能?答:FIFO 置换算法设计简单,容易理解。但它的效率并不是总能达到令人满意的效果。这个算法只有在顺序访问地址空间时才能达到理想效果,但根据程序的局部性原理,那些常被访问的页面往往要在主存中停留的最久,FIFO 算法却将会将其换出页面,留下的只是一些新调入的的指令,这将导致内存频繁换页。LRU 则选择在最近一段时间里最近没有使用过的页面予以置换,是与每个页面最后使用的时间又关的。当必须置换一个页面时,LRU 选择过去一段时间里最久未被使用的页面。这种算法以最近的过去作为最近的将来的近似,较好地利用了程序的局部性原理。一般情况下,能取得较好的效果,是经常采用的页面置换算法。 - 18 -五、指导教师评语五、指导教师评语成成 绩绩批阅人批阅人日日 期期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号