南京邮电大学实验报告模版.docx
- 文档编号:675234
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:19
- 大小:402.33KB
南京邮电大学实验报告模版.docx
《南京邮电大学实验报告模版.docx》由会员分享,可在线阅读,更多相关《南京邮电大学实验报告模版.docx(19页珍藏版)》请在冰豆网上搜索。
南京邮电大学实验报告模版
实验报告
(2014/2015学年第一学期)
课程名称
计算机操作系统
实验名称
虚拟存储中页面置换算法的模拟实现
实验时间
2014
年
12
月
19
日
指导单位
南京邮电大学
指导教师
崔衍
学生姓名
班级学号
学院(系)
物联网院
专业
网络工程
实验报告
实验名称
虚拟存储中页面置换算法的模拟实现
指导教师
崔衍
实验类型
上机实验
实验学时
4
实验时间
2014.12.19
一、实验目的和要求
目的:
通过请求页式存储管理中页面置换算法模拟设计,
了解虚拟存储技术的技术特点,
掌握请求页式存储管理的页面置换算法
要求:
(1)设计实现下面算法,并输出下述各种算法的命中率。
①先进先出的算法(FIFO);
②最近最少使用算法(LRR);
③最佳淘汰算法(OPT)先淘汰最不常用的页地址。
(2)多次反复运行改进后的程序,观察并记录运行结果,并分析原因。
二、实验环境(实验设备)
Vc++6.0
二、实验原理及内容
实验三
#include
#include
#include
#include
#defineBsize4
typedefstructBLOCK//声明一种新类型——物理块类型
{
intpagenum;//页号
intaccessed;//访问字段,其值表示多久未被访问
}BLOCK;
intpc;//程序计数器,用来记录指令的序号
intn;//缺页计数器,用来记录缺页的次数
staticinttemp[320];//用来存储320条随机数
BLOCKblock[Bsize];//定义一大小为4的物理块数组
//*************************************************************
voidinit();//程序初始化函数
intfindExist(intcurpage);//查找物理块中是否有该页面
intfindSpace();//查找是否有空闲物理块
intfindReplace();//查找应予置换的页面
voiddisplay();//显示
voidsuijishu();//产生320条随机数,显示并存储到temp[320]
voidpagestring();//显示调用的页面队列
voidOPT();//OPT算法
voidLRU();//LRU算法
voidFIFO();//FIFO算法
//*************************************************************
voidinit()
{
for(inti=0;i { block[i].pagenum=-1; block[i].accessed=0; pc=n=0; } } //------------------------------------------------------------- intfindExist(intcurpage) { for(inti=0;i { if(block[i].pagenum==curpage) returni;//检测到内存中有该页面,返回block中的位置 } return-1; } //------------------------------------------------------------- intfindSpace() { for(inti=0;i { if(block[i].pagenum==-1) returni;//找到空闲的block,返回block中的位置 } return-1; } //------------------------------------------------------------- intfindReplace() { intpos=0; for(inti=0;i { if(block[i].accessed>block[pos].accessed) pos=i;//找到应予置换页面,返回BLOCK中位置 } returnpos; } //------------------------------------------------------------- voiddisplay() { for(inti=0;i { if(block[i].pagenum! =-1) {printf("%02d",block[i].pagenum);} } cout< } //------------------------------------------------------------- voidsuijishu() {intflag=0; cin>>pc; cout<<"******按照要求产生的320个随机数: *******"< for(inti=0;i<320;i++) { temp[i]=pc; if(flag%2==0)pc=++pc%320; if(flag==1)pc=rand()%(pc-1); if(flag==3)pc=pc+1+(rand()%(320-(pc+1))); flag=++flag%4; printf("%03d",temp[i]); if((i+1)%10==0)cout< } } //------------------------------------------------------------- voidpagestring() { for(inti=0;i<320;i++) { printf("%02d",temp[i]/10); if((i+1)%10==0)cout< } } //------------------------------------------------------------- voidOPT() { intexist,space,position; intcurpage; for(inti=0;i<320;i++) { if(i%100==0)getch(); pc=temp[i]; curpage=pc/10; exist=findExist(curpage); if(exist==-1) { space=findSpace(); if(space! =-1) { block[space].pagenum=curpage; display(); n=n+1; } else { for(intk=0;k { for(intj=i;j<320;j++) { if(block[k].pagenum! =temp[j]/10) { block[k].accessed=1000; }//将来不会用,设置为一个很大数 else { block[k].accessed=j; break; } } } position=findReplace(); block[position].pagenum=curpage; display(); n++; } } } cout<<"缺页次数: "< cout<<"缺页率: "<<(n/320.0)*100<<"%"< } //------------------------------------------------------------- voidLRU() { intexist,space,position; intcurpage; for(inti=0;i<320;i++) { if(i%100==0)getch(); pc=temp[i]; curpage=pc/10; exist=findExist(curpage); if(exist==-1) { space=findSpace(); if(space! =-1) { block[space].pagenum=curpage; display(); n=n+1; } else { position=findReplace(); block[position].pagenum=curpage; display(); n++; } } elseblock[exist].accessed=-1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1 for(intj=0;j<4;j++) {block[j].accessed++;} } cout<<"缺页次数: "< cout<<"缺页率: "<<(n/320.0)*100<<"%"< } //------------------------------------------------------------- voidFIFO() { intexist,space,position; intcurpage; for(inti=0;i<320;i++) { if(i%100==0)getch(); pc=temp[i]; curpage=pc/10; exist=findExist(curpage); if(exist==-1) { space=findSpace(); if(space! =-1) { block[space].pagenum=curpage; display(); n=n+1; } else { position=findReplace(); block[position].pagenum=curpage; display(); n++; block[position].accessed--; } } for(intj=0;j block[j].accessed++; } cout<<"缺页次数: "< cout<<"缺页率: "<<(n/320.0)*100<<"%"< } //*****************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南京 邮电大学 实验 报告 模版