0

オペレーティング システムの概念を修正しようとしていますが、混乱がありました。プロセスは、独自のアドレス空間を持つスレッドであることを知っています。

1) デッドロックはスレッドまたはプロセスによってのみ引き起こされますか? (スレッドはプロセスのスタックを共有します。異なるプロセスには異なるスタックがあります)。

2) 単一のプロセスがデッドロックを引き起こす可能性はありますか? または、デッドロックが発生するのに複数のプロセスが必要ですか?

ここで質問するのが適切かどうかはわかりません。そうでない場合は、お知らせください。質問を削除します。

4

2 に答える 2

2

答えはあなたの質問そのものにあります。各プロセスにはスタックがあり、プロセスによって作成されたすべてのスレッドがスタックを共有します。同じプロセスの 2 つのスレッドが、他のスレッドがロックしているリソース (データ、通信など) を要求し、他のリソースの解放を待機するたびに、デッドロックが発生します。

回答: 1)
の場合: スレッドがプロセス内でデッドロックを引き起こし、プロセスが親プロセス (ほとんどの場合 OS) 内でデッドロックを引き起こす 2 )の場合: はい、単一のプロセスがデッドロックを引き起こす可能性があります。


于 2012-10-03T05:54:54.707 に答える
2

ロックしようとしているものに応じて、スレッドとプロセスの両方がデッドロックに陥る可能性があります。ロックしたいリソースがプロセス内で共有されているリソース (クリティカル セクションなど) である場合、スレッドはデッドロック状態になる可能性があります。一方、グローバルに共有されているリソース (例: ミューテックスという名前) の場合、プロセスはデッドロックに陥る可能性があります。2) の場合、デッドロックが発生するには、複数のプロセスが (グローバルに) 共有リソースをロックしようとする必要があるため、複数のプロセスが関与している必要があります。

于 2012-10-03T05:53:09.457 に答える