页式虚拟存储管理
cin.ignore ();
if(write!=0&&write!=1) break;
cout<<"输入逻辑地址:";
cin>>laddress;
cin.ignore ();
}//while
}//main
/*中断处理函数,采用先进先出的页面调度算法*/
void page_interrupt(int lnumber)
{
int j;
cout<<"发生缺页中断"<<lnumber<<endl;
j=p[head];
p[head]=lnumber;
head=(head+1)%m;
if(page[j].write==1)
cout<<"将页 "<<j<<" 写回磁盘第 "<<page[j].dnumber<<" 块!\n"; page[j].flag=0;
page[lnumber].pnumber=page[j].pnumber;
page[lnumber].flag=1;
page[lnumber].write=0;
cout<<"淘汰主存块 "<<page[j].pnumber<<" 中的页 "<<j<<" ,从磁盘第 " <<page[lnumber].dnumber<<" 块中调入页 "<<lnumber<<endl;
}
/*地址转换函数,将逻辑地址转换成物理地址,如果要查找的页不在主存当中则产生缺页中断*/
void command(unsigned laddress,int write)
{
unsigned paddress,ad,pnumber;
int lnumber;
kk:
lnumber=laddress>>10; //取逻辑地址高6位,页号
ad=laddress&0x3ff; //页内地址
cout<<"该逻辑地址的页号为:"<<lnumber<<" 页内地址为:"<<ad<<endl; if(lnumber>=page_length)
{ //页号大于页表的长度,则无效页号
cout<<"该页不存在!\n";
return;
}
if(page[lnumber].flag==1){ //页号为lnumber 在内存当中
pnumber=page[lnumber].pnumber;
paddress=pnumber<<10|ad;
cout<<"逻辑地址是:"<<laddress<<" 对应物理地址是:
"<<paddress<<endl;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库实验四 页式虚拟存储管理中地址转换和页式中断 FIFO LRU OPT C(5)在线全文阅读。
相关推荐: