📜  操作系统|流程管理|问题6

📅  最后修改于: 2021-06-29 22:40:35             🧑  作者: Mango

初始化为零的共享变量x由四个并发进程W,X,Y,Z进行如下操作。 W和X的每个进程都从内存中读取x,将其递增1,将其存储到内存中,然后终止。 Y和Z的每个进程都从内存中读取x,将x减2,将其存储到内存中,然后终止。读取x之前的每个过程都会在计数信号量S上调用P操作(即等待),并在将x存储到内存后在信号量S上调用V操作(即信号)。信号量S初始化为两个。所有进程完成执行后,x的最大可能值是多少? (GATE CS 2013)

(A) -2
(B) -1
(C) 1
(D) 2答案: (D)
说明:进程可以以多种方式运行,以下是x达到最大值的情况之一

Semaphore S is initialized to 2

Process W executes S=1, x=1 but it doesn't update the x variable.

Then process Y executes S=0, it decrements x, now x= -2 and 
signal semaphore S=1

Now process Z executes s=0, x=-4, signal semaphore S=1
Now process W updates x=1, S=2

Then process X executes X=2 

所以正确的选择是D

这个问题的测验