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

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

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

i = 0; while (true {    生产产品;    P(empty; //empty 初值为 C,C > 0,整数    P(mutex; //mutex 初值为 1    往 Buffer[i]中放产品;    i = (i + 1 mod K; //K 为缓冲区大小    V(mutex;    V(full;  //full 初值为 0 } 这些生产者进程在执行过程中,可能出现下列哪一种现象?

正常运行

可能死锁

出现活锁

产生饥饿


答案

正常运行


解析

当进程进行 n 次循环后或 n 个生产者,每人都生产一个产品,当缓冲区为空的时候,生产者可以向缓冲区生产产品。执行 P(empty取产品此时 mutex = 1,然后判断缓冲区大小,如果缓冲区不为空,则执行 V(mutex放入产品。所以这个过程不会发生死锁,能正常运行,因为过程中会判断缓冲区的大小,不会让生产者向已满的缓冲区里生产产品。涉及考点为第 8 章 死锁。


转载请注明出处。

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

相关文章

[12][2][单选]系统调用与一般过程调用是不同的,下列对它们的调用程序和被调用程序的描述中,哪一个是正确的

过程调用和系统调用的调用程序和被调用程序均位于核心态过程调用和系统调用的调用程序和被调用程序均位于用...

[12][3][单选]处理器中对用户可见的存储器是

程序状态字寄存器数据寄存器程序计数器指令寄存器答案数据寄存器解析处理器一般包括两类寄存器:一类称为用...

[12][5][单选]进程有三种基本状态,在允许抢占并采用高优先级优先调度算法的系统中,一个进程从就绪状态转换为运行状态的可能事件是

该进程创建完成进入就绪队列并具有最高优先级该进程等待从键盘上读取用户数据该进程的优先级由于某种原因被...

[12][8][单选]当使用进程创建原语创建进程时,下列哪一个选项表示创建的顺序是正确的

申请PCB,填写PCB,放入运行队列申请PCB,填写PCB,放入就绪队列申请PCB,申请内存,填写P...

[12][9][单选]对于如下C语言程序

int main({pid_t pid;int a = 1;pid = fork(;if(pid =...

[12][10][单选]对于如下C语言程序

void *th(void *arg{printf("Hello World";...