实验六 请求分页存储管理Word文档格式.docx
- 文档编号:15224532
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:11
- 大小:73.45KB
实验六 请求分页存储管理Word文档格式.docx
《实验六 请求分页存储管理Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验六 请求分页存储管理Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
(5)将整个过程可视化显示出来。
实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。
实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。
三、设计过程
3.1算法原理分析
OPT算法是未来最远出现,当当前内存中没有正要访问的页面时,置换出当前页面中在未来的访问页中最远出现的页面或再也不出现的页面。
FIFO算法是先进先出,当当前内存中没有正要访问的页面时,置换出最先进来的页面。
LRU算法是最近最久未使用,当当前内存中没有正要访问的页面时,置换出在当前页面中最近最久没有使用的页面。
3.2数据定义
intlength,num_page,count,seed;
//length记录访问串的长度,num_page页面数,count记录缺页次数
intresult[20][30],order[30],a[10];
//result记录结果,order存储访问串,a存储当前页面中的值
intpos1,flag1,flag2,flag3;
//pos1位置变量,flag1等为标志变量
charresult1[30];
//记录缺页数组voidopt()//最佳
voidfifo()//先进先出
boolsearch(intn)//查找当前内存中是否已存在该页
3.3流程图与运行截图
图6.1FIFO()函数流程图;
图2.2OPT算法流程图
四、小结
本次课程设计目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
要求设计随机页面产生程序,并说明随机的性能和其性能可能对算法的影响,对随机性要有一定的参数控制能力;
计算并输出FIFO及LRU算法在不同内存容量下的命中率。
由于上学期做过页面置换的实验,内容包括先进先出算法(FIFO)、最近最久未使用页面置换算法(LRU)和理想淘汰算法(OPT),3种算法思想简单明确,选好数据结构,思路清晰便基本没问题了。
所以相对来说,这次操作系统的课程设计容易许多,只是在之前实验基础上,要附加设计随机页面产生程序,对随机性要有一定的参数控制能力。
对于随机页面产生程序,我们之前没做过,在网上查阅资料,使用了库函数srand()和rand(),实现了简单的随机页面产生程序,功能基本完成。
我们知识所限,没有使用漂亮可视化界面编程实现功能,用简单的C语言编程实现的。
不管怎么样,最终还是实现的本次课程设计要求的。
五、源程序
#include<
iostream>
stdlib.h>
usingnamespacestd;
voidinit()
{memset(a,-1,sizeof(a));
inti;
cout<
<
"
输入访问串的长度:
;
cin>
>
length;
输入种子数控制产生的随机值:
seed;
srand(seed);
产生的随机访问串:
for(i=0;
i<
i++)
{order[i]=rand()%10;
cout<
order[i]<
"
endl;
}
输入页面的个数:
num_page;
}
voidprint()
{inti,j;
表示缺页"
for(j=0;
j<
j++)
printf("
%2d"
order[j]);
for(i=0;
{for(j=0;
{if(result[i][j]==-1)
{printf("
);
}
elseprintf("
result[i][j]);
}cout<
{printf("
%2c"
result1[j]);
}cout<
缺页率:
count<
/"
printf("
=%.1lf"
(count*1.0)/(length*1.0)*100);
%"
boolsearch(intn)//查找当期内存是否已存在
{inti;
{if(a[i]==n)returntrue;
returnfalse;
voidopt()//最佳
{inti,pos[10],flag[10];
while
(1){
flag1=flag2=0;
for(i=0;
{if(!
search(order[i]))
{count++;
result1[i]='
*'
if(a[num_page-1]!
=-1)//表示当前页面已满要淘汰一个
{memset(pos,-1,sizeof(pos));
memset(flag,0,sizeof(flag));
intj,k;
for(j=i;
j++)//找出当前页中的值在将来访问串中对应的最近位置
{for(k=0;
k<
k++)
{if(order[j]==a[k]&
&
flag[k]==0)
{pos[k]=j;
flag[k]=1;
}
}
cout<
intmax=-10,max_pos;
for(k=0;
k++)//找出位置最远的那个值
{if(pos[k]==-1)//未出现则跳出,替换该值
{max_pos=k;
break;
elseif(max<
pos[k])
{max=pos[k];
max_pos=k;
a[max_pos]=order[i];
}
else//还有空页
{for(intj=0;
{if(a[j]==-1)
{a[j]=order[i];
elseresult1[i]='
'
for(intj=0;
{result[j][i]=a[j];
}
print();
if(flag1==0&
flag2==0)break;
voidfifo()//先进先出
{inti,thisn=0;
while
(1)
{count=0;
flag1=flag2=0;
for(i=pos1;
result1[i]='
{a[thisn]=order[i];
thisn++;
if(thisn>
=num_page)thisn=0;
else
voidmain()//主函数
{
intm;
1.OPT.\n"
2.FIFO.\n"
0.退出.\n"
选择所要操作:
scanf("
%d"
&
m);
switch(m)
{case1:
init();
fifo();
main();
case2:
lru();
case0:
default:
选择错误,重新选择."
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验六 请求分页存储管理 实验 请求 分页 存储 管理