操作系统os内存管理实验.docx
- 文档编号:25396686
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:13
- 大小:114.95KB
操作系统os内存管理实验.docx
《操作系统os内存管理实验.docx》由会员分享,可在线阅读,更多相关《操作系统os内存管理实验.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统os内存管理实验
xx
xx
《操作系统》实验报告
专业班级
xx
实验地点
xx
学生学号
xx
指导教师
xx
学生姓名
xx
实验时间
xx
实验项目
内存管理
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
实验目的:
存储管理的主要功能之一是合理地分配空间。
本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。
实验要求:
1、过随机数产生一个指令序列,共320条指令。
2、指令序列变换成页地址流
3、计算并输出下述各种算法在不同内存容量下的命中率。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
30分
需求设计
比较规范、基本正确
功能达到实验要求
30分
实验报告
及时递交、填写规范
内容完整、体现收获
40分
说明:
评阅教师:
日期:
年月日
实验内容
1.目的和要求
存储管理的主要功能之一是合理地分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。
2.实验内容
1.过随机数产生一个指令序列,共320条指令。
其地址按下述原则生成:
①50%的指令是顺序执行的;
②25%的指令是均匀分布在前地址部分;
③25%的指令是均匀分布在后地址部分;
2.指令序列变换成页地址流
3.计算并输出下述各种算法在不同内存容量下的命中率。
实验的代码如下:
#include
#include
#include
//S表示产生的随机数,i表示五路快数
ints,i;
intm,n,h;
intk,g,f;
intsum;
floatr;
//page页数
intp[320];
//执行的指令
inta[320];
//physicalblock用户内存容量(物理块)
intpb[32];
voidinitialization();
voidFIFO();
voidLRU();
voidOPT();
voidline();
voidstart();
voidend();
voidmain()
{
start();
//以计算机当前时间作为随机种子
srand((int)time(NULL));
for(n=0;n<320;n+=3)
{
//随机产生一条指令
s=rand()%320+0;
//顺序执行一条指令
a[n]=s+1;
//执行前地址指令M`
s=rand()%(a[n]+1);
a[n+1]=s+1;
s=rand()%(319-a[n+1])+(a[n+1]+1);
a[n+2]=s;
}
for(n=0;n<320;n++)
//得到指令想对的页数
p[n]=a[n]/10;
printf("物理块数\tFIFO\t\tLRU\t\tLFU\n");
line();
for(i=4;i<=32;i++)
{
printf("\n%2d:
",i);
FIFO();
LRU();
OPT();
}
end();
}
//用户内存及相关数据初始化
voidinitialization()
{
for(n=0;n<32;n++)
pb[n]=-1;
sum=0;
r=0;
k=0;
g=-1;
f=-1;
}
//先进先出置换算法
voidFIFO()
{
//进入内存时间长度数组
inttime[32];
//max表示进入内存时间最久的,即最先进出的
intmax;
initialization();
for(m=0;m
time[m]=m+1;
for(n=0;n<320;n++)
{
k=0;
for(m=0;m
//表示内存中已有调入的页面
if(pb[m]==p[n])
{
g=m;
break;
}
for(m=0;m
//用户内存中空的物理块
if(pb[m]==-1)
{
f=m;
break;
}
if(g!
=-1)
g=-1;
else
{//找到最先进入内存的页面
if(f==-1)
{
max=time[0];
for(m=0;m
if(time[m]>max)
{
max=time[m];
k=m;
}
pb[k]=p[n];
//该物理块中页面停留时间置零
time[k]=0;
//缺页数+1
sum++;
}
else
{
pb[f]=p[n];
time[f]=0;
sum++;
f=-1;
}
}
for(m=0;m
=-1;m++)
//物理块中现有页面停留时间+1
time[m]++;
}
r=1-(float)sum/320;
printf("\t\t%6.4f",r);
}
voidLRU()//最近最少使用算法
{
inttime[32];
intmax;
initialization();
for(m=0;m
time[m]=m+1;
for(n=0;n<320;n++)
{
k=0;
for(m=0;m
if(pb[m]==p[n])
{
g=m;
break;
}
for(m=0;m
if(pb[m]==-1)
{
f=m;
break;
}
if(g!
=-1)
{
time[g]=0;
g=-1;
}
else
{
if(f==-1)
{
max=time[0];
for(m=0;m
if(time[m]>max)
{
k=m;
max=time[m];
}
pb[k]=p[n];
time[k]=0;
sum++;
}
else
{
pb[f]=p[n];
time[f]=0;
sum++;
f=-1;
}
}
for(m=0;m
=-1;m++)
time[m]++;
}
r=1-(float)sum/320;
printf("\t\t%6.4f",r);
}
voidOPT()//最少访问页面算法
{
initialization();
inttime_lru[32],time[32],min,max_lru,t;
for(m=0;m
{
time[m]=0;
time_lru[m]=m+1;
}
for(n=0;n<320;n++)
{
k=0;
t=1;
for(m=0;m
if(pb[m]==p[n])
{
g=m;
break;
}
for(m=0;m
if(pb[m]==-1)
{
f=m;
break;
}
if(g!
=-1)
{
time_lru[g]=0;
g=-1;
}
else
{
if(f==-1)
{
if(n<=20)//将最少使用的间隔时间定位个单位
{
max_lru=time_lru[0];
//在未到达”一定时间”的要求时,先采用LRU进行页面置数
for(m=0;m
if(time_lru[m]>max_lru)
{
k=m;
max_lru=time_lru[m];
}
pb[k]=p[n];
time_lru[k]=0;
sum++;
}
else
{
for(m=0;m
//计算一定时间间隔内物理块中页面使用次数
for(h=n-1;h>=n-51;h--)
if(pb[m]==p[h])
time[m]++;
min=time[0];
for(m=0;m
if(time[m] { min=time[m]; k=m; } for(m=0;m //应对出现页面使用次数同样少的情况 if(time[m]==min) t++; if(t>1) //使用次数同样少,将次数相同的页面按照LRU进行页面置换 { max_lru=time_lru[k]; for(m=0;m if(time_lru[m]>max_lru) { k=m; max_lru=time_lru[m]; } } pb[k]=p[n]; time_lru[k]=0; sum++; } } else { pb[f]=p[n]; time_lru[f]=0; sum++; f=-1; } } for(m=0;m =-1;m++) time_lru[m]++; } r=1-(float)sum/320; printf("\t\t%6.4f",r); } voidline()//美化程序,使程序运行时更加明朗美观 { printf("-------------------------"); } voidstart()//表示算法开始 { line(); printf("\n页面置换算法开始\n"); line(); printf("\n"); } voidend()//表示算法结束 { printf("\n"); line(); printf("\n页面置换算法结束\n"); line(); } 实验的结果如下: 实验总结: 通过本次模拟请求页式存储管理中页面置换算法,xx对虚拟存储技术的特点以及请求页式管理的页面置换算法有了进一步的了解。 熟悉了FIFO,LRU,OPT的工作流程,及种算法在不同内存容量下的命中率。 我们通过对比可以看出最近最久未使用置换算法比先进先出的置换算法效率要高些。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 os 内存 管理 实验