初始化为零的共享变量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
这个问题的测验