2017-01-05 23 views
-1

スケジューリングスキーム:プリエンプティブ優先スケジューリングこれは、ライブロックまたはデッドロックまたは飢餓の例ですか?

状況:

プロセスL(低優先度)リソース(R)上でスピンロックを取得します。クリティカルセクションにまだある間に、Lは別のプロセスH(Higher Priority)がレディキューに到着したためにプリエンプトされます。 。

しかし、HもリソースRにアクセスする必要があるため、スピンロックを取得して、Hがビジー状態になるようにします。スピンロックが使用されるため、Hは実際にはWaitには入らず、常に実行状態またはReady状態(優先順位がさらに高いプロセスがレディキューに到着した場合)になります。

A)Hが飢餓

Bの下にあると考えることができるよりも優先度)を持つすべてのプロセスは、H未満並びにプロセスH優先度を持つすべてのプロセスは、デッドロックであると考えることができます。 [しかし、システムがデッドロック状態にあるとみなされるためには、プロセスは待機状態でなければならないのですか?]

C)プロセスHだけでなくH未満の優先度を持つすべてのプロセスは、 [しかし、Hの状態だけが常に変化し、すべての優先度の低いプロセスはReady状態に留まります。システムがライブロックの場合、すべてのプロセスの状態を(スピンロックの一部として)継続的に変更する必要はありませんか?]

D)単独ではライブロックとみなすことができます。飢餓ではなく、生き方ではない。

E)Hは進行しませんが、ライブロックにあるとはみなされません。すべての優先度の低いプロセスは、ライブロックではなく、飢餓の直前にあります。

上記のうちどれが正しいですか?説明できますか?

答えて

0

ライブロックの定義には"states of the processes involved in the livelock constantly change with regard to one another"が必要なので、これはライブロックではありません。ここでは状態は実質的に変更されません。

プロセッサが追加されていると、そのプロセッサが実行され、最終的にロックが解除され、2番目のプロセッサが実行される可能性があるため、最初のプロセスはプロセッサの枯渇状態にあると見なすことができます。

状況は、リソースグラフに2つのリソースがあり、逆方向にそのリソースを取得しようとする2つのプロセスでデッドロックと見なすこともできます。最初のプロセスはロックを所有しており、プロセッサーを所有しており、進行するにはロックが必要です。

関連する問題