デッドロックとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 日本語表現辞典 > デッドロックの意味・解説 

deadlock

別表記:デッドロック

「deadlock」の意味・「deadlock」とは

「deadlock」とは、英語の単語であり、日本語では「行き詰まり」や「僵局」などと訳されることが多い。具体的には、議論交渉などが進展しない状況、または互いに譲歩できずに進行不能に陥った状態を指す。例えば、労使交渉双方譲歩しないために話し合い進まない状況は、「deadlock」に陥った表現される

「deadlock」の発音・読み方

「deadlock」の発音は、IPA表記では /ˈdɛdlɒk/ となる。IPAカタカナ読みでは、「デッドロック」と読む。日本人発音するカタカナ英語では「デッドロック」となる。この単語発音によって意味や品詞が変わる単語ではない。

「deadlock」の定義を英語で解説

「deadlock」は、a situation in which no progress can be made or no advancement is possible定義される。つまり、何も進展しない、または進歩不可能な状況を指す。例えば、政治的な交渉双方譲歩しないために進展見られない状況は、「deadlock」と表現される

「deadlock」の類語

「deadlock」の類語としては、「stalemate」、「standstill」、「impasse」などがある。これらの単語同様に進展見られない状況進行不能に陥った状態を表す。

「deadlock」に関連する用語・表現

「deadlock」に関連する用語としては、「negotiation」(交渉)、「compromise」(妥協)、「concession」(譲歩)などがある。これらの単語は、「deadlock」が生じ議論交渉過程頻繁に用いられる

「deadlock」の例文

1. The negotiations ended in a deadlock.(交渉行き詰まり終わった
2. The two parties are in a deadlock over the budget.(二つの党は予算についての僵局に陥っている)
3. We need to break the deadlock and move forward.(僵局を打開し前に進む必要がある
4. The deadlock in the talks has caused concern among the public.(交渉行き詰まり公衆の間で懸念引き起こしている)
5. The union and the management reached a deadlock in their negotiations.(労組経営陣交渉行き詰まった
6. The committee is at a deadlock over the issue.(委員会はその問題について僵局に陥っている)
7. The deadlock was finally broken by a compromise.(僵局はついに妥協によって打開された)
8. The deadlock has delayed the project.(僵局がプロジェクト遅らせている)
9. The deadlock in the Senate is preventing the bill from being passed.(上院の僵局が法案の成立阻んでいる)
10. The dispute has reached a deadlock and seems unlikely to be resolved soon.(紛争行き詰まり達し近く解決する見込みなさそうだ)

デッドロック【deadlock】

読み方:でっどろっく

交渉などの、行き詰まり膠着(こうちゃく)状態。「—に陥る

コンピューター複数プログラム動作している際、プログラム間で互いの処理終了を待つなどして、半永久的な待機状態になること。ハングアップ原因になることが多い。

[補説] 「交渉はデッドロックに乗り上げた」という言い方は、lock錠前)をrock暗礁)と混同したころから生じたもの。


デッドロック [deadlock]


デッドロック

※「大車林」の内容は、発行日である2004年時点の情報となっております。

デッドロック

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/29 19:32 UTC 版)

デッドロックの例:処理 P1 はリソース R1 を要し、リソース R2 の出力を予定する。処理 P2 はリソース R2 を要し、リソース R1 の出力を予定する。
4つの処理(青線)が同一のリソース(中央の円)を要する。リソースは、複数の処理を同時には受け付けない。処理は左側より右側を優先する。全ての処理が同時に開始しようとすると、デッドロックが生ずる。デッドロックが生じた場合は、対称性を崩すことで解決される。

デッドロック: deadlock)とは、複数の処理単位が互いの終了を待ち続け、結果としてどの処理も進まないことである。

また、合弁契約書などにおいてパートナーと利害関係がぶつかるような問題が生じた場合の解決方法を定めた条項を「デッドロック条項(Deadlock Clause)」と言う。 英語ではもともと行き詰まりの意味である。

古い文献では、デッドロックのことをチェス用語と同様のステイルメイトと呼称して説明をしている場合がある[1]

プログラム上の例

デッドロックが発生する原因

基本的にデッドロックは資源数が2以上の場合に発生する(たとえばクリティカルセクションが1つあれば資源は1つと数えられる。2つのクリティカルセクションがあれば資源数は2である)。資源数が1の場合、セマフォ等はバイナリセマフォとなり、振る舞いはミューテックスと同じになるのでデッドロックは発生しない(ライブロックする。これを回避する方法は数多く考案されており、たとえばCSMA/CDでは乱数を用いて回避する)。

資源数を1にすることは、デッドロックを回避する根本的な解決方法であるが、その場合プログラムの並列性は著しく損なわれるため、現代のコンピュータープログラミングにおいて現実的な手段とは言えない。資源を多数用い、なおかつデッドロックを回避する手段については以下に述べる。

クリティカルセクション排他制御を用いた場合の例をあげる。 変数A変数Bの2つのデータと、BにAの値を加算し、Aを0にする処理AAにBの値を加算し、Bを0にする処理Bの2つの処理があったとする。マルチスレッドで処理をするため変数A変数BにアクセスするためのクリティカルセクションA(以下CSA)とクリティカルセクションB(以下CSB)の2つのクリティカルセクションを用意する。

処理Aは以下の手順であるとする。

  1. CSAに入る
  2. CSBに入る
  3. BにAの値を加算
  4. Aに0を代入
  5. CSBから出る
  6. CSAから出る

また同様に処理Bは以下の手順であるとする。

  1. CSBに入る
  2. CSAに入る
  3. AにBの値を加算
  4. Bに0を代入
  5. CSAから出る
  6. CSBから出る

この場合は以下のようにプログラムが動作するとデッドロックが発生する。 処理Aを実行するスレッドAが生成され、処理が開始する。処理Aの1でCSAに入った直後にコンテキストスイッチが発生し、処理Bを実行するスレッドBが生成され、処理Bの1でCSBに入る。そして再びコンテキストスイッチが発生しスレッドAがアクティブになり、2でCSBに入ろうと試みる。しかし、スレッドBが既にCSBに入っているためスレッドAは待機状態に入り、スレッドBがアクティブになる。スレッドBは同じく2でCSAに入ろうと試みるがスレッドAが既にCSAに入っているためスレッドBは待機状態に入ってしまう。

こうして両方のスレッドが待機状態になり、プログラムが停止してしまう。この状態がデッドロックである。

以上の処理を時間に沿ってまとめたものが以下の表である。

スレッドA スレッドB CSAの所有者 CSBの所有者
スレッド発生
処理Aを開始
CSAに入る スレッドA
コンテキストスイッチ A→B
待機 スレッド発生
処理Bを開始
CSBに入る スレッドB
コンテキストスイッチ B→A
CSBへ入ることに失敗 待機
コンテキストスイッチ A→B
CSBの解放を待機 CSAへ入ることに失敗
CSAの解放を待機
デッドロックの発生

回避方法

以上のようなデッドロックを回避するには以下のような方法がある。

  • CSACSBに入る順番を2つの処理で同じにする
  • “変数Aと変数Bにアクセスする”というミューテックスを用いる
  • クリティカルセクションに入れない場合は、既に入っているクリティカルセクションから出て処理を終了するようにする

他にも様々な回避方法が存在する。

優先度上限プロトコル機能が拡張されたミューテックスを利用することでも、デッドロックを回避することが可能である。優先度上限プロトコルは組み込みシステムで主に使われ、使うことで効果があるプログラムも限定的であり、汎用的に使える方法ではない。

オブジェクト指向プログラミングでの回避方法

