实验四 页式虚拟存储管理中地址转换和页式中断 FIFO LRU OPT C(5)

2021-02-21 18:49

页式虚拟存储管理

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;


实验四 页式虚拟存储管理中地址转换和页式中断 FIFO LRU OPT C(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电脑配件报价单

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

马上注册会员

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