页面置换算法模拟OPTFIFO及LRU算法.docx
- 文档编号:5715918
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:23
- 大小:16.84KB
页面置换算法模拟OPTFIFO及LRU算法.docx
《页面置换算法模拟OPTFIFO及LRU算法.docx》由会员分享,可在线阅读,更多相关《页面置换算法模拟OPTFIFO及LRU算法.docx(23页珍藏版)》请在冰豆网上搜索。
页面置换算法模拟OPTFIFO及LRU算法
操作系统实验报告
页面置换算法模拟
——OFT、FIFO和LRU算法
班级:
2013级软件工程1班
学号:
XXX
姓名:
萧氏一郎
适用标准文案
数据构造说明:
Memery[10]物理块中的页码
Page[100]页面号引用串
Temp[100][10]协助数组
Voidprint(unsignedintt)协助函数
ViodFIFO()先进先出页面置换算法
ViodLRU()近来最久未使用置换换算法
ViodOPT()最正确置换算法
流程图:
开始
载入序列号,从第0个获得页号
将页号放入物理地点中编
号
NO
引用编号大于物理块数
Yes
号存在物理块中
Yes
NO
依据选择的置换算法达成
NO
页号序列载完?
Yes
结束
出色文档
适用标准文案
源代码:
#include
#include
/*全局变量*/
intmSIZE;/*物理块数*/
intpSIZE;/*页面号引用串个数*/
staticintmemery[10]={0};/*物理块中的页号*/
staticintpage[100]={0};/*页面号引用串*/
staticinttemp[100][10]={0};/*协助数组*/
/*置换算法函数*/
voidFIFO();
voidLRU();
voidOPT();
/*协助函数*/
voidprint(unsignedintt);
voiddesignBy();
voiddownload();
voidmDelay(unsignedintDelay);
/*主函数*/
voidmain()
{
inti,k,code;
出色文档
适用标准文案
printf("请输入物理块的个数(M<=10):
");
scanf("%d",&mSIZE);
printf("请输入页面号引用串的个数(P<=100):
");
scanf("%d",&pSIZE);
puts("请挨次输入页面号引用串(连续输入,无需分开):
");
for(i=0;i scanf("%1d",&page[i]); download(); do{ puts("输入的页面号引用串为: "); for(k=0;k<=(pSIZE-1)/20;k++) { for(i=20*k;(i { if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1))) printf("%d\n",page[i]); else printf("%d",page[i]); } } printf("***********************\n"); printf("*请选择页面置换算法: \t\t\t*\n"); 出色文档 适用标准文案 printf("*----------------------------------------- *\n"); printf("*1.先进先出(FIFO)2.近来最久未使用(LRU) *\n"); printf("*3.最正确(OPT)4.退出 *\n"); printf("***********************\n"); printf("请选择操作: []\b\b"); scanf("%d",&code); switch(code) { case1: FIFO(); break; case2: LRU(); break; case3: OPT(); break; case4: system("cls"); 出色文档 适用标准文案 //system("color0A"); exit(0); default: printf("输入错误,请从头输入: "); } printf("按随意键从头选择置换算法: >>>"); getch(); }while(code! =4); getch(); } /*载入数据*/ voiddownload() { printf("\nFinish.\n载入成功! "); } /*设置延缓*/ voidmDelay(unsignedintDelay) { unsignedinti; for(;Delay>0;Delay--) { for(i=0;i<124;i++) 出色文档 适用标准文案 { printf("\b"); } } } /*显示设计者信息*/ voidprint(unsignedintt) { inti,j,k,l; intflag; for(k=0;k<=(pSIZE-1)/20;k++) { for(i=20*k;(i { if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1))) printf("%d\n",page[i]); else printf("%d",page[i]); } for(j=0;j { for(i=20*k;(i 出色文档 适用标准文案 { if(i>=j) printf("|%d|",temp[i][j]); else printf("||"); } for(i=mSIZE+20*k;(i { for(flag=0,l=0;l if(temp[i][l]==temp[i-1][l]) flag++; if(flag==mSIZE)/*页面在物理块中*/ printf(""); else printf("|%d|",temp[i][j]); } /*每行显示20个*/ if(i%20==0) continue; printf("\n"); } } 出色文档 适用标准文案 printf("----------------------------------------\n"); printf("缺页次数: %d\t\t",t+mSIZE); printf("缺页率: %d/%d\n",t+mSIZE,pSIZE); printf("置换次数: %d\t\t",t); printf("接见命中率: %d%%\n",(pSIZE-(t+mSIZE))*100/pSIZE); printf("----------------------------------------\n"); } /*计算过程延缓*/ voidcompute() { inti; printf("正在进行有关计算,请稍候"); for(i=0;i++<30;printf("\b")); for(i=0;i++<30;printf("")); for(i=0;i++<30;printf("\b")); } /*先进先出页面置换算法*/ voidFIFO() { intmemery[10]={0}; inttime[10]={0};/*记录进入物理块的时间*/ inti,j,k,m; 出色文档 适用标准文案 intmax=0;/*记录换出页*/ intcount=0;/*记录置换次数*/ /*前mSIZE个数直接放入*/ for(i=0;i { memery[i]=page[i]; time[i]=i; for(j=0;j temp[i][j]=memery[j]; } for(i=mSIZE;i { /*判断新页面号能否在物理块中*/ for(j=0,k=0;j { if(memery[j]! =page[i]) k++; } if(k==mSIZE)/*假如不在物理块中*/ { count++; /*计算换出页*/ 出色文档 适用标准文案 max=time[0]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 页面 置换 算法 模拟 OPTFIFO LRU
![提示](https://static.bdocx.com/images/bang_tan.gif)