购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.3 解析与答案

试题 1 分析

本题的配图是一个标准的“进程三态图”,其中 1 表示就绪进程被调度;2 表示运行进程的时间片到了;3 表示运行进程执行了P操作,进程进入了阻塞状态;4 表示被阻塞进程等待的事件发生了。

其中的 1 与 2 有着一定的关联,因为当一个正在运行的进程时间片到了以后,该进程将从运行态转换为就绪态,同时,需要调入另外一个处于就绪态的进程,使之转换为运行态。

试题 1 答案

(1)C

(2)B

试题 2 分析

在本题中,第①种情况的系统资源数为 3,而有两个进程互斥使用这 3 个资源,每个进程需要的资源最大值为 2,那么无论怎么分配资源,都不会发生死锁。第②种情况的系统资源数为 3,有 3 个进程互斥使用这 3 个资源,每个进程需要的资源最大值为 2,如果每个进程都分配一个该类资源而又互相等待,这时就有可能产生死锁。第③种情况的系统资源数为5,而有 2 个进程互斥使用这 5 个资源,每个进程需要的资源最大值为 3,那么无论怎么分配资源,都不会发生死锁。第④种情况的系统资源数为 5,有 3 个进程互斥使用这 5 个资源,每个进程需要的资源最大值为 3,如果有两个进程分配了两个资源,而剩余的一个该类资源分配给了第 3 个进程,这时就有可能产生死锁。对于第⑤种情况,如果 3 个进程都分配了两个资源而互相等待则会产生死锁。

经过上面的分析我们可以知道,②④⑤可能会产生死锁,对于第②种情况,由于每个进程都分配一个该类资源,如果系统再多一个该类资源,系统将不会产生死锁。对于第④种情况,由于有两个进程分配了两个资源,而第 3 个进程只分配了一个资源,如果系统只增加一个资源的话,那么将增加的这个资源分配给第 3 个进程,这个时候系统仍然会发生死锁,只有增加两个资源,系统才不会死锁。第⑤中情况与第②种情况一样,只需要增加一个资源就不会发生死锁。

试题 2 答案

(3)C

(4)D

试题 3 分析

从图 2-4 我们可以看出,P 1 、P 2 、P 3 、P 4 尚需的资金数分别是 4、5、6、7,而目前再给P 1 分配 2 个资金、给P 2 分配 1 个资金,那么P 1 、P 2 、P 3 、P 4 尚需的资金数分别是 4−2=2,5−1=4,6,7。

如果P 1 已经还清所有投资款,再结合图 2-5,已用资金和为:3+2+3=8,那么剩余的可用资金为 15−8=7。

从图 2-5 不难看出,P2、P3、P4 目前已经分别分配了 3、2、3 个资金,再给它们分别分配 2、2、3 个资金后,他们的已用资金数应分别为 5、4、6,尚需资金数分别为 8−5=3,8−4=4,10−6=4。

试题 3 答案

(5)C

(6)D

(7)D

试题 4 分析

本题主要考查PV操作实现同步与互斥。在本题中,题目告诉我们甲乙俩人互斥使用半成品箱这个共有资源,且只有一个半成品箱,那么互斥信号量的初值就应该为 1。而从题目给出的同步模型图我们可以看出,信号量S1 是生产者甲的私有信号量,而S2 是生产者乙的私有信号量,题目告诉我们半成品箱可存放 n 件半成品,那么初始状态时,S1 的值应该为 n ,表示生产者甲最多只能生产 n 个半成品放入半成品箱,就需要生产者乙来协调工作。而S2的值为 0,表示开始时半成品箱中没有半成品。

试题 4 答案

(8)B

(9)A

试题 5 分析

本题主要考查用PV操作控制进程的并发执行。首先我们需要弄清楚前驱图中给出的各进制的执行顺序。从图中我们不难看出进程P 1 和P 2 没有前驱,也就是可以首先并发执行,而进程P 3 的前驱是P 1 和P 2 ,P 4 的前驱是 P 1 和P 3 ,P 5 的前驱是P 2 和P 3 。那么怎么理解前驱呢?其实前驱就是指只有在前驱进程完成后,该进程才能开始执行。

在本题的前驱图中我们不难看出,有 6 条路径,分别是P1→P3,P1→P4,P2→P3,P2→P5,P3→P4,P3→P5。而且题目也告诉我们分别有 6 初值为 0 个信号量(S1~S6),要我们用PV操作来控制进程P1~P5 的并发执行。这里我们就需要清楚P与V这两种操作。

P原语的主要操作是:

(1)信号量(sem)减 1;

(2)若相减结果大于等于 0,则进程继续执行;

(3)若相减结果小于 0,则阻塞一个在该信号量上的进程,然后再返回原进程继续执行或转进程调度。

V原语的主要操作是:

(1)信号量(sem)加 1;

(2)若相加结果大于 0,则进程继续执行;

(3)若相加结果小于或等于 0,则唤醒一阻塞在该信号量上的进程,然后再返回原进程继续执行或转进程调度。

总而言之,进行P操作的主要目的是阻塞某信号量上的进程,而进行V操作的主要目的是唤醒某信号量上的进程。

下面我们具体来求解这个题目。a空处,是在进程P 1 执行完成以后,那么根据题目的前驱图我们可以知道,这个时候它应该唤醒它的后继进程P 3 和P 4 ,因此需要执行两个V操作,同样的道路,b空处也需要执行两个V操作,因此可以知道此空答案选C。

至于c空处,它是在进程P 3 执行前进行的处理。根据前驱的意义,我们可以知道执行P 3 要在P 1 和P 2 完成后,因此这个时候,它首先需要判断P 1 和P 2 进程是否完成,如果它们完成的话,会分别执行唤醒P 3 的V操作(换句话说就是会给相应的信号量进行加 1 操作),那么这个时候我们也可以通过同样的信号量来判断,即对相应的信号量进行减 1 操作,判断它是否大于 0,如果大于等于 0,则执行P 3 。从题目给出的答案来看,这两个信号量应该分别是S1 和S3。那么执行完P 3 后,它也需要唤醒它的后继进程P 4 和P 5 ,因此需要执行两个V操作,因此d空处应该是两个V操作。综上所述,我们可以知道(11)题的答案选B。

分析到这里后,答案应该就很明显了,P 4 和P 5 进程在执行前,都需要做与P 3 进程执行前一样的判断,因此都需要进行两个P操作。所以本题答案选C。

其实做这类题也不难,首先需要我们对PV操作有一个透彻的理解,另外就是能分析出题目执行的逻辑关系。

试题 5 答案

(10)C

(11)B

(12)C cYBfu5iUJtpSMpzBdQ/9UOm3dmBbvhahpPaCEb+jHPW0urlmBA6vIiv5rgGdXo+c

点击中间区域
呼出菜单
上一章
目录
下一章
×