1

以下に関する1つの特定の混乱を除いて、すべて整理しました。

割り当てi != 0 の場合、Finish[i] := false; それ以外の場合、Finish[i] := true。

これは、その特定の行の合計がゼロであることを意味しますか?

アルゴリズム:

データ構造:

  • Available: 長さ m のベクトルは、各タイプの使用可能なリソースの数を示します。
  • 割り当て: nxm 行列は、各プロセスに現在割り当てられている各タイプのリソースの数を定義します。
  • リクエスト: nxm マトリックスは、各プロセスの現在のリクエストを示します。Request[i][j] = k の場合、プロセス P iは、リソース タイプ R jのさらに k 個のインスタンスを要求しています。
  • Work: 長さ m のベクトル。
  • Finish: 長さ n のベクトル。

アルゴリズム:

  1. 初期化作業 := 利用可能。
    • i = 1, 2, …, n の場合、Allocation i != 0 の場合、Finish[i] := false; それ以外の場合、Finish[i] := true。
  2. 次の両方を満たすインデックス i を見つけます。
    • (a) Finish[i] = false
    • (b) リクエストi <= 仕事
    • そのような i が存在しない場合は、ステップ 4 に進みます。
  3. 仕事 := 仕事 + 割り当てi
    • 終了[i] := true
    • ステップ 2 に進みます
  4. Finish[i] = false の場合、一部の i について 1 <= i...n の場合、システムはデッドロック状態になります。さらに、Finish[i] = false の場合、プロセス P iはデッドロック状態になります。2 つのベクトル間の以下の関係 (<=) は次のように定義されます。X と Y を長さ n のベクトルとします。すべての i = 1, 2, ..., n に対して x[i] <= y[i] である場合に限り、X <= Y であると言います。Allocation および Request マトリックスの行はベクトルとして扱われ、アルゴリズムではAllocation iおよび Request iと呼ばれます。
4

1 に答える 1

1

Allocation iはベクトルであるため、「Allocation i != 0」は、Allocation iをゼロ ベクトル (すべてゼロで構成されるベクトル) に対してテストすることを意味します。

つまり、ベクトル内のすべてのエントリが 0 の場合、「割り当てi == 0」となります。

于 2013-03-07T02:35:37.453 に答える