表は,ジョブ1~3が資源A~Cにかけるロックの種別を表す。
また,資源へのロックはジョブの起動と同時にかけられる。
ジョブ1~3のうち二つのジョブをほぼ同時に起動した場合の動きについて,適切な記述はどれか。
ここで,表中の“-”はロックなし,“S”は共有ロック,“X”は占有ロックを示す。
ジョブ\資源|A|B|C/1|S|-|X/2|S|X|-/3|X|S|-
正答2
解説
正解は2です。
共有ロックと占有ロックの両立性から、資源待ちが起こるかを判断する問題です。
共有ロック(S)どうしは同時にかけられますが、占有ロック(X)は他のどのロックとも同時にかけられません。
【表の読み取り】
表から、各ジョブがかけるロックは次のとおりです。
ジョブ1は、資源AにS、資源CにXをかけます。
ジョブ2は、資源AにS、資源BにXをかけます。
ジョブ3は、資源AにX、資源BにSをかけます。
【選択肢別解説】
1:× ジョブ1が資源AにSをかけているところに、ジョブ3がXをかけようとするので両立しません。
ジョブ3は資源待ちになります。
2:○ ジョブ2とジョブ1は資源AにともにSをかけるので両立します。
ジョブ1の資源Cはジョブ2が使っていないので、資源待ちはありません。
3:× ジョブ2が資源AにS、資源BにXをかけています。
ジョブ3は資源AにX、資源BにSをかけようとするので、どちらも両立せず資源待ちになります。
4:× ジョブ3が資源AにXをかけています。
ジョブ1は資源AにSをかけようとするので両立せず、資源待ちになります。
【ポイント】
両立するのは「SとS」の組合せだけで、Xが一方にでも含まれると後から来たジョブが待たされます。
読込みだけならS、更新するならXと覚えると、ロックの意味がつかみやすくなります。