实验五 存储管理.docx
- 文档编号:23722846
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:11
- 大小:18.66KB
实验五 存储管理.docx
《实验五 存储管理.docx》由会员分享,可在线阅读,更多相关《实验五 存储管理.docx(11页珍藏版)》请在冰豆网上搜索。
实验五存储管理
实验五存储管理
1.实验目的:
存储管理的主要功能之一是合理地分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式存储管理中页面置换算法的模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法
2.实验内容:
设计程序实现下述三个算法,并计算下述算法的命中率。
A.OPTIMAL:
最佳置换算法
B.FIFO:
先进先出置换算法
C.LRU:
最近最久未使用置换算法
[预备内容]
地址映射过程中,若发现所要访问的页面不再内存中,则产生缺页中断。
当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。
而用来选择淘汰哪一页的规则叫做页面置换算法。
以下分别是三个算法的设计思想。
OPTIMAL:
最佳置换算法。
其所选择的被淘汰页面,将是以后永不使用的,或是在未来最长时间内不再被访问的页面。
FIFO:
先进先出置换算法。
该算法总是淘汰最先进入内存的页面,既选择在内存中驻留时间最久的页面予以淘汰。
LRU:
最近最久未使用置换算法。
该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的的时间T,当须淘汰一个页面时,选择现有页面中其T值最大的给予淘汰。
在该实现中是选择Timer值最大的淘汰。
2)举例即将被访问的页面如下
page
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
内存情况
FIFO
Block
-1
-1
-1
7
-1
-1
7
0
-1
7
0
1
2
3
1
……
2
3
0
OPT
……
2
0
1
2
0
1
2
0
3
2
4
3
……
LRU
LRU
2
0
1
……
4
0
3
2
0
3
具体实现:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
FIFO
Block
-1
-1
-1
7
-1
-1
7
0
-1
7
0
1
OPT
Block
-1
-1
-1
7
-1
-1
7
0
-1
7
0
1
Block
-1
-1
-1
7
-1
-1
7
0
-1
7
0
1
LRU
参考程序如下:
#include
#defineBsize3
#definePsize20
typedefstructpage
{
intcontent;//页面号
inttimer;//被访问标记
}page;
pageblock[Bsize];//物理块
pagepage[Psize];//页面号串
voidInit(void)
{//初始化
intQString[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 { block[i].content=-1; block[i].timer=0; } for(i=0;i { page[i].content=QString[i]; page[i].timer=0; } } intfindSpace(void) {//查找是否有空闲内存 for(inti=0;i if(block[i].content==-1) returni;//找到空闲内存,返回BLOCK中位置 return-1; } intfindExist(intcurpage) {//查找内存中是否有该页面 for(inti=0;i if(block[i].content==page[curpage].content) returni;//找到内存中有该页面,返回BLOCK中位置 return-1; } intfindReplace(void) {//查找应予置换的页面,被置换的页面的Timer值最大 intpos=0; for(inti=0;i if(block[i].timer>=block[pos].timer) pos=i;//找到应予置换页面,返回BLOCK中位置 returnpos; } voiddisplay(void) {//显示 for(inti=0;i if(block[i].content! =-1) cout< cout< } voidOptimal(void) {//OPTIMAL算法 intexist,space,position; for(inti=0;i { exist=findExist(i); if(exist! =-1) {cout<<"不缺页"< else { space=findSpace(); if(space! =-1) {block[space]=page[i];//block[space].content=page[i].content,block[space].timer=page[i].timer display(); } else {//没有找到空闲分区,需找一个页面进行置换 for(intk=0;k for(intj=i;j { if(block[k].content! =page[j].content) {block[k].timer=1000;}//将来不会用,设置TIMER为一个很大数 else { block[k].timer=j; break; } } position=findReplace(); block[position]=page[i]; display(); } } } } voidLRU(void) {// } voidFIFO(void) {// } voidBlockClear(void) { for(inti=0;i { block[i].content=-1; block[i].timer=0; } } voidmain(void){ Init(); cout<<"|----------页面置换算法----------|"< cout<<"页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1"< cout<<"----------------------------------------------------"< cout<<"选择<1>应用Optimal算法"< cout<<"选择<2>应用FIFO算法"< cout<<"选择<3>应用LRU算法"< cout<<"选择<0>退出"< intselect; while(select) { cin>>select; switch(select) { case0: break; case1: cout<<"Optimal算法结果如下: "< Optimal(); BlockClear(); cout<<"----------------------"< break; case2: cout<<"FIFO算法结果如下: "< FIFO(); BlockClear(); cout<<"----------------------"< break; case3: cout<<"LRU算法结果如下: "< LRU(); BlockClear(); cout<<"----------------------"< break; default: cout<<"请输入正确功能号"< break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 存储管理 实验 存储 管理