-6

Dijkstra の Banker's Algorithm に関する問題の答えについて質問があります (質問は下のスクリーン ショットに示されています)。

この質問への答えは、「はい、できます」であるべきだと思いました。私の考えでは、ユーザー 1 が完了したら、彼をポップアウトして、要求されたリソース (10 個の A と 5 個の B) を解放し、使用済みのリソースを使用可能なリソース プールに戻すことができます。

代わりに、回答 (質問の下のスクリーン ショット) では、それは不可能であると述べられています。どこで私は間違えましたか?これが不可能であるという答えはなぜですか?

ここに画像の説明を入力

答え: ここに画像の説明を入力

4

1 に答える 1

2

言葉遣いが悪いだけの質問だと思います。問題の説明には、利用可能なリソースはA = 10とであると記載されていますB = 15

バンカーのアルゴリズムでは、プロセスが必要な最大リソースを割り当てることができれば「安全」と見なされます。(プロセス 1 には 10 個の A と 5 個の B が必要です)

次に、答えには、利用可能なリソースはA = 1B = 2. 現在割り当てられているすべてのプロセスを見ると、

プロセス 1 には 2 つのリソースが割り当てられてい
ます プロセス 2 には 3 つのリソースが割り当てられてい
ます プロセス 3 には 2 つのリソースが割り当てられてい
ます プロセス 4 には 2 つのリソースが割り当てられています
--------------- ------------
使用中の A リソースの合計 = 9

質問は、それらが現在利用可能なリソースではなく、システム全体のリソースであることを意味していたことが明らかになりました。したがって、9 つの A リソースが使用されています。プロセス 1 には最大 10 (2 つある) が必要なので、さらに 8 つ必要です。その場合、答えはノーです。安全ではありません。

于 2013-03-28T13:56:35.307 に答える