第5章习题答案
3、可变分区管理方式下,采用移动技术有什么优点?移动一道作业时操作系统要做哪些工作?
答:消除外部碎片.经过一段时间的分配回收后,会产生很多碎片,这些碎片都很小,不足以满足程序分配重内存的要求,但总和可以满足程序的分配要求.通过移动技术,在适当的时候,在内存中移动程序,把所有空闲碎片合并成一个连续的大空闲空间放在内存一端,就可以满足分配的要求
移动一道作业时,操作系统需要修改被移动进程的地址信息,还要复制进程空间;而且在移动时必须停止所有其他程序的运行。
4、用可变分区方式管理主存时,假定主存中按地址顺序依次有五个空闲区,空闲区的大小依次为32K,10K,5K,228K,100K。现有五个作业J1,J2,J3,J4和J5。它们各需主存1K,10K,108K,28K和115K。若采用最先适应分配算法能把这五个作业按J1~J5的次序全部装入主存吗?你认为按怎样的次序装入这五个作业可使主存空间利用率最高。 答:
(1)不行。
列表模拟J1~J5进入内存情况如下: 初始空闲分区状态 32K 10K 5K 228K 100K J1进入后空闲分区的状态 31K 10K 5K 228K 100K J2进入后空闲分区的状态 21K 10K 5K 228K 100K J3进入后空闲分区的状态 21K 10K 5K 120K 100K J4进入后空闲分区的状态 21K 10K 5K 92K 100K 没有满足J5运行条件的空闲分区 (2)
以J1,J2,J3,J5,J4的次序装入这五个作业可使主存空间利用率最高。
以上述顺序模拟装入过程列表如下: 初始空闲分区状态 32K 10K 5K 228K 100K J1进入后空闲分区的状态 31K 10K 5K 228K 100K J2进入后空闲分区的状态 21K 10K 5K 228K 100K J3进入后空闲分区的状态 21K 10K 5K 120K 100K J5进入后空闲分区的状态 21K 10K 5K 5K 100K J4进入后空闲分区的状态 21K 10K 5K 5K 72K 这样可以将五个作业全部装入内存,使得内存利用率最高。
6、段式存储管理系统中是如何实现存储保护的? 答:因为段是按逻辑意义来划分的,可以按段名访问所以段式存储管理可以方便地实现内存信息的共享并进行有效的内存保护。
段式管理的保护主要有两种。一种是地址越界保护法,另一种是存取方式控制保护法。
具体措施有:
(1) 利用段表及段长来实现段的保护,防止程序执行时地址越界。
(2) 存取权限保护法:在段表中设有“存取权”一项,可对程序的保护权限进行各
种必要的限制。
(3) 存储保护键保护:由于I/O通道对存储器访问是不经过段表的,因此有的机器
还采用存储保护键保护。
地址越界保护是利用表中的段长项与虚拟地址中的段内相对地址比较进行的。若段内相对地址大于段长,系统就会产生保护中断。不过,在允许段动态增长的系统中,段内相对地址大于段长是允许的。为此,段表中设置相应的增补位以指示是否允许该段动态增长。
建立存取控制指在段表的每个表目中,除指明段长以外,还增加“存取方式”一项。这种段的保护,对非共享段来说,主要是用来指示程序设计的错误。而对于共享段来说,则显得特别重要。
采取存取保护键。由于I/O通道对存储器的访问是不经过段表的,因此有的机器除了段保护之外,还采用存储保护键。因为这种保护对I/O通道十分有效。
总之,在一个段式存储管理系统中,通过建立段表,施加存取控制,以及设置存储保护键等,可以提供一个多级的存储保护体系。
10、有一个操作系统采用段式存储管理方案,用户区内存为512K,分配时截取空闲块的前半部分(小地址部分)。初始时内存全部空闲。系统执行如下申请、释放操作序列。 申请300K,申请100K,释放300K,申请150K,申请50K,申请90K (1)若采用首先适应算法,空闲块表中有哪些空块(指出大小,地址); (2)若采用最佳适应算法,空闲块表中有哪些空块(指出大小,地址);
(3)若随后又申请80K,针对上述两种情况说明结果?其结果说明了什么问题? 答:操作系统采用段式存储。执行申请释放序列后,结果如下: a、如果采用首先适应算法,空闲块表中的空块有 地址 大小 290k 10k 400k 112k b、如果采用最佳适应算法,空闲块表中的空块有 地址 大小 240k 60k 450k 62k c、若继续申请80k 如果之前采用首先适应算法,则直接分配起始地址为400k的连续80k空间
如果之前采用最佳适应算法,则需要首先采用拼接技术对空闲空间进行合并,然后在合并后的空闲空间中分配连续80k空间。 在上述情况中采用最佳适应算法却导致后来的内存直接分配失败而不得不进行内存空间整理。这说明最佳适应算法并不是所有时候都能够保持大块连续的空闲空间。
11、假如一个程序的段表如下:
段号 状态位 段起始地址 段长 存取控制 0 0 100 40 W
1 1 2010 20 W 2 0 1590 100 E 3 0 75 50 R
其中,状态位为“1”表示该段不在内存。存取控制:W表示可写,R表示可读,E表示可执行。对于以下的逻辑地址可能会发生什么情况:
(1)STORE 1,[0,50] (2)STORE 1,[1,10] (3)LOAD 1,[2,77] (4)LOAD 1,[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 ①模拟采用最佳适应算法的装入过程如下: 初始空闲区状态 60K 130K 20K 装入J1后的空闲区状态 60K 130K 19K 装入J2后的空闲区状态 0K 130K 19K 装入J3后的空闲区状态 0K 0K 19K ②模拟采用最坏适应算法的装入过程如下: 初始空闲区状态 60K 130K 20K 装入J1后的空闲区状态 60K 129K 20K 装入J2后的空闲区状态 0K 129K 20K 没有可以满足J3装入条件的空闲区 ③模拟采用首先适应算法的装入过程如下: 初始空闲区状态 60K 130K 装入J1后的空闲区状态 59K 130K 装入J2后的空闲区状态 59K 70K 没有可以满足J3装入条件的空闲区