虚拟存储器管理-..doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟 存储器 管理
- 资源描述:
-
______________________________________________________________________________________________________________ 淮海工学院计算机工程学院 实验报告书 课程名:《操作系统原理》 题 目: 虚拟存储器管理 班 级: 网络122 学 号: 姓 名 评语: 成绩: 指导教师: 批阅时间: 年 月 日 精品资料 ______________________________________________________________________________________________________________ 一、实验目的 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 二、实验内容 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 三、 实验步骤 1.实验说明 实验中进程的数量、资源的种类以及每种资源的总量Total[j]最好允许动态指定。初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j]均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(包括Need[i,j]、Available[j])则需要由程序根据已知量的值计算产生。 2. 实验流程 主页面 LRU算法 OPT算法 开始 取指令 取指令中的负号 查页表 页标志=1? Y N发生缺页 输出*页号表示发生缺页中断 形成绝对地址 输出绝对地址 有后续指令 N Y 输出缺页数及缺页率 取下条指令 结束 四、 实验源程序 #include<iostream> #include<math.h> #include<malloc.h> using namespace std; #define M 9 #define N 20 typedef struct node1/*页面的数据结构*/ { int num; int age; int state; int blocknum; }page ; typedef struct node2/*内存块的数据结构 */ { int num; int state; int pagenum; int age; }Block; void LRU(Block b[],int n,page p[],int m)/*最近最少使用页面置换算法 */ { int i,j,j1,k,mm,mn,flag=0; float num=0,c=0; for (j=0;j<m;j++) { for (mm=0;mm<n;mm++) { if(b[mm].pagenum==p[j].num) flag=1; } if(flag==1) cout<<endl<<"此次未出现缺页(NF)"<<endl; else if (flag==0) { c++; cout<<endl<<"出现缺页(F)\n"; if (p[j].state==0) { for(i=0;i<n;i++) { if(b[i].state==0) { p[j].blocknum=b[i].num; p[j].state=1; b[i].pagenum=p[j].num; b[i].state=1; break; } } if(i>=n) { for (mn=j-1;mn>=0;mn--) { if(num<n) { num++; for (j1=mn+1;j1<=j-1;j1++) { if(p[mn].num==p[j1].num) { num--; } } } if (num==n) { break; } } for (mm=0;mm<n;mm++) { if (p[mn].num==b[mm].pagenum) { k=mm; break; } } b[k].pagenum=p[j].num; b[k].age=0; p[j].blocknum=b[mm].num; p[j].state=1; } } } cout<<"页面调序列为:"; for (mm=0;mm<n;mm++) { cout<<b[mm].pagenum<<" "; } cout<<endl<<endl; flag=0; num=0; } cout<<"缺页总次数:"<<c<<endl; cout<<"缺页率:"<<c/12<<endl; } void OPT(Block b[],int n,page p[],int m)/*最优页面置换算法 */ { int i,j,k,mm,mn,flag=0; int maxage=-1;float c=0; for (j=0;j<m;j++) { for (mm=0;mm<n;mm++) { if(b[mm].pagenum==p[j].num) flag=1; } if(flag==1) cout<<endl<<"此次未出现缺页(NF)"<<endl; else if (flag==0) { c++; cout<<endl<<"出现缺页(F)\n"; if (p[j].state==0) { for(i=0;i<n;i++) { if(b[i].state==0) { p[j].blocknum=b[i].num; p[j].state=1; b[i].pagenum=p[j].num; b[i].state=1; break; } } if(i>=n) { for (mm=0;mm<n;mm++) { for (mn=j+1;mn<m;mn++) { if (b[mm].pagenum==p[mn].num) { b[mm].age=mn; break; } } if(mn>=m) { b[mm].age=100; } } for(k=0;k<n;k++) { if(maxage<b[k].age) { maxage=b[k].age; mm=k; } } b[mm].pagenum=p[j].num; b[mm].age=0; p[j].blocknum=b[mm].num; p[j].state=1; } } } cout<<"页面序列为:"<<endl; for (mm=0;mm<n;mm++) { cout<<b[mm].pagenum<<" "; } cout<<endl<<endl; flag=0; maxage=-1; } cout<<"缺页总次数:"<<c<<endl; cout<<"缺页率:"<<c/12<<endl; } int display(Block b[],int m,page pag[], int n) { int chose; for(int i=0;i<n;i++) { pag[i].age=0; pag[i].state=0; pag[i].blocknum=-1; } for(i=0;i<m;i++) { b[i].num=i; b[i].state=0; b[i].pagenum=-1; b[i].age=0; } cout<<"1. LRU替换算法\n"<<"2. OPT替换算法\n"<<"0. 退出"<<endl; cout<<"请输入您的选择:"; cin>>chose; return (chose); } void main() { Block b[M]; page pag[N]; int chose; int m,n; cout<<"***********虚拟存储器LRU算法,OPT算法************"<<endl; cout<<"请输入内存块个数:"<<endl; cin>>m; cout<<"请输入页面个数:"<<endl; cin>>n; cout<<"请输入页面序列:"<<endl; for(int i=0;i<n;i++) { cin>>pag[i].num; } while(1){ chose=display(b,m,pag,n); if(chose==1) { LRU(b,m,pag,n); cout<<endl<<endl; } else if(chose==2) { OPT(b,m,pag,n); cout<<endl<<endl; } else if(chose==0) { exit(0); } } } 五、 实验结果 六.实验感想: 这两种算法中,最优置换的缺页率最少,最近最少使用算法次之。 最佳值换算发是无法实现的,但是却可以用来评价其他的算法。LRU算法算法性能比较差,是因为它所依据的条件是各个页面调入内存的机间,而页面调入的先后顺序并不能反应页面的使用情况。 通过此次实验,让我了解到如何设计、编制并调试页面置换算法,加深对内存管理的理解;熟悉了页面置换的相关原理,使用某种高级语言(例如C++语言)直接编写页面置换程序。另外,也让我重新熟悉了C++语言的相关内容,加深了对C++语言的用途的理解。 在做实验时,我们一定要学会独立思考,依赖别人,永远都不能真正提高自己的实践能力,也不能真正的掌握理论知识。要注意联系理论知识,是自己的程序和算法设计更好的达到最初的实验目的。在学习中,我们一定不能不求甚解,懂得提问,能提出有价值的问题,并通过各种途径解决自己的问题才能快速且扎实的掌握知识。 Welcome To Download !!! 欢迎您的下载,资料仅供参考! 精品资料展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




虚拟存储器管理-..doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2312335.html