《页面置换算法(操作系统试验)》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《页面置换算法(操作系统试验)》.doc

实验4 页面置换算法(2学时) 一、实验目的 通过实验加强对虚拟存储管理中页面置换算法的理解和掌握。 二、实验内容 编写实现 三、实验要求 1、任意给出一组页面访问顺序(如页面走向是1、2、5、7、5、7、1、4、3、5、6、4、3、2、1、5、2)。 2、分配给该作业一定的物理块(如3块、4块等)。 3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。 4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。 5、通过给出特殊的页面访问顺序,分配不同的物理块,利用FIFO算法计算其缺页率,进一步理解Belady现象。 6、(附加)实现CLOCK置换算法,修改位可在确定页面号时直接任意给出。 代码部分: #include stdlib.h #include iostream.h #include time.h void rand(int n,int p[])//这函数是产生n个1~10的随机数放到p[]数组里面 { int START=1; int END=10; int v; int i; int a; srand(time(NULL)); for(i=0; in; i++) {v=rand()%(END-START+1)+START; p[i]=v; coutv; } } struct Pro { int num,time; //num存放具体的内容,time在不同算法里面有不同的意义 }; //它们是物理块和页面的数据结构 int Input(int m,int N,Pro *p,Pro *page)//完成p[]数组和page[]的初始化工作 { //p[]数组是存放页面的空间,m是页面的长度 //page[]是可以使用的物理块,N是物理块的大小 coutendl请输入各页面号endl; int *p2=new int[m]; rand(m,p2); for(int i=0;im;i++) { p[i].num=p2[i]; p[i].time=0; } for(i=0;iN;i++)//初试化页面基本情况 { page[i].num=0; page[i].time=N+2-i; } return m; } int Search(int e,Pro *page,int N)//算法里面都要用到它。 {//它是找e页是否在page物理块中,N是物理块的大小 for(int i=0;iN;i++) if(e==page[i].num) return i;//如果找到,就返回在物理块中的位置给Search return -1;//找不到,就返回-1 } int Max(Pro *page,int N)//LRU算法用到的 {//找出在page块中,time最大的值和位置,同时位置返回 //time最大,就代表了最久没被使用的数 int e=page[0].time,i=0; int k=0; while(iN)//找出离现在时间最长的页面 { if(epage[i].time) { k=i; } i++; } return k; } int Compfu(Pro *page,int i,int t,Pro p[],int m)//OPT算法用到的 { //找出如果page[t]要等于p,并且zai p[i]~p[m]这个区间内,走的次数,最大的数 int count=0;//count是保存走的步数 for(int j=i;jm;j++) { if(page[t].num==p[j].num )break;//如果相等,跳出循环 else count++;//不等就步数加1 } return count; } int Min(Pro page[],int N)//LFU算法用到的 { //page[]是可以使用的物理块,N是物理块的大小 //找到出现次数最小的的数,并把位置返回 int k=0; int min=page[0].time; for(int i=0;iN;i++) { if(minpage[i].time) k=i; } return k; } void FIFO(Pro p[],Pro page[],int m,int N)//p[]数组是存放页面的空间,m是页面的长度 { //page[]是可以使用的物理块,N是物理块的大小 float

文档评论(0)

ycwf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档