在某个系统中,三个线程的执行是使用三个信号量S1、S2和S3同步的,如下图所示。信号量 S1 和 S2 被初始化为零,而信号量 S3 被初始化为 1。所有三个信号量仅在下面显示的代码部分中使用。
Thread A Thread B Thread C
... ... ...
P(S1) P(S2) P(S3)
P(S1) P(S1) V(S1)
x=3*x+4 x=x+7 x=x*5
V(S2) V(S2) V(S1)
V(S1) V(S1) V(S3)
…………
如果变量 x 被定义为一个整数共享变量,初始化为 1,并且在代码的任何其他部分(除了上面显示的部分)没有赋值,那么当所有线程完成执行时,它的值是多少?三个信号量的值是多少?
我正在尝试解决这篇过去的论文,以便为我的操作系统考试做准备。我不明白如何修改变量 x 以及三个信号量如何协同工作。如果有人可以逐步向我展示信号量如何协同工作以及如何修改变量,我将不胜感激。
如果您有任何其他类似的示例可以练习,请不要犹豫链接它。