二つのタスクが共有する二つの資源を排他的に使用するとき、デッドロックが発生する可能性がある。
このデッドロックの発生を防ぐ方法はどれか。
ア |
一方のタスクの優先度を高くする。 |
イ |
資源獲得の順序を両方のタスクで同じにする。 |
ウ |
資源獲得の順序を両方のタスクで逆にする。 |
エ |
両方のタスクの優先度を同じにする。 |
答え イ
【解説】
ア |
優先度が異なるタスク間でもデッドロックは発生します。(タスクの優先度はデッドロックに関係しません。) |
イ |
資源獲得の順序を同じにすることでデッドロックを防ぐことができます。 |
ウ |
資源獲得の順序を逆にするとデッドロックが発生します。 |
エ |
優先度が同じタスク間でもデッドロックは発生します。 |
【キーワード】
・ロック
・デッドロック
【キーワードの解説】
- ロック(lock)
複数の処理(タスク、トランザクション)が動作している環境で、複数の処理が同じデータ(資源)に同時にデータの書換えを行うと、データに不整合が生じるので、書き換えを行う前に他の処理からのアクセスを制限する処理をロックといいます。(排他処理)
- デッドロック(deadlock)
複数の処理(タスク、トランザクション)で、互いに相手が占有している資源(データ)を占有(ロック)しようとして、処理が停止することです。
処理がA、B、資源がX、Yのときに処理Aが資源Xを占有し、処理Bが資源Yを占有している状態で、処理Aが資源Yの占有待ちになり、処理Bが資源Xの占有待ちになると、処理AとBはデッドロック状態になります。
もっと、「デッドロック」について調べてみよう。
戻る
一覧へ
次へ
|