文档详情

操作系统页面置换C语言.doc

发布:2017-06-03约3.94千字共7页下载文档
文本预览下载声明
#includestdio.h #includestdlib.h #includewindows.h void Print(int bc[],int blockCount) { int i; for(i=0;iblockCount;i++) { printf(%d ,bc[i]); } printf(\n); } Travel(int bc[],int blockCount,int x) { int is_found=0; int i; for(i=0;iblockCount;i++) { if(bc[i]==x) { is_found=1; break; } } return is_found; } void FIFO(int pc[],int bc[],int pageCount,int blockCount) { int i; printf(0:FIFO置换算法\n); if(pageCount=blockCount) { printf(缺页次数为0\n); printf(缺页率为0\n); } else { int noPage=0; int p=0; for(i=0;ipageCount;i++) { //printf(引用页:%d\n,pc[i]); if(!Travel(bc,blockCount,pc[i])) { if(iblockCount) { bc[i]=pc[i]; } else { if(p==blockCount) { p=0; } bc[p]=pc[i]; p++; } noPage++; //printf(物理块情况:\n); //Print(bc,blockCount); } //printf(\n); } printf(FIFO缺页次数为:%d\n,noPage); printf(FIFO缺页率为:%.2f%%\n,(float)noPage/pageCount*100); } } int FoundMaxNum(int a[],int n) { int k,j,i; k=a[0]; j=0; for (i=0;in;i++) { if(a[i]=k) { k=a[i]; j=i; } } return j; } void LRU(int pc[],int bc[],int pageCount,int blockCount) { printf(1:LRU置换算法\n); if(pageCount=blockCount) { printf(缺页次数为0\n); printf(缺页率为0\n); } else { int noPage=0; int i,j,m,p,k; int bc1[100]; for(i=0;iblockCount;i++) { bc1[i]=0; } for(i=0;ipageCount;i++) { // printf(引用页:%d\n,pc[i]); if(!Travel(bc,blockCount,pc[i])) { if(iblockCount) { bc[i]=pc[i]; for(p=0;p=i;p++) { bc1[p]++; } } else { for(j=0;jblockCount;j++) { bc1[j]++; } k=FoundMaxNum(bc1,blockCount); bc[k]=pc[i]; bc1[k]=1; } noPage++; //printf(物理快情况:\n); //Print(bc,blockCount); } else if(Travel(bc,blockCount,pc[i])) { if(iblockCount) { for(j=0;j=i;j++) {
显示全部
相似文档