"一、实验内容 " "模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处" "理缺页中断。 " "二、实验目的 " "在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储" "器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空" "间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助同学理解在分页" "式存储管理中怎样实现虚拟存储器。 " "三、实验题目 " "本实验有三个题,其中第一题必做,第二、第三题中可任选一个。 " "第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 " "[提示]: " "(1) " "分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作" "业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页" "已在主存,哪些页尚未装入主存,页表的格式为: " " " "页号 " "标志 " "主存块号 " "在磁盘上的位置 " " " " " " " " " " " " " " " "其中,标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主" "存,标志位=0,则表示该页尚未装入主存。 " "主存块号——用来表示已经装入主存的页所占的块号。 " "在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。 " "(2) " "作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号(页" "内地址),硬件的地址转换机构按页号查页表,若该页对应标志为"1",则表示该 " "页已在主存,这时根据关系式: " "绝对地址=块号(块长+单元号 " "(4) " "如果一个作业的副本已在磁盘上,在磁盘上的存放地址以及已装入主存的页和作业" "依次执行的指令序列都同第一题中(4)所示。于是增加了"修改标志"后的初始页 " "表为: " " " "頁表 " "按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入的页号" ",以及执行了最后一条指令后的数组P的值。 " " " "图4-2 FIFO页面调度模拟算法 " " " "(5) " "为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行" "的结果。 " "四、实验代码 " "1、 " "#include<iostream.h> " "#define length 128 " "void main() " "{ " "int xulie[12][2]={{0,70},{1,50},{2,15},{3,21},{0,56},{6,40}, " "{4,53},{5,23},{1,37},{2,78},{4,1},{6,84}}; " " " "int yebiao[7][4]={{0,1,5,11},{1,1,8,12},{2,1,9,13}, " "{3,1,1,21},{4,0,0,22},{5,0,0,23},{6,0,0,121}}; " " " "int address=0; " "for(int i=0;i<12;i++) " "for(int j=0;j<7;j++) " "{ " "if(yebiao[j][0]==xulie[i][0]) " "{ " "cout<<"xulie"<<i<<" "<<"页号="<<yebiao[j][0]<<endl; " "if(yebiao[j][1]==1) //标志位等于1; " "{ " "address=yebiao[j][2]*length+xulie[i][1]; " "cout<<"物理地址等于:"<<address<<endl; " "} " "else " "{ " "cout<<"发生缺页中断"<<endl; " "} " "} " "} " "} " "2、 " "#include<iostream.h> " "void main() " "{ " "int yebiao[7][3]={{0,1,5},{1,1,8},{2,1,9}, " "{3,1,1},{4,0,0},{5,0,0},{6,0,0}}; " " " "int xulie[12][2]={{0,70},{1,50},{2,15},{3,21},{0,56},{6,40}, " "{4,53},{5,23},{1,37},{2,78},{4,1},{6,84}}; " " " "int address=0; " " " " " "for(int j=0;j<12;j++) " "for(int i=0;i<7;i++) " "{ " "if(yebiao[i][0]==xulie[j][0]) " "{ " "if(yebiao[i][1]