JP4637175B2 - 二次的に実行されるプロセスにおけるデッドロックを検出する方法 - Google Patents
二次的に実行されるプロセスにおけるデッドロックを検出する方法 Download PDFInfo
- Publication number
- JP4637175B2 JP4637175B2 JP2007512180A JP2007512180A JP4637175B2 JP 4637175 B2 JP4637175 B2 JP 4637175B2 JP 2007512180 A JP2007512180 A JP 2007512180A JP 2007512180 A JP2007512180 A JP 2007512180A JP 4637175 B2 JP4637175 B2 JP 4637175B2
- Authority
- JP
- Japan
- Prior art keywords
- state
- deadlock
- active
- system model
- objects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
a)オブジェクト指向のシステムモデルの全てのアクティブなオブジェクトを抽出する。
b)アクティブなオブジェクトによって消費されるイベントおよび/または生成されるイベント、オブジェクトの間の遷移、およびオブジェクトの状態振る舞いを記述するシステムモデルを記述するためのUMLシステムモデルの状態マシンのガード条件を少なくとも識別する。
c)所定の状態にある別のオブジェクトを所定の状態において待機するオブジェクトのリストとして、イベントからアクティブなオブジェクト間の状態・待機関係を形成する。
d)相互に待機している2つまたは複数の異なるオブジェクトのインスタンスの周期としての考えられるデッドロック状況を求める。ここで各デッドロック状況に関して、この周期においては1つ以上の状態を持つオブジェクトは包含されておらず、また、この周期のいずれのオブジェクトも周期外のオブジェクトを待機しない。
e)求められた考えられるデッドロック状況の到達可能性を分析するために、求められたデッドロック状況に繋がり且つUMLシステムモデルの状態マシンから導出される全ての考えられるパスを、イベントおよびアクティブな遷移を考慮して、UMLシステムモデルをシミュレーション的に実施することによって検査する。
図1はデッドロックを検出する本発明による方法のフローチャートを示し、
図2は例示的な測定システムモデルの静的なシステム構造(クラス図)を示し、
図3は図2による例示的な測定システムモデルの動的なシステム構造を示し、
図4は例示的な測定システムモデルのコントローラの振る舞いの詳細図を示し、
図5は例示的な測定システムモデルの第1のセンサの振る舞いの詳細図を示し、
図6は例示的な測定システムモデルの第2のセンサの振る舞いの詳細図を示し、
図7は例示的な測定システムモデルのクロックの振る舞いの詳細図を示し、
図8は例示的な測定システムのユーザの振る舞いの詳細図を示し、
図9は潜在的なデッドロックを識別するための例示的な実行の状態待ちグラフを示し、
図10は測定システムモデルを例とした本発明による方法の分析結果を表すシーケンス図を示す。
ガード条件、イベントパラメータ値および属性値。
初期化後に状態「Start」において命令「Controller.Start」によって制御ユニットが始動され、イベント「Give_Measured Value」が制御ユニットから要求されることによって状態「Observer」が呼び出される。続く状態「Observer2」においては制御ユニットによって測定値が待機され、またループにおいては制御ユニットからのリクエスト「Give_Measured Value」によってさらなる測定が要求される。状態は制御ユニットへの命令「Controller.Stop」によって終了される。
Object Action
Object 1 {[state, target object, target event],...}
ここでアクションテーブルにおいては、エントリObjectの下にオブジェクト名を発見することができ、またエントリActionの下に0〜m個の複数のアクションを発見することができ、これらのアクションはそれぞれコンポーネントstate,target object,target eventから構成されている。個数mは遷移によってトリガすることができるアクションの数である。stateは、所属の遷移が切り替えられたときにオブジェクトがアクションを生じさせることができる状態マシンの状態である。target objectは呼出アクションがアドレッシングするオブジェクトである。target eventは、イベントの際に生じ、且つ入力待ち行列に置かれるtarget objectのイベントである。
Object Wait set
Object 1 [State 1, (Object 2. State 1, Object 2. State 2)], [State 2, (Object 3. State 2)]...
ここではアクションテーブルと同様にエントリObjectの下にオブジェクト名が記されている。待機セットは、オブジェクトの状態マシンの各状態に関して、複数のオブジェクト・状態組み合わせを記憶することができるように構成されている。オブジェクト・状態組み合わせは「Object.State」の形式を取り、ここで「Object」は待機されるオブジェクトを表し、「State」は待機される状態を表す。
クラス数=5
オブジェクトリスト = [User -> Object, Con -> Object, Sn1 -> Object, Sn2 -> Object, U -> Object]
クラスリスト = [User -> Class, Controller -> Class, Sensor1 -> Class, Sensor -> Class, Clock -> Class]
アクションテーブル
Object Action
User ([Start, Con, Start])
Con ([Parameterizing, U, Start], [Measurement1, Sn2, Request_Measured Value], [Measurement2, User, Give_Measured Value], [Measurement2, Sn1, Request_Measured Value], [Measurement2, Clock, Stop], [Measurement2, Sn1, Stop], [Measurement2, Sn2, Stop])
Sn1 ([Measure, U, Request_Time Stamp_Sensor1], [Fetch_Time, Con, Give_Measured Value_Sensor1])
Sn2 ([Measure, U, Request_Time Stamp_Sensor2], [Fetch Time, Con, Give_Measured Value_Sensor2])
U ([current, Sn1, Give_Time Starnp], [Request_One, Sn2, Give_Time Stamp])
待機セットテーブル:
Object Wait set
User [Observe, (Con.Measurement2)], [Observe2, (Con.Measurement 2)]
Con [Parameterizing, (User.Start)], [Measurement1, (Sn1.Fetch_Time)], [Measurement2, (User.Observe2)]
Sn1 [Measure, (Con.Measurement2)], [Fetch_Time (U.Current)]
Sn2 [Measure, (Con.Measurement1)], [Fetch_Time, (U.Request_One)]
U [Parameterizing, (Con.Perametering)], [Current, (Sn2.Measure)], [Request_One, (Sn2.Measure, Con.Measurement2)]
a)1つのオブジェクトが複数の状態を有し、デッドロックに関与している。
b)デッドロックに関与しないオブジェクトについてのエッジが存在する。
c)ただ1つのオブジェクトのみがデッドロックに関与している。
((User.Observe2, Con.Measurement2), (Con.Measurement1, Sn1.Fetch_Time, U.Current, Sn2.Measure))
((Con.Measurement1, Sn1.Fetch_Time, U.Current, Sn2.Measure))
パスリスト = {[(Z1, Z2),...,(Zi, Zj)],...},
ここで(Z1,Z2)は対応付けられた組であり、Z1は遷移の起源状態であり、Z2は遷移の目標状態を表し、Zjは潜在的なデッドロック状況のセットにある。
<O_1.Z,...,O_n.Z, O_1.A_1,...,O_n.A_m, ES_1,... ES_n>
によって与えられており、ここでO_i, 1< i <n, m >= nはそれぞれのオブジェクトを表し、またZはオブジェクトのその都度の目下の状態を表す。
A_j, 1 <= j <= mは該当するオブジェクトのその都度の属性の目下の値であり、また
ES_iはO_iの入力待ち行列である。
{[M_a, (O.Z_a, O.Z_b), M_z]},
ここでM_aはモデルの初期状態であり、M_zはシミュレーションの中断前の最後の状態であり、(O.Z_a, O.Z_b)はオブジェクトのZ_a,からZ_bへの遷移を表す。
入力:
選別後の潜在的なデッドロック状況のセット = {{Con.Measurement1, Sn1.Fetch_Time, U.Current, Sn2.Measure}}
出力:
Path List_User = {(Start, Observe)}
Path List_Con = ({Parameterizing, Measurement1)}
Path List_Sn1 = {(Measure,Fetch_Time)}
Path List_Sn2 = {}
Path list_U = {(Parameterizing, Current)}
Trace_Set = {<User.Start, Con.Parameterizing, Sn1.Measure, Sn2.Measure, U.Parameterizing, Con.A.Measured value1 = 99.9, Con.A.Measured value2 = 99.9, Sn1.A.Current = 999, U.A.Time stamp = 999, User.ES = [], Con.ES = [], Sn1.ES = [], Sn2. ES = [], U.ES = []>, (User.Start, User.Observe), <User.Observe, Con.Parameterizing, Sn1.Measure, Sn2.Measure.U.Parameterizing, Con.A.Measured value1 = 99.9, Con.A.Measured value2 = 99.9, Sn1.A.Current = 999, U.A.Time stamp = 999, User.ES = [], Con.ES = [Start], Sn1.ES = [], Sn2.ES = [], U.ES = []>, (Con.Parameterizing, Con.Measurement1), > User.Observe, Con.Measurement1, Sn1.Measure, Sn2.Measure, U.Parameterizing, Con. A.Measured value1 = 99.9, Con.A.Measured value2 = 99.9, Sn1.A.Current = 999, U.A Time stamp = 999, User.ES =[], Con.ES = [], Sn1.ES = [Request_Measure Value], Sn2.ES = [], U.ES = [Start] >, (U.Parameterizing.U.Current), <User.Observe, Con.Measurement1, Sn1.Measure, Sn2.Measure, U.Current, Con.A.Measured value1 = 99.9, Con.A.Measured value2 = 99.9, Sn1.A.Current = 999, U.A.Time stamp = 999, User.ES = [], Con.ES = [], Sn1.ES = [Request_Measured Value], Sn2.ES = [], U.ES = [] >, (SN1.Measure, Sn1.Fetch_Time), <User.Observe, Con.Measurement1, Sn1.Fetch_Time, Sn2.Measure, U.Current, Con.A.Measured value1 = 99.9, Con.A.Measured value 2 = 99.9, Sn1.A.Current = 999, U.A.Time stamp = 999, User.ES = [], Con.ES = [], Sn1.ES = [], Sn2.ES = [], U.ES = [Request_Time Stamp_Sensor1]>}
Claims (10)
- リアクティブシステムのオブジェクト指向で記述されたシステムモデルに関して、或る状態にある少なくとも1つのオブジェクトが所定の状態にある異なるオブジェクトを待機する、二次的に実行されるプロセスにおけるデッドロックを検出する方法において、
コンピュータが以下のステップ、すなわち、
a)オブジェクト指向の前記システムモデルの全てのアクティブなオブジェクトを抽出するステップ、
b)アクティブな前記オブジェクトの状態振る舞いを記述するために、オブジェクトに所属する状態マシンにおいて、アクティブな前記オブジェクトによって消費されるイベントおよび/または生成されるイベント、前記オブジェクトの間の遷移、前記消費されるイベントおよび/または生成されるイベントのオブジェクト・状態組み合わせおよび状態を少なくとも識別するステップ、
c)所定の状態にある別のオブジェクトを所定の状態において待機するオブジェクトのリストとして、イベントから前記アクティブなオブジェクト間の状態・待機関係を形成するステップ、
d)2つまたは複数の異なるオブジェクトがそれぞれ特定の状態において相互に所定のイベントの発生を待機する周期としての考えられるデッドロック状況を求めるステップ、この際、前記周期においては1つ以上の状態を有するオブジェクトは包含されておらず、且つ前記周期のいずれのオブジェクトも前記周期外のオブジェクトを待機せず、
各デッドロック状況に関して、
e)求められた前記考えられるデッドロック状況の到達可能性を分析するために、求められたデッドロック状況に繋がり且つ前記システムモデルの前記状態マシンから導出される全ての考えられるパスを、前記イベントおよびアクティブな前記遷移を考慮して、前記システムモデルをシミュレーションすることによって検査するステップ
を実施することを特徴とする、二次的に実行されるプロセスにおけるデッドロックを検出する方法。 - 全てのアクティブなオブジェクトを抽出する前記ステップa)において、前記アクティブなオブジェクトを前記システムモデルの静的および動的な構造態様から抽出し、オブジェクトリストに記憶する、請求項1記載の方法。
- 各アクティブなオブジェクトに対して、対応付けられているクラスをクラスリストに記憶し、前記クラスリストにおける各クラスに対して、状態マシンを特定するために所属の状態図を評価し、特定された前記状態マシンを状態マシンリストに記憶する、請求項1または2記載の方法。
- 公知の深さ優先探索方式を用いて、前記考えられるデッドロック状況を求める、請求項1から3までのいずれか1項記載の方法。
- 求められた前記考えられるデッドロック状況の到達可能性の検査を、前記システムモデルの初期状態に基づいて、その都度のアクティブな遷移を求め、且つ前記システムモデルを前記デッドロック状況に近付けるアクティブな遷移を選択することによって発見的に行う、請求項1から4までのいずれか1項記載の方法。
- 前記ステップb)における識別を2つのステップで実施し、第2のステップにおいては、以下の特性、すなわち:
a)1つのオブジェクトが複数の状態を有し、デッドロックに関与している、
b)考えられるデッドロックに関与しないオブジェクトについての状態待ち関係において待ち関係が存在する、
c)ただ1つのオブジェクトのみが考えられるデッドロックに関与している、
を有する潜在的なデッドロック状況を潜在的なデッドロックのセットから選別する、請求項1から5までのいずれか1項記載の方法。 - 前記状態およびオブジェクト・状態組み合わせを待機セットテーブルに記憶する、請求項1から6までのいずれか1項記載の方法。
- 待機セットテーブルにおいて、前記所属のオブジェクトに関する前記消費されるイベントおよび/または生成されるイベントの待機状態が真であり、且つ前記オブジェクトの前記イベントが入力待ち行列にある場合にアクティブな遷移が存在する、請求項1から7までのいずれか1項記載の方法。
- 各デッドロック状況に関して考えられる全てのパスを検査する前記ステップe)を、デッドロック状況に到達するか、全てのパスが所定数(n)実行されるまで反復的に実施する、請求項1から8までのいずれか1項記載の方法。
- 前記システムモデルは統一モデリング言語で記述されている、請求項1から9までのいずれか1項記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004021975A DE102004021975A1 (de) | 2004-05-04 | 2004-05-04 | Verfahren zur Bestimmung von Verklemmungen in nebenläufigen Prozessen |
PCT/EP2005/051986 WO2005109196A1 (de) | 2004-05-04 | 2005-05-02 | Verfahren zur bestimmung von verklemmungen in nebenläufigen prozessen |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007536661A JP2007536661A (ja) | 2007-12-13 |
JP4637175B2 true JP4637175B2 (ja) | 2011-02-23 |
Family
ID=34967422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007512180A Expired - Fee Related JP4637175B2 (ja) | 2004-05-04 | 2005-05-02 | 二次的に実行されるプロセスにおけるデッドロックを検出する方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20080092147A1 (ja) |
EP (1) | EP1745375A1 (ja) |
JP (1) | JP4637175B2 (ja) |
DE (1) | DE102004021975A1 (ja) |
WO (1) | WO2005109196A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070101338A1 (en) * | 2005-10-31 | 2007-05-03 | Microsoft Corporation | Detection, diagnosis and resolution of deadlocks and hangs |
US7958512B2 (en) * | 2005-10-31 | 2011-06-07 | Microsoft Corporation | Instrumentation to find the thread or process responsible for an application failure |
JP2008282165A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Mitsubishi-Electric Industrial System Corp | バッチ制御装置及びバッチ制御方法 |
US10283978B2 (en) * | 2016-06-27 | 2019-05-07 | Lg Chem, Ltd. | Diagnostic system for a battery system |
US10108767B1 (en) * | 2016-09-30 | 2018-10-23 | Cadence Design Systems, Inc. | Methods, systems, and computer program product for implementing deadlock detection with formal verification techniques in an electronic design |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2027934C (en) * | 1989-12-22 | 1994-06-21 | Cherie C. Barnes | Accelerated deadlock detection in congested data transactions |
US5734837A (en) * | 1994-01-14 | 1998-03-31 | Action Technologies, Inc. | Method and apparatus for building business process applications in terms of its workflows |
US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
KR20010020250A (ko) * | 1997-05-08 | 2001-03-15 | 코야마 리오 | 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기 |
EP0938045A1 (en) * | 1998-02-19 | 1999-08-25 | IMEC vzw | Method and apparatus for efficient verification using a generalised partial order analysis |
US20050237949A1 (en) * | 2000-12-21 | 2005-10-27 | Addessi Vincent M | Dynamic connection structure for file transfer |
US7715819B2 (en) * | 2001-08-03 | 2010-05-11 | The Boeing Company | Airborne security manager |
EP1343079A1 (de) * | 2002-03-07 | 2003-09-10 | Infix Software-Systeme GmbH | Verfahren, Software-Produkt und System zur universellen computergestützen Informationsverarbeitung |
US7337290B2 (en) * | 2003-04-03 | 2008-02-26 | Oracle International Corporation | Deadlock resolution through lock requeing |
-
2004
- 2004-05-04 DE DE102004021975A patent/DE102004021975A1/de not_active Withdrawn
-
2005
- 2005-05-02 WO PCT/EP2005/051986 patent/WO2005109196A1/de not_active Application Discontinuation
- 2005-05-02 EP EP05742661A patent/EP1745375A1/de not_active Withdrawn
- 2005-05-02 JP JP2007512180A patent/JP4637175B2/ja not_active Expired - Fee Related
- 2005-05-02 US US11/579,554 patent/US20080092147A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2005109196A1 (de) | 2005-11-17 |
DE102004021975A1 (de) | 2005-12-01 |
EP1745375A1 (de) | 2007-01-24 |
US20080092147A1 (en) | 2008-04-17 |
JP2007536661A (ja) | 2007-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Aichernig et al. | Killing strategies for model‐based mutation testing | |
US8589884B2 (en) | Method and system for identifying regression test cases for a software | |
Lima et al. | Formal verification and validation of UML 2.0 sequence diagrams using source and destination of messages | |
Panthi et al. | Automatic test case generation using sequence diagram | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
AbouTrab et al. | Testing real-time embedded systems using timed automata based approaches | |
JP4637175B2 (ja) | 二次的に実行されるプロセスにおけるデッドロックを検出する方法 | |
Apvrille et al. | Prototyping an embedded automotive system from its UML/SysML models | |
CN106411635A (zh) | 一种实时协议的形式化分析及验证方法 | |
Suman et al. | Extracting State Models for Black-Box Software Components. | |
Moreno-Delgado et al. | Modular DSLs for flexible analysis: An e-Motions reimplementation of Palladio | |
Jafari et al. | Performance analysis of distributed and asynchronous systems using probabilistic timed actors | |
Sabouri et al. | Reducing the verification cost of evolving product families using static analysis techniques | |
Omri et al. | An enhanced fault prediction model for embedded software based on code churn, complexity metrics, and static analysis results | |
Moiseev et al. | A static analysis approach to data race detection in systemc designs | |
Gougam et al. | Discriminability analysis of supervision patterns by net unfoldings | |
Larsen et al. | Compositional testing of real-time systems | |
Drusinsky et al. | Validating quality attribute requirements via execution‐based model checking | |
Hunter et al. | Systematically deriving partial oracles for testing concurrent programs | |
Garg et al. | A method for measuring the constraint complexity of components in automotive embedded software systems | |
Zhang et al. | Modeling a heterogeneous embedded system in coloured Petri nets | |
Ding | Static analysis of concurrent programs using ordinary differential equations | |
Damasceno et al. | Testing real-time systems from compositional symbolic specifications | |
Andersson et al. | Validating temporal behavior models of complex real-time systems | |
Andersson et al. | A framework for analysis of timing and resource utilization targeting complex embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091030 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100128 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100204 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100301 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100308 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100326 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100402 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100428 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101022 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101122 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131203 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |