西安电子科技大学吧 关注:263,151贴子:5,248,491
  • 0回复贴,共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
求解答!!!!跪谢!!!
为此我特意写了一个算法来验证,算法和我的想法一样,我哪错了?
#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属地:广西1楼2016-01-12 12:24回复