问答题
有三个作业A、B、C,它们分别单独运行时的CPU和I/O占用时间如图2-7所示。
现在请考虑三个作业同时开始执行。系统中的资源有一个CPU和两台输入/输出设备(I/O1和I/O2)同时运行。三个作业的优先级为A最高、B次之、C最低,一旦低优先级的进程开始占用CPU,则高优先级进程也要等待其结束方可占用CPU,请回答下面的问题:
问答题
最早结束的作业是哪个?
问答题
最后结束的作业是哪个?
问答题
计算这段时间CPU的利用率(三个作业全部结束为止)?
【正确答案】三个作业从开始到全部执行结束,经历时间为210ms,由于是单CPU系统,CPU运行时间即为各个作业的CPU运行时间之和,为[(20+10+20)+(40+30)+(40+20)]ms=180ms故CPU的利用率为:180/210=85.7%。
【答案解析】
问答题
设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;又设有三个工人,其活动分别为:
【正确答案】[*]
【答案解析】[解析] 用信号量与PV操作实现三个工人的合作。
首先不考虑死锁问题,工人1与工人3、工人2与工人3构成生产者与消费者关系,这两对生产/消费关系通过共同的缓冲区相联系。从资源的角度来看,箱子中的空位置相当于工人1和工人2的资源,而车架和车轮相当于工人3的资源。
分析上述解法易见,当工人1推进速度较快时,箱中空位置可能完全被车架占满或只留有一个存放车轮的位置,而当此时工人3同时取2个车轮时将无法得到,而工人2又无法将新加工的车轮放入箱中;当工人2推进速度较快时,箱中空位置可能完全被车轮占满,而当此时工人3取车架时将无法得到,而工人1又无法将新加工的车架放入箱中。上述两种情况都意味着死锁。为防止死锁的发生,箱中车架的数量不可超过N-2,车轮的数量不可超过N-1,
这些限制可以用两个信号量来表达。
问答题
假定要在一台处理器上执行表2-7所示的作业,且假定这些作业在时刻0以1、2、3、4、5的顺序到达。说明分别使用FCFS、RR(时间片=1)、SJF以及非剥夺式优先级调度算法时,这些作业的执行情况。
针对上述每种调度算法,给出平均周转时间和平均带权周转时间,见表2-7。
表2-7 系统作业情况
|
作业 |
执行时间 |
优先级 |
|
1 |
10 |
3 |
|
2 |
1 |
1 |
|
3 |
2 |
3 |
|
4 |
1 |
4 |
|
5 |
5 |
2 |
|
【正确答案】各个作业对应于各个算法的周转时间和加权周转时间见下表。
|
算法 |
时间类型 |
P1 |
P2 |
P3 |
P4 |
P5 |
平均时间 |
|
运行时间 |
10 |
1 |
2 |
1 |
5 |
3.8 |
|
FCFS |
周转时间 |
10 |
11 |
13 |
14 |
19 |
13.4 |
|
加权剧转时间 |
l1 |
11 |
6.5 |
14 |
3.8 |
7.26 |
|
RR |
周转时间 |
19 |
2 |
7 |
4 |
14 |
9.2 |
|
加权周转时间 |
1.9 |
2 |
3.5 |
4 |
2.8 |
2.84 |
|
SJF |
周转时间 |
19 |
1 |
4 |
2 |
9 |
7 |
|
加权周转时间 |
1.9 |
1 |
2 |
2 |
1.8 |
1.74 |
|
优先级 |
周转时间 |
16 |
1 |
18 |
19 |
6 |
12 |
|
加权周转时间 |
1.6 |
1 |
9 |
19 |
1.2 |
6.36 |
所以,FCFS的平均周转时间为13.4,平均加权周转时间为7.26。
RR的平均周转时间为9.2,平均加权周转时间为2.84。
SJF的平均周转时间为7,平均加权周转时间为1.74。
非剥夺式优先级调度算法的平均周转时间为12,平均加权周转时间为6.36。
【答案解析】[解析] SJF的平均周转目寸间肯定是最短的,计算完毕后可以利用这个性质检验。
问答题
何谓管程?管程由几部分组成?说明引入管程的必要性。
【正确答案】当共享资源用共享数据结构表示时,资源管理程序可用对该数据结构进行操作的一组过程来表示,如资源的请求和释放过程request和release。把这样一组相关的数据结构和过程一并归为管程。Hansan为管程所下的定义是:“一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。”由定义可知,管程由三部分组成:
1)局部于管程的共享变量说明;
2)该数据结构进行操作的一组过程;
3)对局部于管程的数据设置初始值的语句,此外,还需为该管程赋予一个名字。
管程的引入是为了解决临界区分散所带来的管理和控制问题。在没有管程之前,对临界区的访问分散在各个进程之中,不易发现和纠正分散在用户程序中的不正确地使用P、V操作等问题。管程将这些分散在各进程中的临界区集中起来,并加以控制和管理,管程一次只允许一个进程进入管程内,从而既便于系统管理共享资源,又能保证互斥。
【答案解析】
问答题
设有4个作业J1、J2、J3、J4,它们的到达时间和计算时间见表2-12。若这4个作业在一台处理器上按单道方式运行,采用高响应比优先调度算法,试写出各作业的执行顺序、各作业的周转时间及平均周转时间。
表2-12 作业的到牵连时间和计算时间
|
作业 |
到达时间 |
计算时间 |
|
J1 |
8:00 |
2h |
|
J2 |
8:30 |
40min |
|
J3 |
9:00 |
25min |
|
J4 |
9:30 |
30min |
|
【正确答案】作业的响应比可表示为
[*]
在8:00时刻,系统中只有一个作业J1,故系统将它投入运行。在J1完成(即10:00)时,J2、J3、J4的响应比分别为:(90+40)/40,(60+25)/25,(30+30)/30,即3.25、3.4、2,故应先将J3投入运行。在J3完成(即10:25)时,J2、J4的响应比分别为(115+40)/40、(55+25)/25,即3.875、3.2,故应先将J2投入运行,待它运行完毕时(即11:05),再将J4投入运行,J4的结束时间为11:35。
可见作业的执行次序为J1、J4、J3、J2,各作业的运行情况见下表,它们的周转时间分别为120min、155min、85min、125min,平均周转时间为121.25min。
|
作业号 |
提交时间 |
开始时间 |
执行时间 |
结束时间 |
周转时间 |
|
1 |
8:00 |
8:00 |
2h |
10:00 |
120min |
|
2 |
8:30 |
10:25 |
40min |
11:05 |
155min |
|
3 |
9:00 |
10:00 |
25min |
10:25 |
85min |
|
4 |
9:30 |
11:05 |
30min |
11:35 |
125min |
【答案解析】
问答题
将一组进程分为4类,如图所示。各类进程之间采用优先级调度算法,而各类进程的内部采用时间片轮转调度算法。请简述P1、P2、P3、P4、P5、P6、P7、P8进程的调度过程。
【正确答案】从题意可知,各类进程之间采用优先级调度算法,而同类进程内部采用时间片轮转调度算法,因此,系统首先对优先级为4的进程P1、P2、P3采用时间片轮转调度算法运行;当P1、P2、P3均运行结束或没有可运行的进程(即P1、P2、P3都处于等待状态;或其中部分进程已运行结束,其余进程处于等待状态)时,则对优先级为3的进程P4、P5采用时间片轮转调度算法运行。在此期间,如果未结束的P1、P2、P3有一个转为就绪状态,则当前时间片用完后又回到优先级4进行调度。类似地,当P1~P5均运行结束或没有可运行进程(即P1~P5都处于等待状态;或其中部分进程已运行结束,其余进程处于等待状态)时,则对优先级为2的进程P6、P7、P8采用时间片轮转调度算法运行,一旦P1~P5中有一个转为就绪状态,则立即回到相应的优先级进行时间片轮转调度。
【答案解析】
问答题
如图2-11所示,三个合作进程P1、P2、P3,它们都需要通过同一设备输入各自的数据a、b、c,该输入设备必须互斥地使用,而且其第一个数据必须由P1进程读取,第二个数据必须由P2进程读取,第三个数据则必须由P3进程读取。然后,三个进程分别对输入数据进行下列计算:
【正确答案】为了控制三个进程依次使用输入设备进行输入,需分别设置三个信号量S1、S2、S3,其中S1的初值为1,S2和S3的初值为0。使用上述信号量后,三个进程不会同时使用输入设备,故不必再为输入设备设置互斥信号量。另外,还需要设置信号量Sb、Sy、Sz来表示数据b是否已经输入,以及y、z是否己计算完成,它们的初值均为0。三个进程的动作可描述为:
[*]
[*]
【答案解析】
问答题
假设具有5个进程的进程集合P={P0,P1,P2,P3,P4},系统中有三类资源A、B、C,假设在某时刻有如下状态:
【正确答案】[*]
1)根据Need矩阵可知,当前AVailane为(1,4,0),可以满足进程P2的需求;进程P2结束后释放资源,AVailable为(2,7,5),可以满足P0、P1、P3和P4中任一进程的需求,所以系统不会出现死锁,当前处于安全状态。
2)若Available为(0,6,2),可以满足进程P0、P3的需求;这两个进程结束后释放资源,Availane为(0,6,7),仅可以满足进程P4的需求;P4结束后释放资源,Available为(0,6,8),此时不能满足余下任一进程的需求,系统出现死锁,故当前系统处在非安全状态。
注意:在银行家算法中,实际计算分析系统安全状态时,并不需要逐个进程进行。如本题中,在1)情况下,当计算至进程P2结束并释放资源时,系统当前空闲资源可满足余下任一进程的最大需求量,这时已经不需要考虑进程的执行顺序。系统分配任意一个进程所需的最大需求资源,在其执行结束释放资源后,系统当前空闲资源会增加,所以余下的进程仍然可以满足最大需求量。因此,在这里可以直接判断出系统处于安全状态。在2)情况下,系统当前可满足进程P0、P3的需求,所以可以直接让系统推进到P0、P3执行完并释放资源后的情形,这时系统出现死锁;由于此时是系统空闲资源所能达到的最大值,所以按照其他方式推进,系统必然还是出现死锁。因此,在计算过程中,将每一步中可满足需求的进程作为—个集合,同时执行并释放资源,可以简化银行家算法的计算。
【答案解析】
问答题
某寺庙,有小和尚、老和尚若干,有一水缸,由小和尚提入水缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个桶取水。水桶总数为3个。每次入取缸水仅为1桶水,且不可同时进行。试给出有关从缸取水、入水的算法描述。
【正确答案】从井中取水并放入水缸是一个连续的动作可以视为一个进程,从缸中取水为另一个进程。设水井和水缸为临界资源,引入well、vat;三个水桶无论从井中取水还是放入水缸中都是一次一个,应该给它们一个信号量pail,抢不到水桶的进程只好等待。水缸满时,不可以再放水,设置empty信号量控制入水量;水缸空时,不可以取水,设置full信号量来控制。本题需要设置5个信号量来控制:
[*]
[*]
【答案解析】