logo资料库

实验二 存储管理.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
实验 2 源代码 #include #define n 10 #define m 3 //页的大小为 2 的 n 次方 //实际为该作业分配的主存块块数 #define page_length 5 //页表实际长度 struct //页表 { int lnumber; //页号 int pnumber; //该页所在主存块的块号 int flag; //状态位,"1"表示该页在主存,"0"表示该页不在主存 int write; //修改位,"1"表示该页内容被修改过,"0"表示该页内容末修改过 int dnumber; //该页存在外存位置,即磁盘块号 }page[page_length]; int p[m]; int head; //存放在主存中页的页号 //主存中页号队列 p 首指针 void page_interrupt(int lnumber) //缺页中断处理函数 { int j; cout<<"页"<
{ kk: int paddress,ad,pnumber,lnumber; //取出逻辑地址 laddress 的页号 lnumber(高 6 位)和页内地址 ad lnumber=laddress>>n; ad=laddress&0x3ff; if(lnumber>=page_length) cout<<"超出页长,不存在该页\n"; else { if(page[lnumber].flag==1) //页在主存 { padress pnumber=page[lnumber].pnumber; //从页表中取得块号 paddress=pnumber<
page[1].lnumber=1;page[1].pnumber=3;page[1].flag=1;page[1].write=0;page[1]. dnumber=20; page[2].lnumber=2;page[2].pnumber=7;page[2].flag=1;page[2].write=0;page[2]. dnumber=18; page[3].lnumber=3;page[3].pnumber=0;page[3].flag=0;page[3].write=0;page[3]. dnumber=6; page[4].lnumber=4;page[4].pnumber=0;page[4].flag=0;page[4].write=0;page[4]. dnumber=9; head=0; //开始指向 p[0] p[0]=0;p[1]=1;p[2]=2; //3 个物理块中所放的页为 0 页、1 页、2 页 while(1) { cout<<"输入指令性质(1-写指令,0-读指令,其他--结束程序运行)和逻辑地址:"; cin>>write; cin>>laddress; if(write==0||write==1) command(laddress,write); else break; } }
分享到:
收藏