デッドロック問題 lock-r2 lock-r1 (blocked)   lock-r2 (blocked) lock-r1  

Slides:



Advertisements
Similar presentations
©2008 Ikuo Tahara探索 状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索 評価関数を利用した探索アルゴリズム 分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム.
Advertisements

情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
正規表現からのDFA直接構成.
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
   Webサイトの       ROIについて 理工学部 情報学科 吉田 克己.
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
遺伝的アルゴリズム  新川 大貴.
オペレーティングシステム (プロセス管理)
オムニチャネル、グローバルリスク対応 R&Dコンサルティングのご提案 オムニチャネル、グローバルリスク対応
オペレーティングシステム 第5回 プロセスの相互排除
オペレーティングシステムJ/K 2004年10月7日
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
オペレーティングシステム 第6回 プロセス間通信
並列分散プログラミング.
言語処理系(9) 金子敬一.
変数のスコープの設計判断能力 を育成するプログラミング教育
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ベイジアンネットワーク概説 3.6 構造の探索アルゴリズム
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
Tokuda Lab. NISHIMURA Taichi
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
CONCURRENT PROGRAMMING
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
大域的データフロー解析 流れグラフ 開始ブロック 基本ブロックをnodeとし、 基本ブロック間の制御関係をedgeとするグラフを、
速報: Boehm GC version 6.0α1 遠藤 敏夫.
並行プログラムと同期.
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
オペレーティングシステム 第3回( ) デッドロックと排他制御.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理)
決定木とランダムフォレスト 和田 俊和.
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
マルチスレッド処理 マルチプロセス処理について
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
アルゴリズムとプログラミング (Algorithms and Programming)
レジスタの割付け 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第12章5節.
二分探索木における要素削除 データ構造とプログラミング(10)
動的データ依存関係解析を用いた Javaプログラムスライス手法
予測に用いる数学 2004/05/07 ide.
Talkプログラムのヒント 1 CS-B3 ネットワークプログラミング  &情報科学科実験I.
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステム 第7回 デッドロック
パターンマイニング技術を 用いた実時間プログラムの コーディングパターン検出
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
関数型言語による Timed CSP 検証技法の提案
組込みシステムとは コンピュータ制御システム?
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
Max Cut and the Smallest Eigenvalue 論文紹介
「マイグレーションを支援する分散集合オブジェクト」
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステム (プロセス管理)
グラフ-ベクトル変換を用いたグラフ構造表現による一般物体認識
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

デッドロック問題 lock-r2 lock-r1 (blocked)   lock-r2 (blocked) lock-r1  

デッドロック問題 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … ②横取り ① ③ ⑤blocked ④blocked

応用情報技術者試験問題では

デッドロック問題 タスク1 … receive mbox1; send mbox2; タスク2 … receive mbox2; ① ③ ②blocked ④blocked 他に mbox1, mbox2 に send するタスクがなければデッドロック

資源割り付けグラフ タスク1 lock(block) 保持 r2 r1 タスク2 保持 lock(block)

資源割り付けグラフ 唯一の sender タスク1 receive(mbox1) mbox1 mbox2 タスク2 唯一の sender

デッドロック発生の4条件 ③ホールド&ウェイト タスク1 要求 保持 r2 r1 ④循環待ち タスク2 ①相互排除 ②横取り不可 保持 要求

ダチョウのアルゴリズム(Wikipediaより) ダチョウ・アルゴリズム(英: Ostrich algorithm)とは、計算機科学において、 発生頻度が極めて稀であるとの考えに基き、「頭を砂の中に突っ込み、問題がないようなふりをする」ダチョウのように潜在的な問題を無視するという戦略である。問題の発生を防止するよりも、問題が起きたほうがコストが低いということを仮定している。 この方法は、並列プログラミングでのデッドロックに問題に対して、デッドロックが発生する可能性が極めて低く、解決や防止のコストが極めて高いとみなされれば、対策として用いることができる。 代償として利便性や正確性が失われる。 ダチョウ・アルゴリズムは回避(銀行家のアルゴリズム)、防止、検知と復活といったデッドロックの対処方法の一つである。

タイムアウト付きlock タスク … if (lock-wto(r1)) { クリティカルセクション unlock r1; } else { アプリケーション定義の例外処理 }

mutexの一括取得のための疑似コード タスク holdAll = false; while (!holdAll) { if (!(lock-noblock(r1)) { lock(r1); } else if (!lock-noblock(r2)) { unlock(r1); lock(r2); } else { holdAll = true; } クリティカルセクション unlock r2; unlock r1; …

循環待ちの解消 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … lock r2;

循環待ちの解消 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … lock r2;

デッドロック検出と復旧 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … ②横取り ① ③ ⑤blocked (デッドロック検出) ④blocked

デッドロック検出と復旧 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … ②横取り ロールバック ① ③ ⑤blocked (デッドロック検出) ④blocked

デッドロックの検出と復旧 タスク1 要求 保持 r2 r1 タスク2 保持 要求

デッドロックの検出と復旧 タスク1 r2 r1 タスク2 保持 要求

デッドロック検出と復旧 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … チェックポイント(状態保存) ロールバック

デッドロックの回避 タスク1 … lock r1; lock r2; unlock r2; unlock r1; タスク2 … ②横取り ③blockしたい ①

デッドロック回避のための資源割り付けグラフ タスク1 取得予定 取得予定 r2 r1 取得予定 タスク2 取得予定

デッドロック回避のための資源割り付けグラフ タスク1 取得予定 保持 r2 r1 取得予定 タスク2 取得予定

デッドロック回避のための資源割り付けグラフ タスク1 取得予定 保持 r2 r1 × タスク2 取得予定

デッドロック回避のための資源割り付けグラフ タスク1 取得予定 保持 r2 r1 要求(block) タスク2 取得予定

デッドロック回避のための資源割り付けグラフ タスク1 取得予定 取得予定 r2 r1 タスク2 取得予定