あるシステムでは、以下に示すように、S1、S2、および S3 の 3 つのセマフォを使用して、3 つのスレッドの実行が同期されます。セマフォ S1 と S2 はゼロに初期化され、セマフォ S3 は 1 に初期化されます。3 つのセマフォはすべて、以下に示すコードのセクションでのみ使用されます。
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 に初期化され、上記以外のコードのセクションで値が割り当てられていない場合、すべてのスレッドの実行が終了したときの値はどうなるでしょうか? 3 つのセマフォの値はどうなるでしょうか?
オペレーティング システム試験の準備のために、この過去の論文を解こうとしています。変数 x がどのように変更されるか、および 3 つのセマフォがどのように連携するかがわかりません。セマフォがどのように連携し、変数がどのように変更されるかを順を追って説明していただければ幸いです。
他にも練習用の同様の例がある場合は、ためらわずにリンクしてください。