TL;DR

飢餓を意味する英単語。並列処理の文脈では、リソーススタベーション(resource starvation)を指すことが多い。スレッドやプロセスが共有リソースを必要としているのに、長時間(または永久に)アクセスできない状態である。

仕組み

Wikipedia によると、原因には、スケジューリングや排他制御のアルゴリズムの誤り、リソースリーク、fork 爆弾のような意図的なサービス妨害がある。優先度でスケジューリングするシステムでは、優先度の高いプロセスが動き続けると、低いプロセスがいつまでも実行されない。対策として、長く待っているプロセスの優先度を少しずつ上げるエージングがある。

例

注意点

デッドロックとは別の状態である。デッドロックは、プロセスどうしが互いのリソースを待ち、誰も先に進めなくなる状態で、スタベーションは、待っているリソースが他のプロセスにばかり割り当てられ続ける状態である。スタベーションが起きないことは、デッドロックが起きないことよりも強い保証になる。

関連

出典