湖南大学操作系统实验报告3.docx
- 文档编号:11089368
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:16
- 大小:137.13KB
湖南大学操作系统实验报告3.docx
《湖南大学操作系统实验报告3.docx》由会员分享,可在线阅读,更多相关《湖南大学操作系统实验报告3.docx(16页珍藏版)》请在冰点文库上搜索。
湖南大学操作系统实验报告3
实验三内存页面置换算法的设计
一、实习内容
实现最近最久未使用(LRU)置换算法
二、实习目的
LINUX中,为了提高内存利用率,提供了内外存进程对换机制,内存空间的分配和回收均以页为单位进行,一个进程只需将其一部分(段或页)调入内存便可运行,还支持请求调页的存储管理方式。
当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU发出缺中断),由系统将其所需页面调入内存。
这种页面调入方式叫请求调页。
当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。
该程序通过查找页表,得到该页所在外存的物理块号。
如果此时内存未满,能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。
如果内存已满,则须按某种置换算法从内存中选出一页准备换出,是否重新写盘由页表的修改位决定,然后将缺页调入,修改页表。
利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。
整个页面的调入过程对用户是透明的。
本实习要求学生通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。
三、实习题目
实现最近最久未使用(LRU)置换算法
[提示]:
(1)最近最久未使用(LRU)置换算法原理就是:
当需要淘汰某页面时,选择当前一段时间内最久未使用过的页先淘汰,即淘汰距当前最远的上次使用的页。
例如:
分配给该进程的页块数为3,一个20位长的页面访问序列为:
12560,36536,56042,70435,则缺页次数和缺页率按表3-1给出:
缺页次数:
15
缺页率:
15/20=0.75
(2)假定分配给该进程的页块数为3,页面访问序列长度为20。
本实验可以采用数组
结构实现,首先随机产生页面序列,当发生请求调页时,若内存已满,则需要利用LRU算法,将当前一段时间内最久未使用过的页替换出去。
模拟程序的算法如图3-2。
四、源程序及程序中使用的数据结构、符号说明
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
voidshowState(intpage[][20],intvisit[][2],intt);
intpick(intpage[][20],intvisit[][2],inttime,intuseTime[]);
intmin(inta,intb,intc);
intmain(){
srand(time(NULL));
intvisit[20][2];
memset(visit,-1,sizeof(visit));
for(inti=0;i<20;i++)
visit[i][0]=rand()%8;
cout<<"20位长的随机访问序列为:
"< for(inti=0;i<20;i++) cout< (2)< cout< intpage[3][20]; memset(page,-1,sizeof(page)); intuseTime[3]; memset(useTime,0,sizeof(useTime)); for(intt=0;t<20;t++){ intp=pick(page,visit,t,useTime);//选中的页 if(p<0){//命中第p+3页,设置此页命中,帧内容不变 visit[t][1]=1; for(intx=0;x<3;x++) page[x][t]=page[x][t-1]; useTime[p+3]=t; } else{//此页不命中,帧内容替换 visit[t][1]=0; if(t==0){ page[p][t]=visit[t][0]; } else{ for(inty=0;y<3;y++) page[y][t]=page[y][t-1]; page[p][t]=visit[t][0]; } useTime[p]=t; } showState(page,visit,t); } intmiss=0; for(inti=0;i<20;i++){ if(visit[i][1]==0)miss++; } doubleper=1-(double)miss/20; intperi=per*100; cout<<"共miss"< return0; } intpick(intpage[][20],intvisit[][2],inttime,intuseTime[]){ //如果命中了,就返回下标-3,比如如果0帧命中,返回-3 //如果不命中,选择一个最久没有访问到的帧,返回帧下标 cout<<"输出usetime: "; cout< for(inti=0;i<3;i++){//先遍历一遍,看有没有命中的 if(page[i][time-1]==visit[time][0]){ cout<<"time"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南大学 操作系统 实验 报告