TEST 3 ANSWER
一、单项选择题
[分析]本题大部分是属基本概念的“识记”层次,有一些属“领会”层次和“简单应用”层次。
第5题,位示图是由一些二进制表示的字组成的,每个字有若干“位”,每一“位”的0和1分别可表示两种不同的状态。所以,位示图只适用于表示相同长度的存储空间的分配情况,例如,页式存储管理中主存块是否被占用;磁盘存储空间中存储块(扇区)是否空闲等。因而本题应选择B。
第7题要求选择使“空闲区数不变且空闲区起始地址不变”的情况,若归还区既无上邻空闲区也无下邻空闲区,则归还区将作为一个独立的空闲区登记人空闲区表中,于是增加了空闲区数;若无上邻空闲区但有下邻空闲区,则归还区与下邻空闲区合并后成了一个新的空闲区后,虽然空闲区数没有改变,但应把归还区的起始地址作为新空闲区的起始地址;若既有上邻空闲区又有下邻空闲区,则归还区将与它们两者合在一起构成新的空闲区,这样,使原来分散的空闲区归并在一起了,于是就减少了空闲区数;若有上邻空闲区但无下邻空闲区,则归还区将被连接到上邻空闲区下端,虽增加了空闲区的长度,但没有改变空闲区的起始地址和个数。因而,本题应选择B。
第9题,我们把可同时执行的进程称为并发进程,并发进程相互之间的关系有两种情况:一种是相互之间无关,各自独立;另一种是相互之间有交往,拥有共享变量。由于作业到达的随机性,各种事件的随机性,调度算法等因素的影响,都可能使相互之间无关的进程以及相互之间有交往的进程同时执行。因而,不能说任何两个并发进程之间“一定相互独立”、或“一定存在交往”、或“都有共享变量”。显然,本题应该选择C。
第12题,对选定的算法应考虑怎样才能方便地实现。本题是对可变分区存储管理采用“最坏适应分配算法”,即每次总是从能满足作业存储量要求的那些空闲区中选择一个最大的空闲区进行分配。若在空闲区表中把空闲区按长度递减次序排列,则顺序查找空闲区表,只要找到第一个能满足作业要求的空闲区便一定是能满足作业要求的空闲区中的最大者。可见,选择D能以最快速度找到符合算法要求的空闲区。
第13题,要使系统不发生死锁,则应在任何时刻至少保证有一个进程能得到它所需的资源。这样,就可保证占用资源的进程能在有限的时间内归还资源,归还后的资源又可供其它进程使用。于是,每个进程都能在有限的时间内得到所需的资源,也就不会出现永远等待资源的情况,即不会死锁。假设有n个进程共享m个资源,若每个进程最多申请x个资源,如果能使下式成立:
n(x-1)+1=<m
那么,每个进程都可在有限的时间内得到所需的资源。
在本题中,n=2,m=3,所以,只要从下式中解出x即可:
2(x-1)+1=<3
从中可以得到x=<2。
因而,X的最大值为2,故每个进程最多可以申请2个资源。
[题解]1.C 2.C 3.B
4.C 5.B 6.A 7.B
8.A 9.C 10.B 11.D
12.D 13.C 14.C 15.B
二、多项选择题
[分析]第 7题,应分析每个描述的正确与否。其中 A、B、D的说法是不正确的,因为进程执行的速度是受自身或外界的情况以及进程调度策略的影响,因而不能由进程自己来控制,故A、B两项的描述是错误的。在D的描述中说利用P、V操作可以防止死锁,这里首先要弄清防止死锁的含义,所谓防止死锁是指采用某些策略后系统一定不会发生死锁。事实上,从课文的例子中已经看到利用P、V操作未必能防止死锁。因而,D的描述也是错误的。本题要求选择哪些描述是错误的,故应选择A、B、D。
[题解]1.C,E
2.A,B,D
3.A,B,D,E
4.A,D
5.B,C,D,E
6.A,C,D
7.A,B,D
8.C,D,E
三、填空题
1.管
2.进程控制块(或PCB)
3.中断装置,中断处理程序
4.逻辑,绝对
5.物理
6.链接(或串联),索引
7.设备分配
8.作业控制语言,作业控制说明书
9.银行家
10.%0~%9,%0
四、简答题
1.[题解]把一个程序在一个数据集合上的一次执行称为一个进程。因而,进程是程序的执行过程,是动态的。
进程的基本状态有:运行状态,就绪状态,等待状态。
2.[题解]响应比高者优先调度算法计算每个作业的响应比,从资源能得到满足的作业中选择响应比最高者优先装人主存储器。
响应比高者优先算法综合考虑作业的等待时间和需计算时间,把响应比定义为:
响应比=等待时间/计算时间
显然,这种算法能使计算时间短的作业优先被装人主存储器,有利于降低作业的平均周转时间。同时保证了计算时间长的作业在等待了一定的时间后也能获得较高的响应比,因而这些作业也不会被无限制地推迟执行,对用户具有一定的公平性。
3.[题解]组成 MS—DOS的三个模块是:
文件系统(MSDOS.SYS),它是MS—DOS的核心部分。
命令处理程序(COMMAND.COM),它接收、解释和执行来自用户的命令。
输人输出系统(IO.SYS)接收来自MSDOS.SYS的请求并启动设备驱动程序完成输人输出操作。
4.[题解]操作系统有五大基本功能,它们是:处理器管理、存储管理、文件管理、设备管理和作业管理。
5.[题解]把逻辑地址转换成绝对地址的工作称为重定位。
重定位的方式有两种:
(1)静态重定位。在装人一个作业时,把该作业中的指令地址和数据地址全部转换成绝对地址。
(2)动态重定位。在作业执行过程中由硬件的地址转换机构把逻辑地址转换成绝对地址。
6. [题解]操作系统启动和控制外围设备完成输入输出操作的过程如下:
(1)根据输人输出的要求组织好通道程序。
(2)把存放通道程序的起始地址存入主存中一个称为“通道地址字”的固定单元中。
(3)中央处理器执行“启动I/O”指令启动通道工作。
(4)通道从通道地址字中找到通道程序,并逐条执行通道程序中的通道命令,控制设备实现输入输出操作,把通道程序的执行情况记录在通道状态字中。
(5)通道完成输入输出操作后形成I/O中断,向中央处理器报告通道程序的执行情况。
(6)中央处理器分析通道状态字,处理来自通道的情况。
五、综合题
1. [分析]首先要注意的是,不管采用哪种作业调度算法均须考虑作业调度的必要条件,即系统现有的资源要能满足被选作业的资源要求。本题中作业对资源的要求仅限于对主存空间量的要求,所以,对主存要求能得到满足的作业就可按先来先服务算法进行作业调度。本题假设是一个多道程序设计系统,因而主存中可同时装入多个作业。于是,当作业J1到达输入井后就立刻可被作业调度选中而装入主存储器,占用了开始的15K空间。当J2到达系统后,资源要求也是能满足的,所以,作业 J2也被装入了主存储器,占用了在作业J1之后的 60K空间。当作业 J3到达系统时作业J1已经执行结束,故主存中有一个 15K和一个 25K的空闲区,每个空闲区均小于作业J3的需求量,但题中的假设允许采用移动技术,因而只要移动作业 J2就可把两个空闲区合并成一个长度为40K的空闲区,于是就可把作业J3装入主存储器,占用了其中的30K后还有10K的空闲区。在作业 J2完成之前作业 J4和 J5也都进人了输入井,由于作业 J4仅要求 10K主存量,现主存中正好有一个10K的空闲区,故作业J4也被作业调度选中而被装入主存储器。现在主存储器中同时容纳了作业 J2、J3、J4,已无空闲的主存区域,因而作业J5只能在作业J2执行结束后才能被装入主存储器。
可见,作业调度和进程调度均使用先来先服务算法,对主存空闲采用可移动的可变分区管理方式时作业被装人主存的执行次序正好是作业进人输人井的次序。作业 J1、J2、J3、J4进入输入井后就能被装入主存储器,而作业J5要在作业J2执行结束(10.9时)才被装入主存储器。
[题解](1)作业被装入主存执行的次序为:J1、J2、J3、J4、J5。
(2)各作业装入主存的时间为:J1 10.1时;J2 10.3时;J3 10.5时;J4 10.6时;J5 10.9时。
(3)为装入作业J3而移动了作业J2。
2.[分析]由于三个学生为各自的文件取了相同的文件名,为了区分同名的不同文件,可以采用二级目录结构或多级目录结构。因为本题没有提出更复杂的要求,因此只要采用较简单的二级目录结构就行了。第一级为主目录,用来区分各个学生;第二级为各个学生的文件目录,用来登记学生所定义的文件。
[题解](1)采用二级目录结构可以区分各个学生定义的同名程序。第一级为主目录,指出各位学生的文件目录表的存放地址;第二级为学生文件目录,各个学生的文件分别登记在各自的文件目录表中。这样,就能正确区分不同学生的同名文件,不会混淆。
(2)假定三个学生的名字分别为S1、S2、S3,则二级目录结构如下:

