《2022年操作系统页面置换算法 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统页面置换算法 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验代码:#include #define M 4 /物理页数#define N 20 /需要调入的页数typedef struct page int num; int time; Page; /物理页项,包括调入的页号和时间Page mmM; /4 个物理页int queue120,queue220,queue320; /记录置换的页int K=0,S=0,T=0; /置换页数组的标识int pos=0;/ 记录存在最长时间项void INIT() int i; for(i=0;iM;i+) mmi.num =-1; mmi.time =0; /取得内存中存在时间最久的位置int GetMa
2、x() int max=-1; int i; for(i=0;i max) max=mmi.time ; pos=i; return pos; /检查最长时间不使用页面int longesttime(int fold) int i; int max=-1; for(i=fold;iN;i+) if(mm0.num!=i) mm0.time+; if(mm1.num!=i) mm1.time+; if(mm2.num!=i) mm2.time+; if(mm3.num!=i) mm3.time+; for(i=0;imax) max=mmi.time; pos=i; return pos; 名师
3、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - /检查某页是否在内存int Equation(int fold) int i; for(i=0;iM;i+) if(mmi.num = fold) return i; return -1; /检查物理内存是否已满,-1 表满,其他不满int Check() int i; for(i=0;iM;i+) if(mmi.num = -1) return i; return -1; /先进先出
4、void FIFO(int fold) int i; int a,b,c; a=Equation(fold); /页已存在if(a != -1) /页不存在else b=Check(); /内存还有空闲if(b != -1) mmb.num = fold; /内存已满,需要置换else c=GetMax(); mmc.num = fold; mmc.time = 0; queue1K+=fold; for(i=0;iM;i+) if(mmi.num != -1) mmi.time +; void OPT(int fold) int a,b,c; a=Equation(fold); if(a =
5、 -1)/ 页不在内存b=Check(); /内存还有空闲if(b != -1) mmb.num = fold; /内存已满,需要置换名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - else c=longesttime(fold); mmc.num = fold; mmc.time = 0; queue3T+=fold; void LRU(int fold) int i; int a,b; int p; a=Equation(f
6、old); if(a != -1)/ 页已在内存 /把此项移动到链表最后一项if(a=3)/ 此项已经在最后,不需要做任何改动return; else p=Equation(-1); if(p=-1)/ 链表是满的 for(;a3;a+) mma.num=mma+1.num; mm3.num=fold; else if(p=3)/ 链表不满 for(;ap-1;a+) mma.num=mma+1.num; mma.num=fold; else b=Check(); if(b!=-1)/ 不满mmb.num=fold; else for(i=0;i3;i+) mmi.num=mmi+1.num;
7、 mm3.num=fold; queue2S+=fold; void main() int AN,BN; int i; INIT(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - printf( 请依次输入 %d 个页面号: n,N); for(i=0;iN;i+) scanf(%d,&Ai); for(i=0;iN;i+) Bi=Ai; for(i=0;iN;i+) FIFO( Bi ); printf(FIFO的); p
8、rintf( 调入队列为: ); for(i=0;iK;i+) printf(%3d,queue1i); printf(n 缺页次数为: %6dn 缺页率: %16.6fnn,K,(float)K/N); INIT(); for(i=0;iN;i+) Bi=Ai; for(i=0;iN;i+) LRU( Bi ); printf(LRU的); printf( 调入队列为: ); for(i=0;iS;i+) printf(%3d,queue2i); printf(n 缺页次数为: %6dn 缺页率: %16.6fnn,S,(float)S/N); INIT(); for(i=0;iN;i+) Bi=Ai; for(i=0;iN;i+) OPT( Bi ); printf(OPT 的); printf( 调入队列为: ); for(i=0;iT;i+) printf(%3d,queue3i); printf(n 缺页次数为: %6dn 缺页率: %16.6fnn,T,(float)T/N); 实验结果:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -