Renesas Synergy™

FAQ 1008774 : デッドロック(Dead-lock)

プロセッサが暴走したり、あるリソースに対する複数のアクセスが競合したりして、外部からの制御が出来なくなる状態で、ハングアップ(Hung-up)と も呼ばれます。
複数のタスクで構成されたソフトウエアでは、あるタスクが必要なリソースが確保できないときに、開放待ち状態になります。この場合、リソースが開放されれ ば、そのタスクを実行できる状態となるので、これだけではデッド・ロックが発生しません。デッド・ロックになるのは、次のケースです。
タスク1とタスク2がある処理をするときに、ともにリソースAとリソースBを確保するとします。このとき、リソースを確保する順番が、タスク1は「リソー スA→リソースB」、タスク2は「リソースB→リソースA」で、2つのタスクが同時に処理を行えば、デッド・ロックが発生します。
この場合、タスク1はリソースAを確保した状態でリソースBを確保しようとしますが、タスク2がすでにリソースBを確保した状態でリソースAを確保しよう としている状態が考えられます。このとき、タスク1とタスク2は、1つのリソースを確保した状態で、もう1つのリソースが開放されるのを待ちます。ところ が、待ち状態になった2つのタスクが確保しているリソースを開放しないかぎり、次のリソースを確保することはできませんので、2つのタスクは永久にリソー ス待ち状態から抜け出すことができません。

他にご質問がございましたら、リクエストを送信してください