当前位置:首页 > 4444临时 > 正文内容

[25][30][单选]有 n 个生产者进程 P1、P2、...、Pn,其伪代码如下:

4444临时5个月前 (02-02)

item buffer[n]; int mutex = 1; int empty = n; int full = 0; int i = 0; producer{    while(1 {        produce_item(;        wait(mutex;        if (empty > 0 {            buffer[i] = item;            i = (i + 1 % n;            signal(mutex;            signal(empty;            signal(full;        } else {            signal(mutex;        }    } consumer{    while(1 {        wait(full;        wait(mutex;        if (full > 0 {            item = buffer[i];            i = (i + 1 % n;            signal(mutex;            signal(empty;        } else {            signal(mutex;        }        consume_item(;    } 这些生产者进程在执行过程中,可能会出现下列哪一种现象?

产生饥饿

正常运行

出现死锁

可能死锁

答案

可能死锁

解析

当进行 n 次生产后有 n 个生产者,每人都生产了一个产品后,缓冲区全部占满empty = 0生产者执行 P(mutex后此时 mutex = 0,又执行了 P(empty,由于 empty = -1,使生产者因无可用缓冲区而在 empty 上等待。若再有一个消费者进程到达,执行 P(full此时 full = 0,又执行了 P(mutex,由于 mutex = -1,使消费者因无可用缓冲区而在 mutex 上等待。此时,生产者、消费者都因此等待对方来唤醒自己处于循环等待状态。生产者等待消费者释放一个空缓冲区,而消费者等待生产者释放互斥信号量 mutex,这样便形成了死锁状态。所以选择 D 选项。


转载请注明出处。

本文链接:http://pythonopen.com/?id=7176

相关文章

[12][22][单选]下列关于实现创建文件操作的描述中,哪一个是错误的

创建文件操作完成后,该文件得到一个新的文件控制块FCB创建文件操作完成后,操作系统给该文件分配一定的...

[12][26][单选]利用缓冲技术进行设备管理的主要目的是

加速数据传输预防死锁发生匹配高速和低速设备连接不同种类的设备答案匹配高速和低速设备解析缓冲技术是为了...

[12][27][单选]用户进程在等待鼠标点击输入时,不断检测对应接口寄存器的完成位是否为1,该I/O设备控制方式称为

中断控制方式程序直接控制方式DMA方式通道控制方式答案程序直接控制方式解析程序直接控制方式是指由用户...