0

N個のプロセスがM個のリソースユニットを共有します。これらのリソースユニットは、一度に1つだけ予約および解放できます。各プロセスの最大ニーズはMを超えず、すべての最大ニーズの合計はM+N未満です。システムでデッドロックが発生する可能性はありますか?

4

2 に答える 2

1

あなたが説明しているシステムはセマフォのように見えます

最後の質問について: はい。あなたは常にデッドロックを「することができました」。方法がわからない場合は、若い/恥ずべき/やる気のある/逸脱した開発者に尋ねてください。

良いものを作る一つの良い方法; 奇妙なロック/リリース リソース ルールを持つことです。たとえば、プロセスがタスクを実行するために M 個のリソースを必要とする場合、そのプロセスの半分をすぐにロックし、残りの半分が使用可能になるまで待ってから何かを実行できます。

M の貴重なリソースを手に入れ、タスクが完了したらそれらをすべて解放するまで、彼は決してあきらめないと思います。

単一のプロセスでは大きな問題は発生しませんが、合計 M 個を超えるリソースをロックし、この凍結状態から抜け出すにはさらに多くのリソースが必要になるため、いくつかの問題が発生します。

于 2011-02-23T16:04:12.290 に答える
0

答えが得られたことを願っています。他の訪問者のためにこの質問に答えます。

答えは、システムにデッドロックが発生しないということです。

その証拠を下の画像に示します。

この画像は、31 ページのhttp://alumni.cs.ucr.edu/~choua/school/cs153/Solution%20Manual.pdfから取得したものです。

于 2014-12-17T18:41:34.073 に答える