それぞれ初期値が 1 で、3 つの変数 (x、y、z) を持つ 3 つのセマフォ (s1、s2、s3) を共有する 2 つのプロセス P1 と P2 があります。
P1: P2:
wait(s1); wait(s2);
x = x + 1; y = y * 2;
wait(s2); wait(s3);
y = y - x; z = z - y;
wait(s3); signal(s2);
z = x + 2 * y - z; wait(s1);
signal(s3); x = x + 2;
signal(s2); signal(s1);
signal(s1); signal(s3);
単一の CPU を搭載したコンピューターでそれらを同時に実行した場合、P1 と P2 がデッドロックに陥る可能性はありますか?
私が見ているのは、それらが実行を開始するとすぐに、両方とも wait() になり、何かがそれらにシグナルを送るまで座るようになるということです。他に何も実行されていないため、両方ともデッドロック状態ではありませんか? 理解を妨げている非常に単純な知識が欠けているように感じます。どんな洞察も大歓迎です!