オブジェクト指向プログラミングでは、クラス間の依存関係を単方向にし、クラス間の依存関係の構造が階層構造になるように設計するのが、必須ではないものの定石である。en:Hierarchy (object-oriented programming)。ここでは、独立している方を下と定義する。つまり、上の階層のクラスは、下の階層のクラスについて知っている。下の階層のクラスは、上の階層のクラスについて知らない。上の階層のクラスから、下の階層のクラスへの呼び出しは、普通のメソッド呼び出しで行う。下の階層から、上の階層に戻すときは、Observerパターンを使う。階層構造をとる軍隊にたとえると、メソッド呼び出しが上官からの命令であり、Observerパターンが部下から上官への報告である。

そして、デッドロックを回避するには、ロックをかけるオブジェクトのクラスの順番を統一するというのが一つの方法である。そして、クラスの依存関係が階層構造になっているときは、必ず、上の階層のクラスから順番にロックをかけるということで統一する。そうすると、上の階層でロックをかけたまま、下の階層のオブジェクトのメソッドを呼び出すことが可能になる。軍隊の比喩でいうと、上官が部下よりも先にリソースを独占する。

また、Observerパターンで上の階層に戻す場合は、自分のかけているロックを全て解放してから、上の階層に戻す。そうすることにより、「下の階層でロック→上の階層でロック」の発生を防げる。また、同じ階層同士ではロックをかけない。それが必要な場合は、上の階層でロックをかける。こうすることにより、デッドロックを回避できる。

Lock-free での回避

Lock-freeとWait-freeアルゴリズムでもデッドロックを回避できる。

交通での例

日本兵庫県加古川市加古川町には、兵庫県道148号線の道中に、4方向に止まれ標識がある十字路がある。3方向に同時に車両が来た場合については、道路交通法第36条で、交差点中心を見て左側の車両を優先的に通過させるよう定められている。しかしながら、4方向に同時に車両が来た場合について明確な定めはない。なお、兵庫県警察は同件の取材者に対し、身振り手振りで意思疎通し、徐行しながら通り過ぎることを推奨する見解を提示している。 https://kuruma-news.jp/post/574471

脚注

  1. ^ J.DONOVAN 1972, p. 393-395,475.

参考文献

関連項目



デッドロック

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/15 08:56 UTC 版)

トランザクション処理」の記事における「デッドロック」の解説

詳細は「デッドロック」を参照 場合によっては、2つトランザクションの処理中にデータベース内の同じ部分同時にアクセスようとして互いの処理の進行妨げ場合がある。例えば、トランザクション A が X にアクセスし、トランザクション B が Y にアクセスしているとしよう。その状態で、A が Y にアクセスしようとし、B が X にアクセスようとしたとき「デッドロック」が発生し、どちらのトランザクション先に進めなくなる。トランザクション処理システムそのようなデッドロックが発生するのを検出するよう設計されている。通常両方トランザクションキャンセルしロールバックする。そして、自動的に順序変えて実行し、デッドロックが再度発生しないようにする。

※この「デッドロック」の解説は、「トランザクション処理」の解説の一部です。
「デッドロック」を含む「トランザクション処理」の記事については、「トランザクション処理」の概要を参照ください。

ウィキペディア小見出し辞書の「デッドロック」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

','','','','','','','','','','','','','','','','','',''];function getDictCodeItems(a){return dictCodeList[a]};

すべての辞書の索引

「デッドロック」の関連用語




4
行止り デジタル大辞泉
72% |||||

5
行詰り デジタル大辞泉
72% |||||




9
暗礁 デジタル大辞泉
54% |||||


デッドロックのお隣キーワード
検索ランキング
';function getSideRankTable(){return sideRankTable};

   

英語⇒日本語
日本語⇒英語
   



デッドロックのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
実用日本語表現辞典実用日本語表現辞典
Copyright © 2024実用日本語表現辞典 All Rights Reserved.
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.
三栄書房三栄書房
Copyright c San-eishobo Publishing Co.,Ltd.All Rights Reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのデッドロック (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのトランザクション処理 (改訂履歴)、排他制御 (改訂履歴)、トランスフォーマー レジェンズ (改訂履歴)、ロック (計算機科学) (改訂履歴)、学園都市 (とある魔術の禁書目録) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS