📄 lab18.c
字号:
#include<stdio.h>void print_mem(int mem[],int m) { int i; for(i=0;i<m;i++) printf("\t%d",mem[i]); printf("\n");}int optimal1(int p,int ref[],int n,int c) { int i; for(i=c+1;i<n;i++) { if(ref[i]==p) return i; } return -99;}int optimal2(int index[],int m) { int i,max=-99; for(i=0;i<m;i++) if(max<index[i]) max=index[i]; return max;}int main() { int ref[25],mem[10],index[10],i,j,k,flag,n,m,p,pf,ch,fifo_pf,o_pf; printf("\t\tPAGE REPLACEMENT STRATEGIES - FIFO & Optimal \n\n"); printf("Enter the number of pages in the reference string:"); scanf("%d",&n); printf("\nEnter the reference string:\n"); for(i=0;i<n;i++) { printf("Enter the page reference - %d: ",i+1); scanf("%d",&ref[i]); } printf("Enter the number of frames:"); scanf("%d",&m); //FIFO Algorithm printf("\n\n\tFIFO Algorithm\n\n"); j=0; pf=0; for(i=0;i<m;i++) mem[i]=-1; for(i=0;i<n;i++) { p=ref[i]; flag=0; for(k=0;k<m;k++) if(mem[k]==p) flag=1; if(flag!=1) { mem[j]=p; j=(j+1)%m; pf++; } printf("%d --",p); print_mem(mem,m); } printf("\nNumber of page faults = %d\n",pf); fifo_pf=pf; //Optimal Algorithm printf("\n\n\tOPTIMAL Algorithm\n\n"); j=0; pf=0; for(i=0;i<m;i++) mem[i]=-1; for(i=0;i<n;i++) { p=ref[i]; flag=0; for(k=0;k<m;k++) if(mem[k]==p) { flag=1; break; } else if(mem[k]==-1) { mem[k]=p; pf++; flag=1; break; } if(flag==0) { pf++; for(k=0;k<m;k++) index[k]=optimal1(mem[k],ref,n,i); for(k=0;k<m;k++) if(index[k]==-99) { mem[k]=p; flag=1; break; } if(flag==0) { j=optimal2(index,m); for(k=0;k<m;k++) if(mem[k]==ref[j]) mem[k]=p; } } printf("%d --",p); print_mem(mem,m); } printf("\nMumber of page faults = %d\n",pf); o_pf=pf; if(o_pf==fifo_pf) printf("\nBoth the replacement strategies are efficient."); else if(o_pf<fifo_pf) printf("\nOptimal Page Replacement Strategy is efficient."); else printf("\nFIFO Page Replacement Strategy is efficient.");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -