模拟LRU调度!

作者在 2008-10-02 11:23:09 发布以下内容
学习操作系统的人必知的东西。。。
LRU。。。
这里给个高度算法。。。
 
/********************************************************************
 * 题目:            LRU调度算法                                    *
 * 思想:            栈和数组                                       *
 * 作者:            blueboy                                        *
 ********************************************************************/
#include<stdio.h>
#include<stdlib.h>
#define STACKSIZE 1000
#define QUEUESIZE 1000
int main()
{
 int i,j,k;
 int flag=1;                                            /*PageError flag*/
 int cnt=0;                                             /*Stack NO. */
 int PageFault=0;                                       /*Total PageError*/
 int STACK_SIZE=3;                                      /*the size of the stack*/
 int QUEUE_MAX=0;                                       /*the max size of the Queue*/
    int Stack[STACKSIZE];                                  /*the stack*/
    int Queue[QUEUESIZE];                                  /*the Page_Queue8*/
    /* int Queue[QUEUE_MAX]={4,3,2,1,4,3,5,4,3,2,1,5}; */
 printf("Input the size of the stack:\n");
 scanf("%d",&STACK_SIZE);
 printf("Input the queue(Enter ctrl+d(c) to end)\n");
 while(scanf("%d",&k)!=NULL)
  Queue[QUEUE_MAX++]=k;
 printf("Output:\n");
 for(i=0;i<STACK_SIZE;i++)
 {
  Stack[i]=Queue[i];
  printf("Stack %d:\n",++cnt);
  for(j=i;j>=0;j--)
   printf("%d\n",Stack[j]);
  if(flag){
   printf("\tPageFault!\n");
   PageFault++;}
 }
 for(;i<QUEUE_MAX;i++)
 {
  for(k=0;k<STACK_SIZE;k++)
  {
   if(Stack[k]==Queue[i])
   {
    flag=0;
    for(j=k;j<STACK_SIZE-1;j++)
     Stack[j]=Stack[j+1];
    Stack[j]=Queue[i];
    break;
   }
   else
    continue;
  }
  if(k>=STACK_SIZE)
  {
   flag=1;
   for(j=0;j<STACK_SIZE-1;j++)
    Stack[j]=Stack[j+1];
   Stack[j]=Queue[i]; 
  }
  printf("Stack %d:\n",++cnt);
  for(j=STACK_SIZE-1;j>=0;j--)
   printf("%d\n",Stack[j]);
  if(flag)
  {
   printf("\tPageFault!\n");
   PageFault++;
  }
 }
 printf("Total PageFault:%d\n",PageFault);
 return 0;
}
技术分享 | 阅读 1782 次
文章评论,共0条
游客请输入验证码