共用資源の順序付けによるデッドロック防止

正解は「イ」です。 デッドロックは、複数のタスクが互いに相手の確保している資源の解放を待ち、処理が永久に進まなくなる状態です。デッドロックが発生する 4 つの必要条件の 1 つに「循環待機(Circular Wait)」があります。 すべての共用資源に対して一意な順序(番号)をあらかじめ定義し、すべてのタスクが必ずその昇順(同じ順序)でしか資源を獲得できないルールを適用すると、資源獲得の依存関係にループ(閉路)が生じなくなり、循環待機を構造的に排除してデッドロックの発生を完全に防ぐことができます。 一方のタスクの優先度を上げても、他方のタスクが獲得済みの排他資源を保持している限り待ち状態は解消されず、デッドロックは防止できません。 資源の獲得順序を逆にすると、タスク A が資源 1 を持ち資源 2 を待ち、タスク B が資源 2 を持ち資源 1 を待つという典型的なデッドロックが発生します。 タスクの優先度を同一に揃えても、資源獲得の競合による相互待ちは防げません。

二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。

出典平成31年 春期 応用情報技術者試験 午前 問18
ア
一方のタスクの優先度を高くする。
イ
資源獲得の順序を両方のタスクで同じにする。
ウ
資源獲得の順序を両方のタスクで逆にする。
エ
両方のタスクの優先度を同じにする。