《2022年实验七_模拟虚拟存储器管理终版 .pdf》由会员分享,可在线阅读,更多相关《2022年实验七_模拟虚拟存储器管理终版 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验七模拟虚拟存储管理一、实验目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助理解在分页式存储管理中怎样实现虚拟存储器。二、实验题目模拟请求分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。三、背景材料(一)模拟请求分页式存储管理中硬件的地址转换和产生缺页中断。提示 请求分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪
2、些页已在主存,哪些页尚未装入主存,页表的格式为:页号标志主存块号在磁盘上的位置标志-用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。主存块号-用来表示已经装入主存的页所占的块号。在磁盘上的位置-用来指出作业副本的每一页被存放在磁盘上的位置。1、作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式:绝对地址=块号块长+单元号计算出欲访问的主存单元地址。如果块长为2 的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对
3、地址。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。2、设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。该模拟程序的算法如图 6-1。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -图 6-1 地址转换模拟算法3、假定主存的每块长度为128 个字节;现有一个共七页的作业,其中第0 页至第 3
4、页已经装入主存,其余三页尚未装入主存;该作业的页表为:0 1 5 011 1 1 8 012 2 1 9 013 3 1 1 021 4 0 022 5 0 023 6 0 121 如果作业依次执行的指令序列为:操作页号单元号操作页号单元号+0 70 移位4 053+1 50+5 023 2 15 存1 037 存3 21 取2 078 取0 56+4 001 6 40 存6 084 取一条指令开始取指令中访问的页号查页表输出“*”页号表示发生缺页中断形成绝对地址输出绝对地址有后继指令?结束取下一条指令否是该页标志=1?名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -4
5、、运行设计的地址转换程序,显示或打印运行结果。因仅模拟地址转换,并不模拟指令的执行,故可不考虑上述指令序列中的操作。(二)用先进先出(FIFO)页面调度算法处理缺页中断提示:1、在请求分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用FIFO 页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表页表中对应页的标志。2、FIFO 页面调度算法总是淘汰该作业中最先进入主存的那一页,因此可以用一个数组来表示该作业已在主存的页面。假定作业被选中时,把开始的m 个页面装入主存,则
6、数组的元素可定为m 个。例如:P0,P1,.,Pm-1 其中每一个Pi(i=0,1,.,m-1)表示一个在主存中的页面号。它们的初值为:P0:=0,P1:=1,.,Pm-1:=m-1 用一指针k 指示当要装入新页时,应淘汰的页在数组中的位置,k 的初值为“0”。当产生缺页中断后,操作系统选择Pk 所指出的页面调出,然后执行:Pk:=要装入页的页号k:=(k+1)mod m 再由装入程序把要访问的一页信息装入到主存中。重新启动刚才那条指令执行。3、编制一个FIFO 页面调度程序,为了提高系统效率,如果应淘汰的页在执行中没有修改过,则可不必把该页调出(因在磁盘上已有副本)而直接装入一个新页将其覆盖
7、。因此在页表中增加是否修改过的标志,为“1”表示修改过,为“0”表示未修改过,格式为:由于是模拟调度算法,所以,不实际启动输出一页和装入一页的程序,而用输出调出的页号和装入的页号来代替一次调出和装入的过程。FIFO 页面调度模拟算法如图6-2。4、磁盘上,在磁盘上的存放地址以及已装入主存的页和作业依次执行的指令序列都同第一题中(4)所示。于是增加了“修改标志”后的初始页表为:0 1 5 0 011 1 1 8 0 012 2 1 9 0 013 3 1 1 0 021 4 0 0 022 5 0 0 023 6 0 0 121 按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入
8、的页号,以及执行了最后一条指令后的数组P 的值。5、为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行的结果。页号标志主存块号修改标志在磁盘上的位置页号标志主存块号修改标志在磁盘上的位置名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -是否是否否(产生缺页中断)是模拟 FIFO 页面调度模拟硬件地址转换取一条指令开始该页标志=1?取指令中访问的页号L 查页表形成绝对地址输出绝对地址有后继指令?取下一条指令是存指令?置 L 页修改标志为“1”结束j:=Pk j 页修改标志为1 输出“out j”输出“in L”图 6-2 FIFO 页面调度模拟算法Pk
9、:=L,k:=(k+1)mod m 修改页表名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -(三)用最近最少用(LRU)页面调度算法处理缺页中断提示 1、在请求分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用 LRU页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表页表中对应页的标志。2、LRU 页面调度算法总是淘汰该作业中距现在最久没有访问过的那一页,因此可以用一个数组来表示该作业已在主存的页面。数组中的第一个元素总是指出当前刚访问的页号,
10、因此最久没被访问的页总是由最后一个元素指出。如果主存中只有四块空闲块且执行(一)中提示 4 假设的指令序列,采用LRU页面调度算法,那麽在主存中的页面变化情况如下:3 0 6 4 5 1 2 4 6 2 3 0 6 4 5 1 3 4 1 2 3 0 6 4 5 1 2 0 1 2 3 0 6 4 5 1 3、编制一个LRU页面调度程序,为了提高系统效率,如果应淘汰的页在执行中没有修改过,则可不必把该页调出。参看(二)提示3。模拟调度算法不实际启动输出一页和装入一页的程序,而用输出调出的页号和装入的页号来代替。把第一题中的程序稍作改动,与本题集合起来,LRU页面调度模拟算法如图6-3。4、按(
11、一)中提示4 的要求,建立一张初始页表,表中为每一页增加“修改标志”位(参考(二)提示4)。然后按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入的页号,以及执行了最后一条指令后的数组中的值。5、为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行的结果。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -图 6-3 LRU 页面调度算法是否是否否(产生缺页中断)是模拟 LRU 页面调度模拟硬件地址转换取一条指令开始该页标志=1?取指令中访问的页号L 查页表形成绝对地址输出绝对地址有后继指令?取下一条指令是存指令?置 L 页修改标志为“1
12、”结束j:=被淘汰的页号输出“in L”调整数组,j 退出数组,L数组第一个元素中修改页表j 页修改标志为1 输出“out j”名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -四、实验内容1、必做内容(1)在用户空间下模拟请求分页式存储管理中硬件的地址转换和产生缺页中断。(2)在用户空间下模拟用进先出(FIFO)页面调度算法处理缺页中断2、选做内容(3)在用户空间下模拟用最近最少用(LRU)页面调度算法处理缺页中断五、实验报告书写要求1、程序中使用的数据结构及符号说明。2、打印初始页表,每次调出(要调出一页时)和装入的页号,执行最后一条指令后在主存中的页面号(即数组的值)。3、打印一份源程序并附上注释。思考题如果你有兴趣的话,可把两种页面调度算法都做一下,比较两种调度算法的效率(哪种调度算法产生缺页中断的次数少);分析在什麽情况下采用哪种调度算法更有利?名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -