作了一个实验出现了一下错误不知道啥意思可以帮我看一下不
#include <stdio.h>#define n 64 /*模拟实验中假定的页表长度*/
#define length 10 //后面定义了页号数组p[length],意味着最多length个页面同时在内存中
struct
{
int lnumber;/*页号 logic pagenumber*/
int flag; /*表示该页是否在内存,"1"表示在内存中,"0"表示不在*/
int pnumber;/*该页所在内存的物理块号physical number,-1表示不在内存*/
int write; /*该页是否被修改过,"1"表示修改过,"0"表示没有修改过*/
int dnumber;/*该页存放在磁盘上的位置,即磁盘块号disk number*/
}page[n]; /*页表定义*/
int m; /*m为该作业在内存中的内存块块数*/
unsigned int page_length;/*页表实际长度*/
int p[length]; /*存放在内存中页的页号数组(内存中最多可装入length个页面)*/
int head; /*内存中页号队列*/ //head始终指向进入内存最早的页面,也就是将被淘汰页
void page_interrupt(int lnumber)
{
//第lnumber页缺页中断处理
int j;
printf("调入第%d页时发生缺页中断\n",lnumber);
/*淘汰页*///这里采用的是先进先出算法,head始终指向进入内存最早的页面
j=p[head];
p[head]=lnumber;
head=(head+1)%m;
if (page[j].write==1)
printf("将页 %d写回磁盘第%d块\n",j,page[j].dnumber); //模拟将修改过的页面写回磁盘的操作
page[j].flag=0;/* 第j页存在标志改为"0"*/
page[lnumber].pnumber=page[j].pnumber; //将被淘汰页所占内存中的物理块分配给要调入的页面
page[lnumber].flag=1;/* 第lnumber页存在标志改为"1",表示已调入内存*/
page[lnumber].write=0;/* 第lunmber页修改标志改为"0",表示尚未被修改*/
printf("淘汰内存块%2d中的页%2d,从磁盘第%d块中调入页面%2d\n",
page[j].pnumber,j,page[lnumber].dnumber,lnumber);
page[j].pnumber=-1; //对调出的页面进行的处理
page[j].write=0;
}
void command(unsigned laddress, int write)
{ /*模拟指令的执行过程
传入参数:laddress逻辑地址,write修改数据标志*/
unsigned paddress,ad,pnumber,lnumber;//物理地址,页内位移,外存物理块号,页号
kk:
/*取出逻辑地址laddress中的页号lnumber(高6位)和页内地址ad*/
lnumber=laddress>>10;//取高6位
ad=laddress&0x3ff;//取低10位
printf("该指令对应的页号为%2d,页内地址为%x\n",lnumber,ad);
if(lnumber>=page_length) /*如果页号超出页表长度*/
{
printf("不存在该页\n");
return;
}
if(page[lnumber].flag==1) //页号为lnumber的页面在内存中
{
pnumber=page[lnumber].pnumber;/* 从页表中取得内存物理块号*/
paddress=pnumber<<10|ad;/* 合并块号和块内地址形成物理地址paddress*/
printf("逻辑地址是:%x 对应物理地址是:%x\n",laddress,paddress);
if(write==1)/*如果需要写,修改页的修改标志位*/
page[lnumber].write=1;
}
else
下面是出现的错误提示pp1.cpp
C:\Documents and Settings\user\桌面\wo\Cpp1.cpp(66) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
Cpp1.exe - 1 error(s), 0 warning(s)