質問
多重待ち行列方式におけるスタベーション問題について、エージング手法を用いる対応について詳細に解説してください |
解答
多重待ち行列方式(Multilevel Queue Scheduling)においては、スタベーション(飢餓)問題が発生することがあります。 これに対処するための代表的な手法が エージング(aging) です。 以下に、概念から仕組み、エージングの具体的な動作まで詳しく解説します。 🔹 多重待ち行列方式(Multilevel Queue Scheduling)とは プロセスを優先度や性質に応じて複数のキューに分類し、キューごとに異なるスケジューリングポリシーを適用する方式です。 例: * 高優先度キュー:対話型プロセス(短い時間で応答が必要) * 中優先度キュー:バッチ処理 * 低優先度キュー:バックグラウンドジョブ 🔸 スタベーション(飢餓)問題とは 高優先度のプロセスが絶えず投入されると、低優先度のキューのプロセスが永遠にスケジューリングされないという問題です。 ● 発生例: * 常にユーザーが入力している対話型プロセス(高優先度)が存在する * 低優先度のバッチジョブが何時間も実行されない 🔹 エージング(Aging)とは 長時間待たされているプロセスの優先度を徐々に上げることで、スタベーションを回避する手法。 ✅ エージングの仕組み(詳細) 1. 待機時間に応じた優先度上昇 * プロセスが待機し続けると、一定時間ごとに優先度が上がる(例:10秒で+1) 2. キュー間の移動 * 多重待ち行列方式においては、優先度の上昇に応じて上位のキューに昇格させる * 最終的には高優先度キューに入り、スケジューリングされる ✅ 具体例 ● シナリオ: * 3つのキュー: * Q0(高):リアルタイム * Q1(中):対話型 * Q2(低):バッチ処理 * バッチジョブP1がQ2に入り、30分待機している * 一方で、Q0とQ1は常に新しいプロセスで埋まっている ● エージングの適用: 1. `P1` の待機時間が設定された閾値(例:5分)を超えた 2. 優先度を1段階上げて、Q1に昇格 3. さらに待機していれば、Q0に昇格し、ついにCPU時間を得られる ✅ メリットと注意点
🔸 補足:適用方法のバリエーション * リニアエージング:待機時間に比例して優先度を加算 * ステップエージング:一定時間ごとに優先度段階を1つ上げる * 制限付きエージング:最大優先度に制限を設け、暴走を防ぐ ✅ まとめ
|
|
|

この記事へのコメント