操作系统试验四试验报告记录虚拟内存_第1页
操作系统试验四试验报告记录虚拟内存_第2页
操作系统试验四试验报告记录虚拟内存_第3页
操作系统试验四试验报告记录虚拟内存_第4页
操作系统试验四试验报告记录虚拟内存_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、操作系统实验(四)实验报告记 录虚拟内存作者:日期:操作系统实验(四)虚拟内存1实验题目页面置换算法模拟一一OPT FIFO和LRU算法2、实验目的了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法,如最佳 (Optimal)置换算法、先进先出(Fisrt In First Out)置换算法和最近最久未使用(Least Recently Used置换算法3、实验内容1) OPT算法:需要发生页面置换时,算法总是选择在将来最不可能访问的 页面进行置换。2) FIFO算法:算法总是选择在队列中等待时间最长的页面进行置换。3) LRU算法:如果某一个页面被访问了,它很可能还要被访问;相反,如

2、果 它长时间不被访问,那么,在最近未来是不大可能被访问的。4、程序代码#include#include #include #include #define L 30/页面走向长度最大为 30 using namespace std;int M=4;/ 内存块struct P/定义一个结构体int num,time;p30;int Input(int m,P pL)/打印页面走向状态m=30;int i,j;j=time(NULL);/取时钟时间srand(j);/以时钟时间x为种子,初始化随机数发生器coutvv*页面走向:;for(i=0; im; i+)pi.num=rand( )%10;

3、/产生1到10之间的随即数放到数组 p中pi.time=0; coutvvpi.numvv;coutvvendl;return m;void print(P *page1)/打印当前的页面P *page=new PM;page=page1;for(int i=0; iM; i+) coutvvpagei.numvv;coutvvendl;int Search(int e,P *page1 )/寻找内存块中与 e相同的块号P *page=new PM;page=page1;for(int i=0; ivM; i+)if(e=pagei.num)return i; /返回 i 值 return -

4、1;int Max(P *page1)/寻找最近最长未使用的页面用于OPT算法P *page=new PM;page=page1;int e=page0.time,i=0;while(ivM)/找出离现在时间最长的页面 if(evpagei.time) e=pagei.time; i+;for( i=0; ivM; i+)if(e=pagei.time)returni; / 找到离现在时间最长的页面 返回其块号return -1;int Count(P*page1,int i,int t,P pL)/记录当前内存块中页面离下次使用间隔长 度 用于OPT算法P *page=new PM;page

5、=page1;int count=0;3for(int j=i; jvL; j+)if(paget.num=pj.num )break;/当前页面再次被访问时循环结束 else count+;/否贝U count+1return count;/返回 count的值 int main()int c=1;int m=0,t=0;float n=0;/缺页次数 m=lnput(m,p);/ 调用 input 函数,返回 m 值 M=4;P *page=new PM;/dowhile(c=1|c=2|c=3)int i=0;for(i=0; iM; i+) /初试化页面基本情况 pagei. nu m

6、=0; pagei.time=m-1-i;coutvv1:FIFO页面置换vvendl; cout=0) 存中pi.numcoutvv vvendl; i+;/i 加 1else中 if(t=M)t=0; elsen+;加1paget.num=pi.num; 入内存中coutvvpi.numvv; print(page);t+;块i+;面 coutvv缺页 次数:vvnvv 缺页率 vvn/mvvendl;if(c=2)/LRU页面置换,最近最久未使用/当前页不在内存/缺页次数/把当前页面放/打印当前页面/下一个内存/指向下一个页vvn=0)/如果已在内存块中 paget.time=0;/把与

7、它相同的内存块的时间置 0 for(a=0; avM; a+)if(a!=t)pagea.time+;/ 其它的时间加 1 coutvvpi.numvv;coutvv不缺页vvendl;else III如果不在内存块中n+;III缺页次数加1t=Max(page); III返回最近最久未使用的块号赋值给III进行替换III替换后时间置为0III其它的时间paget.num=pi.num; paget.time=0; coutvvpi.numvv; print(page);for(a=0; a=0)如 果已在内存块中coutvvpi.numvv;coutvv vvendl;i+;elseIII如

8、果不在内存块中int a=0;for(t=0; tvM; t+)if(paget.num=0)a+;III 记录空的内存块数 if(a!=0) III有空内存块int q=M;for(t=0; tvM; t+)if(paget.num=0&qt)q=t;/ 把空内存块中块号最小的找出来pageq.num=pi.num;/ 把缺页换过来 n+;/缺页次数加一coutvvpi.numvv;print(page);i+;elseint temp=0,s;for(t=0; tvM; t+) /寻找内存块中下次使用离现在最久的页面if(tempvCount(page,i,t,p) temp=Count(page,i,t,p); s=t;/把找到的块号赋给spages. nu m=pi. num;n+;coutvvpi.numvv; prin

温馨提示

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

评论

0/150

提交评论