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

📄 qingqiuyeshihuanli.txt

📁 可以实现内存管理
💻 TXT
字号:
#include"string.h"    
#include"stdio.h"    
#define len sizeof(struct page)    
 struct pagetable   
 {int pagenum;   
  int blocknum;   
  char state;   
 }num[1024];   
   
 struct page   
 {   
  int pagenum;   
  int blocknum;   
  struct page *next;   
 }*head=NULL,*tail=NULL;   
   
 int blocktable[3]={0,0,0};   
   print(int a)   
 {   
  int i;   
  printf("\n*****pagenum  blocknum  state\n");   
  for(i=0;i<=a;i++)   
  {   
   num[i].pagenum=i;   
   printf("%8d%8d%8c",num[i].pagenum,num[i].blocknum,num[i].state);   
   printf("\n");   
  }   
  printf("\n");   
 }   
   insert(int n,int m)   
 {   
   struct page*p;   
   p=(struct page*)malloc(len);   
   p->pagenum=n;   
   p->blocknum=m;   
   if(head==NULL)   
   {   
    head=p;   
    tail=p;   
    p->next=NULL;   
   }   
   else   
   {   
    tail->next=p;   
    tail=p;   
   }   
 }   
     main()   
  {   
     int i,j,a,b,c,d;   
     char s;   
     char ch;   
     struct page *p;   
   
    /* #####Initialize pagetable!!!#####*/   
   
     printf("*****Please input the size of process:");   
     scanf("%d",&a);   
     b=a/1024;   
   
     for(i=0;i<=b;i++)   
    {   
      num[i].pagenum=i;   
      num[i].blocknum=-1;   
      num[i].state='F';   
    }   
      print(b);   
   
     /*#####Start to request the page!#####*/   
   
      do   
    {   
       ch=getch();   
      j=0;   
      printf("*****please input the adress:");   
      scanf("%d",&c);   
      if(c>a)   
      printf("\n*****The adress is slop over!\n");   
      else   
     {   
       d=c/1024;   
       s=num[d].state;   
       if(s=='T')   
       print(b);   
       else   
      {   
    for(j=0;j<3;j++)   
    if(blocktable[j]==0)   
       {   
     blocktable[j]=1;   
         num[d].pagenum=d;   
     num[d].blocknum=j;   
     num[d].state='T';   
   
   
     print(b);   
     insert(d,j);   
     break;   
    }   
   
       /*#####Start FIFO arithmetic!!!#####*/   
   
    if(j==3)   
      {   
       int h;   
       h=head->pagenum;   
       num[d].blocknum=head->blocknum;   
       num[d].state='T';   
       num[h].blocknum=-1;   
       num[h].state='F';   
       print(b);   
       p=(struct page*)malloc(len);   
       p->pagenum=d;   
       p->blocknum=head->blocknum;   
       p->next=NULL;   
       head=head->next;   
       tail->next=p;   
       tail=p;   
      }   
    }   
  }   
   
 }while(c>=0);   
} 

⌨️ 快捷键说明

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