完整word版实验四操作系统存储管理实验报告.docx
- 文档编号:1458463
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:19
- 大小:226.63KB
完整word版实验四操作系统存储管理实验报告.docx
《完整word版实验四操作系统存储管理实验报告.docx》由会员分享,可在线阅读,更多相关《完整word版实验四操作系统存储管理实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
完整word版实验四操作系统存储管理实验报告
实验四操作系统存储管理实验报告
一、实验目的
存储管理的主要功能之一是合理地分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
二、实验内容
(1)通过计算不同算法的命中率比较算法的优劣。
同时也考虑了用户内存容量对命中率的影响。
页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。
在本实验中,假定页面大小为1k,用户虚存容量为32k,用户内存容量为4页到32页。
(2)produce_addstream通过随机数产生一个指令序列,共320条指令。
A、指令的地址按下述原则生成:
1)50%的指令是顺序执行的
2)25%的指令是均匀分布在前地址部分
3)25%的指令是均匀分布在后地址部分
B、具体的实施方法是:
1)在[0,319]的指令地址之间随机选取一起点m;
2)顺序执行一条指令,即执行地址为m+1的指令;
3)在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;
4)顺序执行一条指令,地址为m’+1的指令
5)在后地址[m’+2,319]中随机选取一条指令并执行;
6)重复上述步骤1)~5),直到执行320次指令
C、将指令序列变换称为页地址流
在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
第0条~第9条指令为第0页(对应虚存地址为[0,9]);
第10条~第19条指令为第1页(对应虚存地址为[10,19]);
。
。
。
。
。
。
第310条~第319条指令为第31页(对应虚存地址为[310,319]);
按以上方式,用户指令可组成32页。
(3)计算并输出下属算法在不同内存容量下的命中率。
1)先进先出的算法(FIFO);
2)最近最少使用算法(LRU);
3)最佳淘汰算法(OPT);
4)最少访问页面算法(LFR);
其中3)和4)为选择内容
三、系统框图
五运行结果
首先打印出产生的指令信息,第一列为指令序列号,第二列为指令地址,第三列为指令所在的虚页号
选择FIFO调度算法,并且内存从3也开始逐渐增加到32页,打印出缺页次数缺页率,命中率
选择LRU调度算法,并且内存从3也开始逐渐增加到32页,打印出缺页次数缺页率,命中率
选择OPT调度算法,并且内存从3也开始逐渐增加到32页,打印出缺页次数缺页率,命中率
六实验程序
产生指令流文件produce_addstream.h
#ifndefPRODUCE_ADDSTREAM_H
#definePRODUCE_ADDSTREAM_H
#include
#include
#include
#include
#include
usingnamespacestd;
#definerandom(x)(rand()%x)
#defineMAX_LENGTH320
structproduce
{
intnum;//指令序号
intzhiling;//指令地址
intvirtualpage;//指令虚页号
produce*next;
};
structproduce*creatlist();
voidinsert(structproduce*first,structproduce*s);//插入一个节点(尾插法)
voidprint(structproduce*first);//打印函数
intmax(vector
structproduce*creatlist()
{
srand((int)time(0));
structproduce*first=newproduce;
first->next=NULL;
intm=0,m1=0;
/*
intyanzheng[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
for(inti=0;i<(MAX_LENGTH/4);i++)
{
structproduce*s0;
s0=newproduce;
s0->num=i*4+0;
s0->zhiling=yanzheng[i*4+0];
s0->virtualpage=s0->zhiling;
insert(first,s0);
structproduce*s1;
s1=newproduce;
s1->num=i*4+1;
s1->zhiling=yanzheng[i*4+1];
s1->virtualpage=s1->zhiling;
insert(first,s1);
structproduce*s2;
s2=newproduce;
s2->num=i*4+2;
s2->zhiling=yanzheng[i*4+2];
s2->virtualpage=s2->zhiling;
insert(first,s2);
structproduce*s3;
s3=newproduce;
s3->num=i*4+3;
s3->zhiling=yanzheng[i*4+3];
s3->virtualpage=s3->zhiling;
insert(first,s3);
}
//*/
//*
for(inti=0;i<(MAX_LENGTH/4);i++)
{
structproduce*s0;
s0=newproduce;
m=random(MAX_LENGTH);
s0->num=i*4+0;
s0->zhiling=m+1;
s0->virtualpage=s0->zhiling/10;
insert(first,s0);
m1=random(m+1);
structproduce*s1;
s1=newproduce;
s1->num=i*4+1;
s1->zhiling=m1;
s1->virtualpage=s1->zhiling/10;
insert(first,s1);
structproduce*s2;
s2=newproduce;
s2->num=i*4+2;
s2->zhiling=m1+1;
s2->virtualpage=s2->zhiling/10;
insert(first,s2);
structproduce*s3;
s3=newproduce;
s3->num=i*4+3;
s3->zhiling=random(MAX_LENGTH-m1-2)+m1+2;
s3->virtualpage=s3->zhiling/10;
insert(first,s3);
}//*/
returnfirst;
}
voidinsert(structproduce*first,structproduce*s)
{
structproduce*r=first;
structproduce*p;
while(r){p=r;r=r->next;}
p->next=s;p=s;
p->next=NULL;
}
voidprint(structproduce*first)//打印函数
{
structproduce*p;
p=first->next;
cout<<"随机产生的指令的信息如下"< cout<<"指令序号"<<"指令地址"<<"指令虚页号"< while(p) { cout< p=p->next; } } intmax(vector { inta=0,position=0; for(inti=0;i { if(page[i][1]>a) { a=page[i][1]; position=i; } } returnposition; } #endif 先来先出调度算法: fifo.h #ifndefFIFO_H #defineFIFO_H voidfifo(structproduce*first,intMaxpage) { vector for(inti=0;i intrear=0;//定义一个变量,指向要被替换的位置 intpages;//定义变量保存当前指令的所在的地址 intcount1=0;// intcount2=0;//缺页次数 intfind=1; structproduce*p=first->next; while(p) { pages=p->virtualpage; for(inti=0;i { if(page[i]==-1||count1 { page[i]=pages; count1++; count2++; find=1; break; } elseif(page[i]==pages) { find=1; break; } find=0; } if(find==0) { page[rear]=pages; rear++; rear=rear%Maxpage; count2++; } p=p->next; } cout<<"FIFO调度算法缺页次数缺页率命中率"< cout< } #endifFIFO_H LRU调度算法lru.h #ifndefLRU_H #defineLRU_H #include usingnamespacestd; //intmax(vector voidlru(structproduce*first,intMaxpage) { structproduce*p=first->next; vector (2)); intcount1=0;//定义内存已经被占用的页数 intcount2=0;/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整word版实验四 操作系统存储管理实验报告 完整 word 实验 操作系统 存储 管理 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)