表は、ジョブ1〜3が資源A〜Cにかけるロックの種別を表す。
また、資源へのロックはジョブの起動と同時にかけられる。
ジョブ1〜3のうち二つのジョブをほぼ同時に起動した場合の動きについて、適切な記述はどれか。
ここで、表中の“−”はロックなし、“S”は共有ロック、“X”は占有ロックを示す。
|
A | B | C | ||
1 | S | − | X | ||
2 | S | X | − | ||
3 | X | S | − |
ア | ジョブ1の後にジョブ3を起動したとき、ジョブ3の資源待ちはない。 |
イ | ジョブ2の後にジョブ1を起動したとき、ジョブ1の資源待ちはない。 |
ウ | ジョブ2の後にジョブ3を起動したとき、ジョブ3の資源待ちはない。 |
エ | ジョブ3の後にジョブ1を起動したとき、ジョブ1の資源待ちはない。 |
答え イ
【解説】
ア | ジョブ1が共有ロックした資源Aを、ジョブ3が占有ロックしようとするので、資源待ちが発生する。 |
イ | ジョブ2が共有ロックした資源Aはジョブ1でも共有ロックなので問題なく、占有ロックした資源Bはジョブ1でロックしないし、ジョブ1で占有ロックする資源Cはジョブ2でロックしないので、資源待ちにはならない。 |
ウ | ジョブ2が共有ロックした資源Aをジョブ3が占有ロック、ジョブ2が占有ロックした資源Bをジョブ3が共有ロックしようとするので、資源待ちが発生する。 |
エ | ジョブ3が占有ロックした資源Aをジョブ1が共有ロックしようとするので、資源待ちが発生する。 |
【キーワード】
・資源のロック