- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 力帆 2019款 KP350 摩托车适用2019款2020款 用户说明书 保养手册.pdf
- 2025-2031年中国COSPLAY服装行业市场全景评估及投资战略研究报告.docx
- 解数咨询-全价猫主粮行业调研报告:醇粹、高爷家.docx VIP
- 剑桥少儿英语二级下册unit2.ppt VIP
- VSD负压引流术护理查房.pptx VIP
- 大众奥迪诊断系统ODIS7.21用户手册.pdf VIP
- 《混合动力电动汽车》课件.ppt VIP
- 网神日志审计系统技术白皮书.doc VIP
- 高级英语第一册-U10-The-Artist-in-America.ppt VIP
- 狗主粮行业调研报告解数咨询14117mb.pptx VIP
文档评论(0)