当前位置:首页 > 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://www.pythonopen.com/?id=7176

相关文章

[12][20][单选]下列关于文件系统中文件的描述中,哪一个是正确的

构成文件内容的基本单位为信息项文件的内容没有顺序关系文件内容都是由操作系统程序并使用的用户需要关注文...

[12][21][单选]下列哪一项是执行打开文件操作时由操作系统返回的

文件名文件号文件描述符文件物理位置答案文件描述符解析执行打开文件操作时由操作系统返回的信息是文件描述...

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

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