资源简介

第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 第二题:用先进先出(FIFO)页面调度算法处理缺页中断。

资源截图

代码片段和文件信息

#include 
#include “list“
using namespace std;

#define N 11
#define M 12
#define MEMORYBLOK 10
#define LENGTH 128

struct page {
int number;
int flag;
int frame;
int location;
int change;
};

struct action {
char operate;
int pageNum;
int offset;
};

struct page pageTable[N];
list actionForm;

void init() {

page page0 = {005110};
pageTable[0] = page0;

page page1 = {118120};
pageTable[1] = page1;

page page2 = {219130};
pageTable[2] = page2;

page page3 = {311210};
pageTable[3] = page3;

page page4 = {40-1220};
pageTable[4] = page4;

page page5 = {50-1230};
pageTable[5] = page5;

page page6 = {60-11210};
pageTable[6] = page6;
//
pageTable[7] = page6;

pageTable[8] = page6;

pageTable[9] = page6;

pageTable[10] = page6;


//对PQ的初始化
/*for(int i=0; i Q[i] = -1;
}
for(i=0; i P[i] = -1;
}
for(i=0;i if(pageTable[i].flag == 1){
P[K]=i;
K = (K+1)%MEMORYBLOK;
}
}
for(i=0; i if(pageTable[i].flag == 1) {
int frame = pageTable[i].frame;
Q[frame] = pageTable[i].number;
}
}*/

action a1={‘+‘170};
action a2={‘+‘150};
action a3={‘*‘215};
action a4={‘s‘321};
action a5={‘g‘056};
action a6={‘-‘640};
action a7={‘y‘4.53};
action a8={‘+‘523};
action a9={‘s‘137};
action a10={‘g‘278};
action a11={‘+‘41};
action a12={‘s‘684};

actionForm.push_back(a1);
actionForm.push_back(a2);
actionForm.push_back(a3);
actionForm.push_back(a4);
actionForm.push_back(a5);
actionForm.push_back(a6);
actionForm.push_back(a7);
actionForm.push_back(a8);
actionForm.push_back(a9);
actionForm.push_back(a10);
actionForm.push_back(a11);
actionForm.push_back(a12);
}

void run() {
while( !actionForm.empty() ) {

action a = actionForm.front();

cout<<“*****************************************************“< if(a.operate==‘s‘)
cout<<“操作:存“<<“ 页号:“< else if(a.operate==‘g‘)
cout<<“操作:取“<<“ 页号:“< else if(a.operate==‘y‘)
cout<<“操作:移位“<<“ 页号:“< else
cout<<“操作:“<
int pageNum = a.pageNum;

//如果不在主存中
if (pageTable[pageNum].flag == 0) {
cout<<“*“< }

//计算绝对地址
else{
int result;

result = pageTable[pageNum].frame*LENGTH + a.offset;
cout<<“绝对地址为:“<ame<<“*“<
pageTable[pageNum].change = 1;
}
actionForm.pop_front();
}
}
main() {
init();
run();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2858  2009-12-24 19:33  1.cpp

     文件       4280  2009-12-24 19:33  2.cpp

----------- ---------  ---------- -----  ----

                 7138                    2


评论

共有 条评论