操作系统页式虚拟存储管理程序模拟.docx
- 文档编号:25235908
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:8
- 大小:96.17KB
操作系统页式虚拟存储管理程序模拟.docx
《操作系统页式虚拟存储管理程序模拟.docx》由会员分享,可在线阅读,更多相关《操作系统页式虚拟存储管理程序模拟.docx(8页珍藏版)》请在冰豆网上搜索。
操作系统页式虚拟存储管理程序模拟
操作系统-页式虚拟存储管理程序模拟
FIFO页面置换算法
1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。
2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。
3以后如果再有新页面需要调入,则都按2的规则进行。
算法特点:
所使用的内存页面构成一个队列。
LRU页面置换算法
1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。
2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。
算法特点:
每个页面都有属性来表示有多长时间未被CPU使用的信息。
结果分析
#include
#include
usingnamespacestd;
constintMaxNum=320;//指令数
constintM=5;//内存容量
intPageOrder[MaxNum];//页面请求
intSimulate[MaxNum][M];//页面访问过程
intPageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数
floatPageRate;//命中率
intPageCount1[32];
boolIsExit(inti)//FIFO算法中判断新的页面请求是否在内存中
{boolf=false;
for(intj=0;j {if(Simulate[i-1][j]==PageOrder[i])//在前一次页面请求过程中寻找是否存在新的页面请求 {f=true;} } returnf; } intIsExitLRU(inti)//LRU算法中判断新的页面请求是否在内存中 {intf=-1; for(intj=0;j {if(Simulate[i-1][j]==PageOrder[i]) {f=j;} } returnf; } intCompare()//LRU算法找出内存中需要置换出来的页面 {intp,q; p=PageCount[0]; q=0; for(inti=1;i {if(p {p=PageCount[i]; q=i;} } returnq; } voidInit()//初始化页框 {for(intk=0;k {intn=rand()%320;//随机数产生320次指令 PageOrder[k]=n/10;//根据指令产生320次页面请求} for(inti=0;i {for(intj=0;j {Simulate[i][j]=-1;} } for(intq=0;q {PageCount[q]=0;} } voidOutPut()//输出 {inti,j; cout<<"页面访问序列: "< for(j=0;j {cout< cout< cout<<"页面访问过程(只显示前10个): "< for(i=0;i<10;i++) {for(j=0;j {if(Simulate[i][j]==-1) cout<<""; else cout< } cout< } cout<<"缺页数="< cout<<"命中率="< cout<<"--------------------------------------------------------------"< } voidFIFO()//FIFO算法 {intj,x=0,y=0; LackNum=0, Init(); for(j=0;j {for(intk=0;k<=j;k++) {if(j==k) Simulate[j][k]=PageOrder[j]; else Simulate[j][k]=Simulate[j-1][k]; } //LackNum++; } for(x=M;x {for(intt=0;t {Simulate[x][t]=Simulate[x-1][t];} if(! IsExit(x))//根据新访问页面是否存在内存中来更新页面访问过程 {LackNum++; Simulate[x][y%M]=PageOrder[x]; y++; } } PageRate=1-((float)LackNum/(float)MaxNum);//算出命中率 OutPut(); } //最近最不常用调度算法(LRU) voidYourChoice(intchoice) {switch(choice) {case1: cout<<"----------------------------------------------------------"< cout<<"FIFO算法结果如下: "< FIFO(); break; case2: cout<<"----------------------------------------------------------"< cout<<"LRU算法结果如下: "< LRU(); break; case3: break; default: cout<<"重新选择算法: 1--FIFO2--LRU3--退出"< cin>>choice; YourChoice(choice); } } voidmain() {intchoice,i=1; while(i) {cout<<"请选择算法: 1--FIFO2--LRU3--退出"< cin>>choice; if(choice==3) {i=0; } else {YourChoice(choice);} } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 虚拟 存储 管理程序 模拟
![提示](https://static.bdocx.com/images/bang_tan.gif)