⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lih.cpp

📁 操作系统中的虚页调度算法
💻 CPP
字号:
#include<stdio.h>
int max(int x,int y,int z)
{int t;
 if(x>=y)
   {if(x>=z)  t=x;
    else  t=z;
   }
 else{if(y>=z)  t=y;
      else   t=z;
     }
 return t;
}
int compare1(int *p,int m,int n)
{int i,j=0;
 for(i=0;i<3;i++)
    if(*(p+m)==*(p+i))
       j=1;
 if(j==1)   return n;
 else
     {for(i=0;i<2;i++)
	 *(p+i)=*(p+i+1);
      *(p+2)=*(p+m);
      return  (n+1);
     }
}
int compare2(int *p,int m,int n)
{int k,i;
 for(i=0;i<3;i++)
    if(*(p+m)==*(p+i))
      {for(k=i;k<3-i;k++)
	  *(p+k)=*(p+k+1);
       *(p+2)=*(p+m);
       return  n;
      }
 for(i=0;i<2;i++)
    *(p+i)=*(p+i+1);
 *(p+2)=*(p+m);
 return  (n+1);
}
int compare3(int *p,int m,int n,int k)
{int i,j=0,a=1,b=1,c=1,l,t;
 for(i=0;i<3;i++)
    if(*(p+m)==*(p+i))
       j=1;
 if(j==1)   return n;
 else
 { for(l=m+1;l<k;)
      if(*p!=*(p+l))       
	  {a++;
       l++;
	  }
	  else  l=k;
   for(l=m+1;l<k;)  
	  if(*(p+1)!=*(p+l))   
	  {b++;
       l++;
	  }
	  else  l=k; 
   for(l=m+1;l<k;)	  
	  if(*(p+2)!=*(p+l))   
	  {c++;
       l++;
	  }
	  else  l=k;
   t=max(a,b,c);
   if(t==a)   *p=*(p+m);
   else 
   {     if(t==b)   *(p+1)=*(p+m);
     	 else   *(p+2)=*(p+m);
   }
   return  (n+1);
 }
}
void lih()
{int i=0,j=3,m=3,n=3,k,x=-1;
 int buff[20],data[3];
 int *p,*q,*s;
 p=q=s=buff;
 printf("\nx=1:FIFO页面调度算法\nx=2:LRU页面调度算法\nx=3:OPT页面调度算法\n");
 printf("\n请输入你的程序中要调用的所有的页 :\n");
 scanf("%d",&buff[0]);
 while(buff[i]!=1000)
     {i++;
      scanf("%d",&buff[i]);
     }
 for(k=0;k<3;k++)
     data[k]=buff[k];
 printf("\n请输入你选择的页面调度算法\n");
 while(x!=0)
 { scanf("%d",&x);
   if(x==1)
   {
    printf("\n 采用FIFO的页面调度算法 \n");
    printf("\n此时内存中页面为   %d,%d,%d\n",*p,*(p+1),*(p+2));
    for(k=3;k<i;k++)
	{j=compare1(p,k,j);
     printf("\n此时内存中页面为   %d,%d,%d\n",*p,*(p+1),*(p+2));
	}
    printf("\n中断的总次数为 %d\n",j);
   }
   if(x==2)
   {   
	for(k=0;k<3;k++)
    buff[k]=data[k];
    printf("\n  采用LRU的页面调度算法 \n");
    printf("\n此时内存中页面为   %d,%d,%d\n",*q,*(q+1),*(q+2));
    for(k=3;k<i;k++)
    {m=compare2(q,k,m);
     printf("\n此时内存中页面为   %d,%d,%d\n",*q,*(q+1),*(q+2));
    }
    printf("\n中断的总次数为 %d\n",m);
   }
   if(x==3)
   {
	for(k=0;k<3;k++)
    buff[k]=data[k];
    printf("\n  采用OPT页面调度算法 \n");
    printf("\n此时内存中页面为   %d,%d,%d\n",*s,*(s+1),*(s+2));
    for(k=3;k<i;k++)
    {n=compare3(s,k,n,i);
     printf("\n此时内存中页面为   %d,%d,%d\n",*s,*(s+1),*(s+2));
    }
    printf("\n中断的总次数为 %d\n",n);
   }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -