第5章习题答案3、可变分区管理方式下,采用移动技术有什么优点?移动一道作业时操作系统要做哪些工作?答:消除外部碎片.经过一段时间的分配回收后,会产生很多碎片,这些碎片都很小,不足以满足程序分配重内存的要求,但总和可以满足程序的分配要求.通过移动技术,在适当的时候,在内存中移动程序,把所有空闲碎片合并成一个连续的大空闲空间放在内存一端,就可以满足分配的要求移动一道作业时,操作系统需要修改被移动进程的地址信息,还要复制进程空间;而且在移动时必须停止所有其他程序的运行。4、用可变分区方式管理主存时,假定主存中按地址顺序依次有五个空闲区,空闲区的大小依次为32K,10K,5K,228K,100K。现有五个作业J1,J2,J3,J4和J5。它们各需主存1K,10K,108K,28K和115K。若采用最先适应分配算法能把这五个作业按J1~J5的次序全部装入主存吗?你认为按怎样的次序装入这五个作业可使主存空间利用率最高。答:(1)不行。列表模拟J1~J5进入内存情况如下:初始空闲分区状态J1进入后空闲分区的状态J2进入后空闲分区的状态J3进入后空闲分区的状态J4进入后空闲分区的状态没有满足J5运行条件的空闲分区32K31K21K21K21K10K10K10K10K10K5K5K5K5K5K228K228K228K120K92K100K100K100K100K100K(2)以J1,J2,J3,J5,J4的次序装入这五个作业可使主存空间利用率最高。以上述顺序模拟装入过程列表如下:初始空闲分区状态J1进入后空闲分区的状态J2进入后空闲分区的状态J3进入后空闲分区的状态J5进入后空闲分区的状态J4进入后空闲分区的状态32K31K21K21K21K21K10K10K10K10K10K10K5K5K5K5K5K5K228K228K228K120K5K5K100K100K100K100K100K72K这样可以将五个作业全部装入内存,使得内存利用率最高。6、段式存储管理系统中是如何实现存储保护的?答:因为段是按逻辑意义来划分的,可以按段名访问所以段式存储管理可以方便地实现内存信息的共享并进行有效的内存保护。段式管理的保护主要有两种。一种是地址越界保护法,另一种是存取方式控制保护法。具体措施有:(1)利用段表及段长来实现段的保护,防止程序执行时地址越界。(2)存取权限保护法:在段表中设有“存取权”一项,可对程序的保护权限进行各种必要的限制。(3)存储保护键保护:由于I/O通道对存储器访问是不经过段表的,因此有的机器还采用存储保护键保护。地址越界保护是利用表中的段长项与虚拟地址中的段内相对地址比较进行的。若段内相对地址大于段长,系统就会产生保护中断。不过,在允许段动态增长的系统中,段内相对地址大于段长是允许的。为此,段表中设置相应的增补位以指示是否允许该段动态增长。建立存取控制指在段表的每个表目中,除指明段长以外,还增加“存取方式”一项。这种段的保护,对非共享段来说,主要是用来指示程序设计的错误。而对于共享段来说,则显得特别重要。采取存取保护键。由于I/O通道对存储器的访问是不经过段表的,因此有的机器除了段保护之外,还采用存储保护键。因为这种保护对I/O通道十分有效。总之,在一个段式存储管理系统中,通过建立段表,施加存取控制,以及设置存储保护键等,可以提供一个多级的存储保护体系。10、有一个操作系统采用段式存储管理方案,用户区内存为512K,分配时截取空闲块的前半部分(小地址部分)。初始时内存全部空闲。系统执行如下申请、释放操作序列。申请300K,申请100K,释放300K,申请150K,申请50K,申请90K(1)若采用首先适应算法,空闲块表中有哪些空块(指出大小,地址);(2)若采用最佳适应算法,空闲块表中有哪些空块(指出大小,地址);(3)若随后又申请80K,针对上述两种情况说明结果?其结果说明了什么问题?答:操作系统采用段式存储。执行申请释放序列后,结果如下:a、如果采用首先适应算法,空闲块表中的空块有地址大小290k10k400k112kb、如果采用最佳适应算法,空闲块表中的空块有地址大小240k60k450k62kc、若继续申请80k如果之前采用首先适应算法,则直接分配起始地址为400k的连续80k空间如果之前采用最佳适应算法,则需要首先采用拼接技术对空闲空间进行合并,然后在合并后的空闲空间中分配连续80k空间。在上述情况中采用最佳适应算法却导致后来的内存直接分配失败而不得不进行内存空间整理。这说明最佳适应算法并不是所有时候都能够保持大块连续的空闲空间。11、假如一个程序的段表如下:段号状态位段起始地址段长存取控制0010040W11201020W201590100E307550R其中,状态位为“1”表示该段不在内存。存取控制:W表示可写,R表示可读,E表示可执行。对于以下的逻辑地址可能会发生什么情况:(1)STORE1,[0,50](2)STORE1,[1,10](3)LOAD1,[2,77](4)LOAD1,[3,20]答:(1)地址越界保护;(2)发生链接中断,由操作系统的链接中断处理程序处理,根据间接字中的地址找到链接地址的符号名,并将目标段调入内存分配段号,再根据标号找到段内地址,修改间接字,置状态位为0,完成链接后,重新执行该指令,将R1中的寄存器写入目标地址;(3)内存保护错误。可执行数据不能被load(4)可以将第3段,偏移为20处所存的地址指向的内存单元的数据读入R1中12、设在内存中按地址递增次序有三个不连续的空闲区F1、F2、F3,它们的容量分别是60K、130K、20K。请给出一个后备作业序列,使得实施存储分配时(1)采用最佳适应算法将取得好的效果,而采用最差适应算法和首先适应算法效果都不好;(2)采用最佳适应算法效果不好,而采用最差适应算法和首先适应算法都可取得好的效果;(3)采用最差适应算法将取得好的效果,而采用首先适应算法和最佳适应算法效果都不好;(4)采用这三种算法都可取得好效果;(5)采用这三种算法效果都不好。答:(1)符合要求的后备作业序列为J1:1K,J2:60K,J3:130K①模拟采用最佳适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态装入J3后的空闲区状态60K60K0K0K130K130K130K0K20K19K19K19K②模拟采用最坏适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态没有可以满足J3装入条件的空闲区60K60K0K130K129K129K20K20K20K③模拟采用首先适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态没有可以满足J3装入条件的空闲区60K59K59K130K130K70K20K20K20K只有采用最佳适应算法才能将3个作业全部装入,因为其他两种算法都为了装入较小的作业而划分了较大的空闲区,使得剩余的空闲区相对于未装入的较大的作业小了(2)满足条件的后备队列为:J1:1K,J2:129K,J3:59K,J4:20K。①模拟采用最佳适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态装入J3后的空闲区状态没有可以满足J4装入条件的空闲区60K60K60K1K130K130K1K1K20K19K19K19K②模拟采用最坏适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态装入J3后的空闲区状态装入J4后的空闲区状态60K60K60K1K1K130K129K0K0K0K20K20K20K20K0K③模拟采用首先适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J1后的空闲区状态装入J1后的空闲区状态装入J1后的空闲区状态60K59K59K0K0K130K130K1K1K1K20K20K20K20K0K采用首先适应算法和最坏适应算法都可以将4个作业全部装入内存,而最佳适应算法只能将3个作业装入内存。因为最佳适应算法在装入过程中形成了小的不能有效利用的碎片。(3)满足条件的后备队列为:J1:30K,J2:80K,J3:60K。模拟采用最差适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态装入J3后的空闲区状态60K60K60K0K130K100K20K20K20K20K20K20K②模拟采用最佳适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态没有可以满足J3装入条件的空闲区60K30K30K130K130K50K20K20K20K③模拟采用首先适应算法的装入过程如下:初始空闲区状态装入J1后的空闲区状态装入J2后的空闲区状态没有可以满足J3装入条件的空闲区60K30K30K130K130K50K20K20K20K只有最差适应算法能把全部的作业装入内存。因为其余两种算法划分了相对较小的空闲区形成了碎片。(4)将(2)中的后备队列改为:J1:1K,J2:129K,J3:59K,J4:18K。则最佳适应算法也可以在最后一步装入J4。则三种算法都可以装入全部的作业。具体的过程不再画出,请参照(2)题的表格。这是因为作业的大小刚好比较合意。(5)将(3)中的后备队列改为J1:30K,J2:80K,J3:61K。则最坏适应算法也无法在最后将J3装入内存。则三种算法都不能装入全部的作业。具体的过程不再画出,请参照(3)题的表格。这是因为作业的大小刚好比较不合意。21、假定磁盘空闲空间表表明有下列存储块空闲:13、11、18、9和20块。有一个要求为某文件分配10个连续的磁盘块。(1)如果采用首次适应分配策略,那么将分配哪个块?(2)如果采用最佳适应分配策略,那么将分配哪个块?(3)如果采用最差适应分配策略,那么将分配哪个块?答:(1)13(2)11(3)2023、为什么要引入虚拟存储器?虚拟存储器是什么?它需要什么硬件支持?根据什么说一个计算机系统有虚拟存储器?怎样确定虚拟存储器的容量?答:由于软件容量的迅速扩张,有可能一个进程的程序比内存可用空间还要大,这时候该程序就无法运行;另一方面,由于程序的局部性,在进程运行的任一阶段只须使用程序的一部分,如果预先分配所有的内存空间,内存就会被浪费。为了能更有效的支持多道程序设计技术的实现和大型程序运行的需要,所以使用了虚拟存储器的概念,利用大容量的外存来扩充内存,产生一个比有限的实际内存空间大得多的、逻辑的虚拟内存空间,从而增强系统的处理能力。虚拟存储器简称虚存,是把内存与外存有机的结合起来使用,从而得到一个容量很大的、速度足够快的“内存”。虚拟存储器需要的硬件支持是:系统有一个容量足够大的外存;系统有一个具有相当容量的内存;硬件提供实现虚、实地址映射的机制。如果一个计算机系统硬件上拥有上述的支持条件、操作系统又支持虚拟存储管理,那么这个计算机系统是有虚拟存储器的。一个虚拟存储器的最大容量(寻址空间)可以用寄存器的位数来确定,因此比如X86体系的计算机寄存器为32位,因此虚拟存储器的最大容量应该为2的32次方字节,即4GB。26、有一个虚拟存储系统。分配给某进程3页内存,开始时内存为空,页面访问序列如下:6,5,4,3,2,1,5,4,3,6,5,4,3,2,1,6,5(1)若采用先进先出页面置换算法(FIFO),缺页次数为多少?(2)若采用最近最少使用页面置换算法(LRU),缺页次数为多少?(3)若采用最佳页面置换算法算法呢?答:(1):17次(2):17次(3)11次27、有一台计算机含有4个页面,每一页的装入时间,最后一次修改时间以及R与M位的值如下(时间为时钟周期):页装入时间最后访问时间RM012627900123026010212027211316028011(1)NRU应淘汰哪一页(2)FIFO应淘汰哪一页(3)LRU应淘汰哪一页(4)第二次机会应淘汰哪一页答:NRU应淘汰第0页FIFO应淘汰第2页LRU应淘汰第1页第二次机会应淘汰第0页29、何谓系统的“抖动”现象?当系统发生“抖动