




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮海工学院计算机工程学院实验报告书课程名: 操作系统原理 题 目: 虚拟存储器 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 操作系统原理 实验报告 - 6 -一、目的与要求(一)目的由于超大规模集成电器电路()技术的发展,使存贮器的容量不断扩大,价格大幅度下降。但从应用角度看,存贮器的容量和成本总会受到一定的限制。所以,提高存贮器的使用效率始终是操作系统研究的重要课题之一,虚拟存贮器技术是用来扩大主存容量的一种重要的方法。 本实习要求学生独立地用高级语言编写几个常用的存贮器分配算法,并能设计一个存贮管理的模拟程序,能对各种算法进行分析比较,评测其性能优劣,从
2、而加深对这些算法的了解。(二)要求为了比较真实地模拟存贮器管理,可预先生成一个大致符合实际情况的指令地址流。然后,通过模拟这样一种指令序列的执行来计算和分析比较各种算法的访问命中率。二、示例题目 本示例给出采用页式分配存贮器管理方案,并通过分析、计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣,另外也考虑改变页面尺寸大小和实际存贮器容量对计算结果的影响,从而可为选择好的算法、合适的页面尺寸和存贮器实际容量提供依据。 本程序是按下述原则生成指令序列的: ()的指令是顺序执行的。 ()的指令是均匀分布在前地址部分。 ()的指令是均匀分布在后地址部分。 示例中选用最佳淘汰算法(OPT)和最
3、近最少使用页面淘汰算法()计算页面命中率。公式为: 页面失败次数 命中率 页地址流长度 假定虚拟存贮容量为,页面尺寸从到,实存容量从页到页。.算法与框图()最佳淘汰算法()。这是一种理想的算法,可用来作为衡量其他算法优劣的依据,在实际系统中是难以实现的,因为它必须先知道指令的全部地址流。由于本示例中已生成了全部地址流,故可计算最佳命中率。 该算法的准则是淘汰已满页表中以后不再访问或是最迟访问的页。这就要求将页表中的页逐个与后继指令访问的所有页比较,如后继指令不再访问此页,则把此页淘汰,不然得找出后继指令中最迟访问的页面予以淘汰。可见最佳淘汰算法要化费较长的运算时间。()最近最少使用页面淘汰算法
4、()。这是一种经常使用的方法,有各种不同的实施方案,这里是采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。如果当前调用页已在页表内,则把它再次调整到链尾。这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。 三、实验步骤与源程序#include "iostream"#include "stdio.h"#include "stdlib.h"using namespace std;#define Max 30/某进程调入内存中的最大
5、页面数#define Size 10/系统为某进程分配的最大物理块数void Init(int Block,int m)/初始化物理块int i;for(i=0;i<m;i+)Blocki=-1;void creat(int Page,int n)/输入页面串引用号int i;for(i=0;i<n;i+)cin>>Pagei;void Init1(int Block1,int m1)int i;for(i=0;i<m1;i+)Block1i=-1;void creat1(int Page,int n1)int i;for(i=0;i<n1;i+)Pagei
6、;void LRU(int Page,int Block1,int n1,int m1)int i,j,max_stay=0,count=0;int get=-1,flag=-1,block_num=-1;int timeSize;for(i=0;i<m1;i+)/初始化timetimei=0;for(i=0;i<n1;i+)for(j=0;j<m1;j+)/有空闲物理块时,页面直接驻入内存空闲块if(Block1j=-1)get=j;/物理块j即将(/等待)驻入新页面break;for(j=0;j<m1;j+)/查找序号相同的页面 if(Block1j=Pagei)/
7、物理块j中页面与当前期望调入内存的页面相同 timej=0;flag=j;break;for(j=0;j<m1;j+) /找到驻留内存时间最久的页面置换出if(timej>max_stay) max_stay=timej;block_num=j; /block_num标记当前序号物理块中页面驻留时间最久if(flag=-1)/不存在相同页面if(get!=-1)/物理块即将(/等待)驻入新页面Block1get=Pagei;/存入页面timeget=0;/当前物理块重新计时for(j=0;j<=get;j+)/已驻入页面的驻留时间加1timej+;get=-1;else/页面
8、调度置换,序号block_num的物理块是驻留时间最久的Block1block_num=Pagei;timeblock_num=0;for(j=0;j<Size;j+)timej+;block_num=-1;max_stay=0;count+;else/待调入页面与序号flag的物理块中页面相同for(j=0;j<m1;j+)timej+;flag=-1;for(j=0;j<m1;j+)/输出物理块中的页面驻入情况cout<<" "<<Block1j;cout<<endl;if(n1>m1)count=count+
9、m1;cout<<"缺页中断次数为:"<<count<<endl;void FIFO(int Page,int Block,int n,int m)int i,j,max_stay=0,count=0;int get=-1,flag=-1,block_num=-1;int timeSize;for(i=0;i<m;i+)timei=0;for(i=0;i<n;i+)for(j=0;j<m;j+)if(Blockj=-1)get=j;break;for(j=0;j<m;j+)if(Blockj=Pagei)flag=
10、j;break;for(j=0;j<m;j+)if(timej>max_stay)max_stay=timej;block_num=j;if(flag=-1)if(get!=-1)Blockget=Pagei;timeget=0;for(j=0;j<=get;j+)timej+;get=-1;elseBlockblock_num=Pagei;timeblock_num=0;for(j=0;j<Size;j+)timej+;block_num=-1;max_stay=0;count+;elsefor(j=0;j<m;j+)timej+;flag=-1;for(j=0
11、;j<m;j+)cout<<" "<<Blockj;cout<<endl;if(n>m)count=count+m;cout<<"缺页中断次数为:"<<count<<endl;void menu()cout<<"-1.LRU页面置换算法-"<<endl;cout<<"-2.FIFO 页面置换算法-"<<endl;cout<<"-3.退出-"<<
12、;endl;cout<<"-默认:-1表示物理块空闲-"<<endl;cout<<"请选择算法"<<endl;void main()int n,m,PageMax,BlockSize,n1,m1,Block1Size; char t; cout<<endl<<"请输入系统为进程分配的物理块数m<=10:" cin>>m; m1=m;Init(Block,m);Init1(Block1,m1);cout<<"请输入总页面数n&
13、lt;=30:"cin>>n;n1=n;cout<<"n请输入页面号引用串:"creat(Page,n); creat1(Page,n1); while(1) menu(); cin>>t; switch(t) case '1':LRU(Page,Block1,n1,m1); continue; case '2':FIFO(Page,Block,n,m); continue; case '3':exit(0);四、测试数据与实验结果 图1 输入要分配的物理块数、页面总数、页面序列号图2 LRU算法的实现图3 FIFO算法的实现五、结果分析与实验体会页面置换算法理解比较容易,这次根据学号要求实现的是LRU和FIFO算法的实现。其实这两种算法的程序编写比较容易,虽然不全是自己编写的,一部分是参考的网上的例题,但是通过对每一语句的理解,自己弄懂了整个程序的执行原理。但是,在编写过程中自己还是遇到了一些问题。最大的一个问题就是两个算法的正确实现,在程序的编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业用工劳动合同
- 2025年娄底考货运从业资格证
- 2025年陇南货运从业资格仿真考题
- 2025年揭阳货运从业资格证考试内容
- 2023年全国乙卷高考真题生物试卷解析
- 高压水流清洗机产业分析报告
- 烟草、盐加工机械市场分析及竞争策略分析报告
- 浸渍、涂布或包覆处理纺织物竞争策略分析报告
- 《天然药物化学成分提取与分离》课程标准
- 上海市装修设计合同范本
- 文化差异下的教育国外的小学音乐教育方式探讨
- 2025年无锡科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年黑龙江建筑职业技术学院高职单招语文历年参考题库含答案解析
- 七年级语文上册课后习题参考答案
- 第四单元《纸的前世今生》第一课时(说课稿)-2023-2024学年五年级下册综合实践活动粤教版
- 四川省绵阳市2025届高三第二次诊断性考试英语试题(含答案无听力原文及音频)
- 医学实验室风险评估报告-临床实验室风险评估-可复制
- 八大员-劳务员模考试题与答案
- 2024危重症患儿管饲喂养护理-中华护理学会团体标准课件
- 脱硫自动化控制-洞察分析
- 医务人员医德医风培训
评论
0/150
提交评论