操作系统-页式虚拟存储管理程序模拟

上传人:新** 文档编号:509723252 上传时间:2022-09-15 格式:DOC 页数:6 大小:226KB
返回 下载 相关 举报
操作系统-页式虚拟存储管理程序模拟_第1页
第1页 / 共6页
操作系统-页式虚拟存储管理程序模拟_第2页
第2页 / 共6页
操作系统-页式虚拟存储管理程序模拟_第3页
第3页 / 共6页
操作系统-页式虚拟存储管理程序模拟_第4页
第4页 / 共6页
操作系统-页式虚拟存储管理程序模拟_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《操作系统-页式虚拟存储管理程序模拟》由会员分享,可在线阅读,更多相关《操作系统-页式虚拟存储管理程序模拟(6页珍藏版)》请在金锄头文库上搜索。

1、实 验3: 页式虚拟存储管理程序模拟实验目的: 编写程序来模拟计算机的两种调度方式:(1)先进先出算法(2)最近最少使用算法程序设计FIFO()LRU()Msize加1S=? 用户内存空间msize=2Msize32 是否用其他算法继续结 束NY12YN提示出错,重新输入输入算法号S1S4开 始生成地址流形成地址页号FIFO页面置换算法1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。3以后如果再有新页面需要调入,则都按2的规则进行。算法特点:所使用的

2、内存页面构成一个队列。LRU页面置换算法1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。结果分析#include#includeusing namespace std;const int MaxNum=320;/指令数const int M=5;/内存容量int PageOrderMaxNum;/页面请求int SimulateMaxNumM;/页

3、面访问过程int PageCountM,LackNum;/PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数float PageRate;/命中率int PageCount132;bool IsExit(int i)/FIFO算法中判断新的页面请求是否在内存中 bool f=false; for(int j=0;jM;j+)if(Simulatei-1j=PageOrderi)/在前一次页面请求过程中寻找是否存在新的页面请求 f=true; return f;int IsExitLRU(int i)/LRU算法中判断新的页面请求是否在内存中int f=-1; for

4、(int j=0;jM;j+) if(Simulatei-1j=PageOrderi) f=j; return f;int Compare()/LRU算法找出内存中需要置换出来的页面 int p,q;p=PageCount0;q=0; for(int i=1;iM;i+)if(pPageCounti)p=PageCounti;q=i; return q;void Init() /初始化页框for(int k=0;kMaxNum;k+)int n=rand()%320;/随机数产生320次指令PageOrderk=n/10;/根据指令产生320次页面请求 for(int i=0;iMaxNum;

5、i+)/初始化页面访问过程 for(int j=0;jM;j+) Simulateij=-1; for(int q=0;qM;q+)/初始化最久未使用数组 PageCountq=0; void OutPut()/输出int i,j;cout页面访问序列:endl;for(j=0;jMaxNum;j+)coutPageOrderj ;coutendl;cout页面访问过程(只显示前10个):endl;for(i=0;i10;i+)for(j=0;jM;j+)if(Simulateij=-1)cout ;elsecoutSimulateij ;coutendl;cout缺页数= LackNumen

6、dl;cout命中率= PageRateendl;cout-endl;void FIFO()/FIFO算法int j,x=0,y=0;LackNum=0,Init(); for(j=0;jM;j+)/将前五个页面请求直接放入内存中for(int k=0;k=j;k+)if(j=k)Simulatejk=PageOrderj;else Simulatejk=Simulatej-1k; /LackNum+;for(x=M;xMaxNum;x+)for(int t=0;tM;t+)/先将前一次页面访问过程赋值给新的页面访问过程Simulatext=Simulatex-1t; if(!IsExit(x

7、)/根据新访问页面是否存在内存中来更新页面访问过程LackNum+;Simulatexy%M=PageOrderx;y+;PageRate=1-(float)LackNum/(float)MaxNum);/算出命中率OutPut();/最近最不常用调度算法(LRU)void YourChoice(int choice)switch(choice)case 1:cout-endl;coutFIFO算法结果如下:endl;FIFO();break;case 2:cout-endl;coutLRU算法结果如下:endl;LRU();break;case 3:break;default:cout重新选择算法:1-FIFO 2-LRU 3-退出 choice;YourChoice(choice);void main()int choice,i=1;while(i)cout请选择算法:1-FIFO 2-LRU 3-退出 choice;if(choice=3)i=0; else YourChoice(choice);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号