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

[27][30][单选]有 n 个消费者进程 Q1、Q2、…、Qn,其伪码如下:

[27]2年前 (2025-02-02)

j = 0; while (true)    P (mutex);    //mutex 初值为 1    if (fullness == 0)    {        //fullness 初值为 0        V (mutex);        //从 Buffer[j]取产品        j = (j + 1) mod k;        //k 为缓冲区大小        V (emptiness);        //emptiness 初值为 C,C > 0,整数        V (mutex);        //消费产品;    } 这些消费者进程在执行过程中,可能会出现下列哪一种现象

正常运行

可能死锁

出现活锁

产生饥饿


答案

可能死锁


解析

在消费者与生产者的问题中,信号量 mutex 用于实现临界区(环形缓冲区)的互斥,信号量 fullness 用于指示环形缓冲区中满缓冲区数目,信号量 emptiness 用于指示环形缓冲区中空缓冲区数目。根据题意,在这些消费者进程中,若先执行 P (mutex)进入到临界区中,再执行 P (fullness)从满缓冲区中取产品,假设当消费者进入临界区,而满缓冲区数目为 0,那么此刻需要等待生产者向缓冲区投入产品,而消费者又占用了临界区,生产者会等着消费者退出临界区,消费者又等待生产者向缓冲区投入产品,那么可能会发生死锁。


转载请注明出处。

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

相关文章

[27][1][单选]实时操作系统的主要设计目标是

在严格时间范围内对外部请求做出反应系统资源利用率高适于测试程序及时响应用户输入的交互命令答案在严格时...

[27][2][单选]当用户程序正在处理器上运行时,若此刻取到了一条特权指令,则处理器将停止执行该指令,并产生一个

“清除状态码”的事件“非法操作”的事件“改变条件码”的事件“生成信号量”的事件答案“非法操作”的事件...

[27][3][单选]中断是打断处理器的当前工作并要求其去处理某一事件的一种常用手段,中断发生后,处理器暂停当前程序转而处理中断的过程称为

中断响应中断断点中断请求中断程序答案中断响应解析中断发生后,处理器暂停当前程序转而处理中断的过程称为...

[27][4][单选]系统调用是用户在程序运行时调用的操作系统所提供的一些子功能,这些系统调用可以看作是

完成操作系统功能的系统进程完成用户要求的用户进程“扩充”的机器指令“扩充”的用户程序答案“扩充”的机...

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

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

[27][8][单选]为了便于操作系统进行控制,在操作系统内核中为进程定义了一个专门的数据结构,称为 PCB。下列选项中,哪一项不是 PCB 的内容

进程队列指针进程队列地址映射寄存器当前打开文件清单答案进程队列解析进程控制块(PCB)的内容一般可以...