实验二虚拟存储器(2)

2019-01-10 11:44

#include\

#define size 128 //块长 #define N 12 typedefstruct {

int pagenum; int flag; int block;

int location;//页表定义

}table;

typedefstruct//操作表定义 {

char ope[10]; int pagenum; int address;

}list; table p1[7] =

{ { 0,1,5,11 },{ 1,1,8,12 },{ 2,1,9,13 },{ 3,1,1,21 },{ 4,0,NULL,22 },{ 5,0,NULL,23 },{ 6,0,NULL,121 } }; void main() {

list p2[N];

int i, page, flag, memaddress;

printf(\); for (i = 0;i

printf(\页号= \); scanf(\, &p2[i].ope); printf(\); scanf(\, &p2[i].pagenum); printf(\);

scanf(\, &p2[i].address); page = p2[i].pagenum; flag = p1[page].flag;

if (flag == 0 && p2[i].pagenum<7)//不在主存 { }

elseif (p2[i].pagenum<7) {

memaddress = p1[page].block*size + p2[i].address;

printf(\物理地址=block(%d)*size(%d)+address(%d);\\n 物理地址= %ld\\n\\n\, printf(\, p2[i].pagenum);

p1[page].block, size, p2[i].address, memaddress);

}

}

} else

printf(\);

#include\#include\

usingnamespace std;//使用setw()时用到的头文件 #include\#include\#define Max 30 #define Size 10 { {

Block[i]=-1; } }

int i;

//某进程调入内存中的最大页面数 //系统为某进程分配的最大物理块数

//初始化物理块

void Init(int Block[],int m) for(i=0;i

void creat(int Page[],int n) { {

cin>>Page[i]; } }

void FIFO(int Page[],int Block[],int n,int m)

{//max_stay:比较当前内存中页面驻留的最久时间,count:统计页面置换次数 //get:某物理块是否等待驻入新页面(-1:否) //flag:标记当前序号页面是否已驻入内存(-1:否) //block_num:驻留内存时间最长的页面所在的物理块序号 //time[]标记对应序号的物理块中页面驻留时间 int i,j,max_stay=0,count=0; int get=-1,flag=-1,block_num=-1; int time[Size]; float p=0.0;

for(i=0;i

for(i=0;i

for(j=0;j

for(j=0;j

if(time[j]>max_stay) {

max_stay=time[j];

block_num=j; //block_num标记当前序号物理块中页面驻留时间最久 }

if(Block[j]==Page[i])//物理块j中页面与当前期望调入内存的页面相同

//物理块j即将(/等待)驻入新页面

for(j=0;j

//输入页面串引用号

}

if(flag==-1) //不存在相同页面 { {

cout<<\<

Block[get]=Page[i]; for(j=0;j<=get;j++) {

time[j]++; } get=-1; }

else //页面调度置换,序号block_num的物理块是驻留时间最久的 {

cout<<\<

cout<<\内存已满,最老页面\<

Block[block_num]=Page[i]; time[block_num]=0; for(j=0;j

time[j]++; }

block_num=-1; max_stay=0; count++; } }

else //待调入页面与序号flag的物理块中页面相同 {

cout<<\<

for(j=0;j

time[j]++; }

//存入页面

//已驻入页面的驻留时间加

time[get]=0; //当前物理块重新计时

if(get!=-1) //物理块即将(/等待)驻入新页面

flag=-1; }

for(j=0;j

cout<

cout<

p=count*100/n;

cout<<\缺页率为:\<

void main() {

int n,m,Page[Max],Block[Size]; char p;

cout<<\先进先出FIFO页面置换算法*******\<

cout<>m; if(m>Size||m<1) {

cout<<\警告:输入的数据错误!\<

elsebreak; }

Init(Block,m);

cout<<\请输入总页面数(n<=30):\; cin>>n;

cout<<\请输入页面号引用串:\; creat(Page,n);

cout<<\算法过程如下:\<

cout<<\是否继续?Y/N \; cin>>p; cout<


实验二虚拟存储器(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:天气学原理题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: