北航操作系统课程-20200420课堂小测-进程同步之死锁

2020-04-20-课堂小测-进程同步之死锁


北京航空航天大学计算机学院-2020春操作系统课程
以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限,如有错误敬请批评指正。


1. 下面哪个是死锁恢复的方法:(多选)

A. 挂起部分进程,剥夺其资源

B. 杀死若干进程释放其资源

C. 根据死锁时需要的资源,回滚到未占用资源的检查点,使其他进程可以获取资源

D. 鸵鸟算法

答:A、B、C

挂起部分进程,剥夺其资源共其他进程暂时先使用,可以解除死锁状态,A正确。杀死若干进程,直接释放其资源,也可以打破死锁状态,但有一定的副作用,部分进程被杀死可能引起功能问题,B正确。回滚法是设置检查点,根据死锁时所需要的资源,将一个拥有资源的进程滚回到一个未占用资源的检查点状态,从而使得其他死锁进程能够获得相应的资源,C正确。鸵鸟算法是无视死锁,并不能对解除死锁有所帮助,D错误。


2. 死锁产生的必要条件是:(多选)

A. 互斥条件

B. 保持和请求条件

C. 不可抢占条件

D. 循环等待条件

答:A、B、C、D

互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只能有一个进程占用。

保持和请求条件:已经获得资源的线程可以请求新的资源。

不剥夺条件:指进程已获得的资源,在未使用完之前不能被强制剥夺,只能在使用完时由自己释放。

环路等待条件:指在发生死锁时,必然存在两个或多个进程组成的环形链,每个进程都在等待环形链中下一个节点占用的资源。例如,进程集合{P0,P1,P2,···,Pn}中的P0正在等待P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

以上四个条件是死锁产生的必要条件。


3. 对于n个哲学家进餐问题,下面那一个不是破除其循环等待条件:(单选)

A. 对筷子编号,按照编号从低到高拿筷子

B. 对哲学家编号,奇数号先左后右,偶数相反

C. 最多允许n-1个哲学家进餐

D. 一次必须同时拿起两根筷子,否则不拿起

答:D

在这里插入图片描述

哲学家进餐问题的描述如上图所示,当所有哲学家同时拿起右边的筷子,又在等待左边的筷子,就会发生死锁。对筷子编码,从低到高拿筷子,就不会出现所有人拿同侧等同侧的现象,A正确。如果哲学家拿筷子的先后不同,则不会发生死锁,对哲学家奇偶编号相当于使相邻的哲学家不会发生拿和等同一侧筷子的情况,也是破除循环等待条件,B正确。至多允许n-1个哲学家进餐,那么总有人进餐结束释放两根筷子,死锁不会发生,破除循环等待条件,C正确。一次必须同时拿两根筷子,否则不拿,是破除了保持等待条件,使哲学家等待时不会一直占用一个资源而等待另一个,D错误。


4. 关于资源分配图错误的是:(单选)

A. 从资源节点到进程节点的有向边表示资源已被进程占用

B. 从进程节点到资源节点的有向边表示进程正在请求该资源

C. 可以用于检测死锁

D. 资源分配图不存在环路表示系统的进程死锁

答:D

在这里插入图片描述

资源分配图的定义如上图所示,资源指向进程表示资源已被进程占用,进程指向资源表示进程正在请求资源,A、B正确。资源分配图可以检测可能的死锁,当图中出现环路时说明有可能发生循环等待,表示进程出现死锁,不存在环路说明不会出现死锁,C正确,D错误。


5. 关于死锁错误的是:(多选)

A. 死锁预防是排除死锁的动态策略

B. 死锁避免是排除死锁的动态策略

C. 系统进入不安全状态必会产生死锁

D. 产生死锁后,系统一定处于不安全状态

答:A、C

死锁预防是排除死锁的静态策略,它使产生死锁的四个必要条件不能同时具备,从而对进程申请资源的活动加以限制,以保证死锁不会发生,A错误。死锁的避免是排除死锁的动态策略,它不限制进程有关资源的申请,而是对进程所发出的每一个申请资源命令加以动态地检查,并根据检查结果决定是否进行资源分配,B正确。系统进入不安全状态(四个死锁必要条件同时发生)也未必会产生死锁,产生死锁后系统一定处于不安全状态,C错误,D正确。