当前位置:首页 > 四级网络工程师 > [25] > 正文内容

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

[25]2年前 (2025-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

相关文章

[25][1][单选]在操作系统的结构设计中,采用层次结构的操作系统其最大优点是

把整体问题局部化大量调用同层模块不同层次可以双向调用数据可以作为全局部量使用答案把整体问题局部化解析...

[25][2][单选]处理器通过执行指令实现程序的功能,非特权指令是指

只能由操作系统使用的指令只能由用户程序使用的指令操作系统和用户均可以使用的指令操作系统和用户均不可以...

[25][4][单选]系统调用是操作系统支持的供用户使用的一些子功能代码,当用户使用这些功能代码时

必须首先改变用户的身份为管理员必须首先把目态切换成管态无须任何操作可以直接转到被调用程序必须首先提高...

[25][5][单选]下列哪一种调度算法是单纯基于时间片考虑的?

轮转法RR多级反馈队列法最短作业优先算法先来先服务算法答案轮转法RR解析在时间片轮转法中,当时间片结...

[25][6][单选]假设有2个程序A和B同时到达,且都要执行。

A程序的执行顺序为:在CPU上执行10秒,在设备DEV1上执行5秒,又在CPU上执行5秒,在设备DE...

[25][7][单选]计算机系统中的进程通常处于不同的状态。当进程处于就绪状态时,表示

进程已获得除处理器外的所有资源进程占用处理器资源进程已获得内存资源进程已获得除内存外的所有资源答案进...