文档详情

实验四 页式虚拟存储管理.docx

发布:2018-12-11约3.19千字共4页下载文档
文本预览下载声明
PAGE \* MERGEFORMAT4 页式虚拟存储管理中地址转换和缺页中断 实验目的 模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断。 实验内容 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想:装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。页表格式如下: 页号 标志 页架号 修改标志 在磁盘上位置 3.模拟算法流程: 程序及截图 程序主要代码: #includeiostream #includeiomanip #includelist using namespace std; char useSign[12][5]={{+},{-},{*},{存},{取},{-},{移位},{+},{存},{取},{+},{存}}; int PageAddress[12]={70,50,15,21,56,40,53,23,37,78,01,84}; int PageNum[12]={0,1,2,3,0,6,4,5,1,2,4,6}; int S_Station; int pPageNum[7];//页号pPage int pSign[7]; int pStool[7];//页架号 int pModify[7];//修改标志 int pStation[7];//磁盘位置 static int z=0; void Store() { for(int i=0;i7;i++) { if(i4) { pSign[i]=1; } else pSign[i]=0; pPageNum[i]=i; pModify[i]=0; } int p1=1,p2=2,p3=3; for(i=0;i7;i++) { if(i3) { pStation[i]=p1; p1++; } else if(i6) { pStation[i]=p2; p2++; } else pStation[i]=p3; } pStool[0]=5; pStool[1]=8; pStool[2]=9; pStool[3]=1; } void CShow() { cout操作 ; cout页号 ; cout页内地址 ; cout标志 ; cout绝对地址 ; cout修改页号 ; cout页架号 ; cout绝对地址; coutendl; } void Find() { int m_Pagenum; int m_Station; int Y_Station;//绝对地址 int m_Stool; cout输入页号及页内地址查询操作:; cinm_Pagenumm_Station; CShow(); int i,j=0; //string m_Modify; for(i=0;i12;i++) { if(PageAddress[i]==m_Station) { break; } } Y_Station=pStool[m_Pagenum]*1024+m_Station; if(pSign[m_Pagenum]==1) { if(strcpy(useSign[i],存)!=0) { pModify[m_Pagenum]=1; }
显示全部
相似文档