解密吧 关注:112,681贴子:389,632
  • 3回复贴,共1

呼叫zwm,看到就进来

只看楼主收藏回复



IP属地:浙江来自Android客户端1楼2014-05-13 23:53回复
    0000000


    IP属地:广东来自Android客户端2楼2014-05-14 00:02
    回复
      /*
      File: E:\Courses\OS\OS2013\实验\实验5.TXT
      2014/5/4, 21:40:49
      在一个请求分页系统中,设页面大小占100个单
      元,假如系统分配给一个作业的物理块数为3,
      试求出用FIFO,LRU,OPT三种算法在程序访问
      过程中所发生的缺页次数及缺页率,每次中断
      时都需要打印出来或者标示出来,格式可以参
      看课件OS009的ppt
      73页。(假设最初页面都在外存)
      1.
      假定此作业的访问地址序列为202,313,252,
      111,546,217,444,544,365,223,398,1
      11。
      2. 输入任意的访问序列,也必须正确显示。
      FIFO:先入先出
      LRU :近期最少使用的优先换出
      OPT :最远的将来才使用的优先换出
      写出LRU和OPT的就行
      */
      #include<iostream>
      #define N 3
      using namespace std;
      //全局物理块,序列顺序,缺页次数,缺页率等
      int iArr[N]={-1,-1,-1};
      int times = 0;
      float percent = 0.0;
      int iOrder[12]={202,313,252,111,546,217,444,544,365,223,398,111};
      int mark = 0;
      int temp = 0;
      //地址序列转变为页码
      void transform(int a[],int n)
      {
      for(int i=0;i<n;i++)
      {
      a[i] /= 100;
      }
      }
      //初始化全局变量
      void c1ear()
      {
      for(int i=0;i<N;i++)
      {
      iArr[i] = -1;
      }
      times = 0;
      percent = 0.0;
      }
      //FIFO算法
      void FIFO()
      {
      for(int i=0;i<12;i++)
      {
      for(int j=0;j<N;j++)
      {
      if(iArr[j]==iOrder[i]) //页码已存在 不需要中断
      {
      mark = 1;
      break;
      }
      else
      {
      mark = 0;
      }
      }
      if(!mark) //页码不存在
      {
      for(j=0;j<N;j++)
      {
      if(iArr[j]==-1) //有多余空间 中断 直接push
      {
      iArr[j] = iOrder[i];
      times++;
      mark = 1;
      break;
      }
      else
      {
      mark = 0;
      }
      }
      if(!mark) //没有多余空间
      {
      temp = iOrder[i];
      for(j=0;j<N-1;j++)
      {
      iArr[j] = iArr[j+1];
      }
      iArr[N-1] = temp;
      times++;
      }
      }
      for(j=0;j<N;j++)
      {
      if(iArr[j]!=-1)
      {
      cout<<iArr[j]<<" ";
      }
      }
      cout<<endl;
      }
      percent = (float) times / 12;
      cout<<"缺页次数:"<<times<<" 缺页率:"<<percent<<endl;
      }
      int main()
      {
      transform(iOrder,12);
      FIFO();
      return 0;
      }


      IP属地:浙江4楼2014-05-22 19:54
      回复