リソーススタベーション

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

リソーススタベーションResource Starvation; 資源飢餓)とは、マルチタスクに関連した問題であり、プロセスが必要なリソースをほぼ永久的に獲得できない状況を言う。プログラムは、そのようなリソースが無ければ処理を完了できない。

リソーススタベーションはデッドロックによっても発生する。デッドロックは互いに相手が必要なリソースを獲得しあったふたつ以上のプロセスが存在して、どちらも自身の獲得したリソースを諦めない状態である。

リソーススタベーションの例として、エドガー・ダイクストラ食事する哲学者の問題がある。

問題の根本はスケジューリング方式にある。スケジューリングはカーネルの機能の一部だが、一般にリソースを平等に割り当てることを目指している。つまり、スケジューリングアルゴリズムは、どのプロセスも永久的に必要なリソースを得られないような状況にならないようリソースの配分を行わなければならない。

多くのオペレーティングシステムのスケジューラはプロセスの優先順位という概念を持っている。高優先順位のプロセスAは低優先順位のプロセスBよりも先に動作する。高優先順位プロセス(A)がブロック( 一時休止 )しなければ、低優先順位プロセス(B)は(一部のシステムでは)決してスケジュールされないため、リソーススタベーション状態となる。さらに高優先順位のプロセスXがあって、その処理にプロセスBの結果が必要とされている場合、プロセスXは最高優先順位であるにも関わらず処理が完了しないことになる。このような状態を優先順位の逆転と呼ぶ。