哈尔滨工业大学吧 关注:299,933贴子:8,461,219
  • 5回复贴,共1

关于一个操作系统问题的解答

只看楼主收藏回复

1. 在一个请求分页存储管理系统中,设某作业占有7个页面,进程P的访问次序为1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,当分配给该进程的物理块为4时,请用FIFO算法和LRU置换算法计算访问过程中发生的缺页次数和缺页率以及分别淘汰的页面号序列。
这道题的答案是FIFO算法的缺页次数是:10
序列是:1,2,3,4,5,6
但是我算了几遍,都是12次,而却替换序列都是:1,2,3,4,5,6,1,2
求解答!!!!跪谢!!!


IP属地:广西1楼2016-01-12 11:36回复
    为此我特意写了一个算法来验证,算法和我的想法一样,我哪错了?


    IP属地:广西2楼2016-01-12 11:37
    回复
      #include <iostream>
      #include <vector>
      using namespace std;
      #define FULL 4
      struct Node
      {
      int data;
      Node *next;
      };
      class PageNode
      {
      public:
      Node *head;
      int length;
      vector< int > falutlist;
      int falutnum;
      PageNode()
      {
      length=0;
      head = NULL;
      falutnum = 0;
      }
      void add(int num)
      {
      int found = 0;
      Node *temp;
      for(int i=0;i<length;i++)
      {
      if(num == getNode(i)->data)
      found = 1;
      }
      if(found == 0)
      {
      falutnum++;
      if(length == FULL)
      {
      falutlist.push_back(head->data);
      temp = getNode(1);
      head = temp;
      Node *newnode = new Node();
      newnode->data = num;
      newnode->next =NULL;
      getNode(length-2)->next = newnode;
      }
      else
      {
      temp = new Node();
      temp->data = num;
      temp->next = NULL;
      if(length!=0)
      getNode(length-1)->next = temp;
      length++;
      }
      }
      if(length == 1)
      {
      head = temp;
      }
      }
      Node* getNode(int num)
      {
      Node *temp = head;
      for(int i = 0;i < num;i++)
      {
      if(temp)
      temp = temp->next;
      }
      return temp;
      }
      };
      int main()
      {
      PageNode pn;
      pn.add(1);
      pn.add(2);
      pn.add(3);
      pn.add(4);
      pn.add(2);
      pn.add(1);
      pn.add(5);
      pn.add(6);
      pn.add(2);
      pn.add(1);
      pn.add(3);
      pn.add(7);
      pn.add(6);
      pn.add(3);
      pn.add(2);
      cout<<"fault num is"<<pn.falutnum<<endl;
      for(int i=0;i<pn.falutlist.size();i++)
      {
      cout<<pn.falutlist[i]<<" ";
      }
      }


      IP属地:广西3楼2016-01-12 11:37
      回复
        觉厉


        IP属地:黑龙江来自Android客户端4楼2016-01-12 11:40
        回复
          答案错了呗…随便看了下 好像你写的对的本人学渣勿喷


          来自Android客户端5楼2016-01-12 12:37
          收起回复