リソーススタベーション
リソーススタベーションまたはリソーススターベーション(英: resource starvation; 資源飢餓)とは、マルチタスクに関連した問題であり、プロセスが必要なリソースをほぼ永久的に獲得できない状況を言う。プログラムは、そのようなリソースが無ければ処理を完了できない。
リソーススタベーションはデッドロックによっても発生する。デッドロックは互いに相手が必要なリソースを獲得しあったふたつ以上のプロセスが存在して、どちらも自身の獲得したリソースを諦めない状態である。
スタベーションは、スケジューリングや相互排除アルゴリズムのエラーによって引き起こされることがあるが、リソースのリークによっても引き起こされるし、フォークボムなどのサービス妨害攻撃によって意図的に引き起こされることもある。
並列アルゴリズムでスタベーションが発生しない場合、そのアルゴリズムはスタベーションフリー、ロックアウトフリー、または有限バイパスと呼ばれる。この特性はライブネスの一例であり、相互排除アルゴリズムの2つの要件のうちの1つで、もう1つは正当性である。有限バイパスという名前は、アルゴリズムの任意のプロセス(コンカレント・パート)が、共有リソースへのアクセスを許可される前に、最大で有限回バイパスされることを意味する 。
リソーススタベーションの例として、エドガー・ダイクストラの食事する哲学者の問題がある。
問題の根本はスケジューリング方式にある。スケジューリングはカーネルの機能の一部だが、一般にリソースを平等に割り当てることを目指している。つまり、スケジューリングアルゴリズムは、どのプロセスも永久的に必要なリソースを得られないような状況にならないようリソースの配分を行わなければならない。