单选题
👁️ 浏览量:

试题题干

​生产者和消费者问题中,当生产者拥有缓冲池的访问权,但是却无法获得空缓冲区资源而被阻塞,此时出现死锁四个必要条件中的( )

A

互斥条件

B

请求和保持条件

C

不剥夺条件

D

环路等待条件

参考答案

正确答案:

试题解析

如果生产者和消费者进程都先通过执行wait(mutex)申请公共缓冲池的互斥访问权,当缓冲池满且生产者和消费者进程几乎同时访问公共缓冲池时,可能发生死锁,出现4个必要条件同时满足的情况。
1)互斥条件。若生产者进程先占用公共缓冲池访问权,消费者请求缓冲池访问权时会被阻塞。即缓冲池访问权只能被任意两个进程中的一个所占有。所有的生产者进程和消费者进程对公共缓冲池的访问是互斥的。
2)请求和保持条件。生产者进程获得缓冲池使用权后,又提出申请空缓冲区的请求。因为缓冲池装满了消息,没有空缓冲区。因此,生产者进程无法获得空缓冲区资源而被阻塞,但生产者进程仍保持缓冲池的访问权。
3)不剥夺条件。虽然缓冲池中有消费者进程需要的消息资源,只要消费者进程能够获得缓冲池的互斥访问权就可以执行取消息的操作,但消费者进程不能剥夺生产者已获得的缓冲池访问权。
4)环路等待。存在生产进程等待消费者进程释放空缓冲区,消费者进程等待生产者进程释放公共缓冲池互斥访问权的资源申请环路。