实验二虚拟存储器.docxVIP

  • 3
  • 0
  • 约3.65千字
  • 约 6页
  • 2022-09-24 发布于湖南
  • 举报
实验二虚拟存储器 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储器。 本实验存有三道题目,其中第一题必搞,第二,三题中可以自由选择一个。 第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 (1)分页式虚拟存储系统就是把作业信息的副本存放在磁盘上,当作业被选上时,可以把作业的已经开始几页先放入主存且启动继续执行。为此,在为作业创建页表时,应当表明哪些页已在主存,哪些页尚未放入主存,页表的格式为: 页号标志主存块号在磁盘上的位置 其中,标志用以则表示对应页与否已经放入主存,标志位=1,则则表示该页已经在主存,标志位=0,则则表示该页尚未放入主存。 主存块号用来表示已经装入主存的页所占的块号。 在磁盘上的边线用以表示作业副本的每一页被存放在磁盘上的边线。 (2)作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式: 绝对地址=块号×块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。若访问的页对应标志为“0”, 则则表示该页无此主存,这时硬件播发“缺页中断”信号,存有操作系统按该页在磁盘上的边线,把该页信息从磁盘念出放入主存后再再次继续执行这条指令。 (3)设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。该模拟程序的算法如图2-1。 (4)假设主存的每块长度为128个字节;现有一个共七页的作业,其中第0页至第3页已经放入主存,其余三页尚未放入主存;该作业的页表为: (5)运行设计的地址转换程序,显示或打印运行结果。因仅模拟地址转换,并不模拟指令的执行,故可不考虑上述指令序列中的操作。 第二题:用先进先出(fifo)页面调度算法处置缺页中断。 (1)在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用fifo页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表页表中对应页的标志。 (2)fifo页面调度算法总是出局该作业中最先步入主存的那一页,因此可以用一个数组去则表示该作业已在主存的页面。假设作业被选上时,把已经开始的m个页面放入主存,则数组的元素可以订为m个。比如: p[0],p[1],….,p[m-1] 其中每一个p[i](i=0,1,….,m-1)则表示一个在主存中的页面号。它们的初值为:p[0]:=0,p[1]:=1,….,p[m-1]:=m-1 用一指针k指示当要装入新页时,应淘汰的页在数组中的位置,k的初值为“0”。当产生缺页中断后,操作系统选择p[k]所指出的页面调出,然后执行: p[k]:=必须放入页的页号 k:=(k+1)modm 再由放入程序把必须出访的一页信息放入至主存中。重新启动刚才那条指令继续执行。 (3)编制一个fifo页面调度程序,为了提高系统效率,如果应淘汰的页在执行中没有修改过,则可不必把该页调出(因在磁盘上已有副本)而直接装入一个新页将其覆盖。因此在页表中增加是否修改过的标志,为“1”表示修改过,为“0”表示未修改过,格式为: #includestdio.h #includestring.h #definesize128//块长 #definen12 typedefstruct intpagenum;intflag;intblock;intlocation;//页表定义 }table; typedefstruct//操作表定义 charope[10];intpagenum;intaddress; tablep1[7]= {{0,1,5,11},{1,1,8,12},{2,1,9,13},{3,1,1,21},{4,0,null,22},{5,0,nul

文档评论(0)

1亿VIP精品文档

相关文档