平成20年 春期 基本情報技術者 午前 問59

表は、ジョブ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が共有ロックしようとするので、資源待ちが発生する。


キーワード
・資源のロック

キーワードの解説
  • 資源のロック
    複数のジョブが1つの資源に同時にアクセスすると、資源の制御が正しく行えなくなったり、データに不整合が発生する恐れのある場合、アクセスする資源についてロックを行い(鍵をかけて)アクセスをします。(例、複数のジョブが一つファイルの書き換えを行うことを防止。)
    ロックを行うとき、他のジョブからのアクセスを禁止するのを占有ロック、他のジョブからのアクセスを許可するのを共有ロックといいます。
    共有ロックは、共通参照ファイルなどへのアクセス時に使用します。
    共有ロックされた資源を他のジョブが共有ロックすることは可能ですが、占有ロックすることはできません。
    また、占有ロックされた資源を他のジョブが共有ロックすることもできません。

もっと、「共有ロック」について調べてみよう。

戻る 一覧へ 次へ