(3)学生要读取自己的程序时,只要给出程序文件名WJ,系统按该终端注册时键人的学生名查主目录,找出该学生的文件目录,在这个学生的文件目录中接给出的文件名就可得到该文件的存放地址,再按得到的存放地址从磁盘上读出程序文件,则这个文件一定是该学生所需要的程序,不够其它的同名文件混淆。
3.[分析]按题中的要求每个进程每次只能拣一个子;不允许两个进程同时拣子;两个进程必须交替拣子。因而,当一个进程拣了一个子后应发出“允许它进程拣子”的消息;而任一进程在拣子前应判断“允许自己拣子”的消息是否到达。所以,这两个并发进程之间的关系显然是同步而不是互斥。
PV操作是实现进程同步的良好工具,在实现进程同步时应定义好信号量及初值。本题中有两个不同的消息:“允许拣黑子”和“允许拣白子”,可分别用两个信号量S1和S2来表示。若假定先由进程A拣黑子,那么,S1 的初值应该为1,而S2的初值应该为0。
对进程A来说,在拣黑子前应先调用P(S1)来测试“允许拣黑子”的消息是否到达,仅当消息到达时才可以去拣一个黑子,然后必须调用V(S2)把允许另一进程拣白子的消息发送出去。同样地,对进程B来说,在拣白子前应先调用P(S2)来测试“允许拣白子”的消息是否到达,当拣了一个白子后应调用V(S1)把允许进程A拣黑子的消息发送出去。
[题解](1)两个进程之间的关系是同步关系。
(2)应定义两个信号量S1和S2,分别表示两个不同的消息:“允许拣黑子”和“允许拣白子”。假定让进程A先拣黑子,则S1的初值为1,S2的初值应为0。
(3)进程A、进程B能正确并发执行的程序应如下:
cobegin
process A
begin
L1:P(S1)
拣一粒黑子
V(S2)
go to L1
end;
process B
begin
L2: P(S2)
拣一粒白子
go to L2
end;
coend;