SlideShare uma empresa Scribd logo
1 de 33
CSPによる並行システムの検証
(2)
2013年7月10日
大阪大学
山形賴之
講義概要
• モデル検査器PATの紹介
• リアルタイムOSのモデル化
• 研究紹介:ZIPC-to-PAT
PAT
第1章
PAT
• Process Analysis Toolkit
– http://www.comp.nus.edu.sg/~pat/
– シンガポール国家大学で開発
– 教育、個人使用は無料
• モデル記述言語CSP#などをサポート
PATのアーキテクチャ
検証可能な性質
• デッドロック
• ライブロック
• アサーション
• リファインメント
• LTL式
デッドロック
システムが次の状態に移行できず停止する状態
• 例
1. プロセスA,BがリソースR,Qを占有しようとする
2. AがRを、BがQを占有
3. さらにAはQを、BはRを占有しようとする
4. しかし、それぞれすでにあいてのプロセスにより占
有済
5. デッドロック
LTL式
• 時間の経過を記述できる論理式
• 普通の命題論理式に次のオペレーターを追加
– G(lobally): 常に成り立つ
– F(uture): いずれ成り立つ
– U(ntil): ~までは~
• 例:
– G(req_h -> F act_h)
– (! act_l) U act_h
リアルタイムOSのモデル化
第2章
OSとは
• 計算機全体を制御するためのソフトウェ
ア
• アプリケーションやユーザーに環境を提
供
• 構成要素
– カーネル:ハードウェア資源の管理
– スケジューラ:タスクの実行の管理
– GUIなどのユーザーインターフェース
– 基本的なアプリケーション
• ブラウザなど
リアルタイムシステムとは
必要となったタスクが実行されるまでの時間にタ
イムリミットがあるもの
• ソフトリアルタイムシステム
– タイムリミットを過ぎてもシステム自体に致命的と
ならないもの
• ハードリアルタイムシステム
– タイムリミットを過ぎるとシステム自体に致命的と
なるもの
リアルタイムOSとは
• リアルタイムシステムのためのOS
• スケジューリングに特徴がある
– 優先度の高いタスクが即座に実行される
– 割込みが即座に処理される
• 例
– VxWorks
– μITRON(規格)
– REX OS(QualComm のベースバンドプロセッサ
用)
– Nucleus
モデル
• H,M,Lの3つのタスクがある
• 優先度はH>M>L
• それぞれreq_h, req_m, req_lで実行可能に
• 実行可能→フラグwait_h, wait_m, wait_l
プロセスの状態遷移
開始
act_h
[active == h][active == h]
act_h
{wait_h = false}
コード解説とデモ
• OS.csp
– 簡単なリアルタイムOS
• OS-PrivInv.csp
– 優先度逆転現象のシミュレーション
• OS-PriInh.csp
– Priority Inheritance法(?)のシミュレーショ
ン
ZIPC-TO-PAT
第3章
ZIPC
ZIPC C/C++
EHSTM
コード生成
シミュレーション
キャッツ株式会社で開発された開発ツールおよび手法
ソフトウェアの設計を拡張階層化状態遷移表(EHSTM)で表す
複数の表が同時に動作
表、状態、イベントは階層化されている
ZIPC (2)
UML以外のモデリングツールとしては日本でトップシェア
49%
40%
6%
6%
ZIPC
MATLAB/Simulink
Rational Test
RealTime
Rational Rose
RealTime
JASAによるET2010でのアンケートより
ZIPCモデルの自動検証
Garakabu
Garakabu2
ZIPC-to-PAT
2002 2007 2011
Garakabu(1,2)とZIPC-to-PATは次の性質を自動検証する
• システムがありえない状態に行かないこと
• 変数の値が制限を超えないこと
• 線形時相論理式で書ける任意の性質
福岡科学技術振興機構
福岡科学技術振興機構
産総研
九州大学
産総研
ZIPC-to-PAT
ZIPC
CSP
PAT
変換ルール
〔財〕ふくおかIST様との共同研究
(2010.9~2012.3)
Garakabu2より100~100
0倍程度高速
[UML&FM2012, ACM SEN2012]
Formal semantics of extended
hierarchical state transition matrix by
CSP
Yoriyuki Yamagata, Weiqiang
Kong, Akira Fukuda, Nguyen Van
Tang, Hitoshi Ohsaki and Kenji
Taguchi
シンガポール国家大学で開
発
[Formal Aspects of Computing] Formal semantics of extended hierarchical state transition
matrices by CSP#, Accepted
変換ルール
EHSTM CSP
システム プロセス
タスク プロセス
イベント階層化 並列合成
マトリックス プロセス
状態 大域変数
履歴 大域変数
イベント イベント
イベント仮想フレーム イベント列
式 式
Garakabu2との比較
EHSTM
論理式
遷移を有限の深さまで展開
CVC3
検証結果
CSP
並行プロセス言語
PAT
全状態探索
SMTソルバ
手作業(現状)
実験概要
• 実験1
– 複数タスクの場合のパフォーマンス比較
• 実験2
– 複数タスク、イベント階層化の場合のパ
フォーマンス比較
実験1 – モデル
実験1-検査式
• 不可セルへの到達可能性
• STC1≡G(returner==ret⇒changer==wait_money_taken)
• STC2≡G(changer==wait_request⇒returner==wait)
• DYN≡G((changer==wait_requiest
&& X changer== wait_money_taken)⇒
X returner==ret)
実験1
検査式 結果 PAT Garakabu2
不可セル 不成立 <1 384
STC1 不成立 0.085 26
STC2 不成立 0.13 47
DYN 不成立 0.0094 136
単位:秒
実験1’
Property Verdict PAT Garakabu2
不可セル 成立 0.0094 2716
STC1 成立 0.098 895
STC2 成立 0.098 1573
DYN 成立 0.12 3591
単位:秒
実験2-モデル
実験2-検査式
SSC1 := G(state_ReturnControl == R_ACTIVE -> state_MainControl ==
M_WAIT_BILL_TAKEN)
SSC2 := G(state_MainControl == M_ACTIVE -> state_ReturnControl ==
R_IDEL)
FCF1 := GF(BillOutputAmount > 0)
FCF2 := GF(xUserBillTake -> ((BillOutputAmount > 0) -> F UserBillObtained))
実験2-結果
検査式 結果 PAT Garakabu2
不可セル 成立 0.59 1
SSC1 成立 0.58 1
SSC2 成立 0.55 1
FCF1 不成立 0.023 91
FCF2 成立 0.094 83
分析
• PATの利点
– 高速(状態数が少ない時)
– 遷移の深さが無制限
• PATの問題点
– 無限状態が扱えない,
– スケールするか?
今後
• ZIPC-to-PATの自動化
– ZIPC XMLのパース
– 論理的部分の抽出
– CSPへのトランスレーター
• スケーラビリティ調査
今日のまとめ
• PATの紹介
• PATによる自動検証の実例
– リアルタイムOSの優先度逆転現象
• ZIPC-to-PATの紹介

Mais conteúdo relacionado

Semelhante a CSPによる並行システムの検証(2)

Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
 
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
洋史 東平
 

Semelhante a CSPによる並行システムの検証(2) (20)

ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
FIWAREシステム内の短期履歴の管理
FIWAREシステム内の短期履歴の管理FIWAREシステム内の短期履歴の管理
FIWAREシステム内の短期履歴の管理
 
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
 
20161011 intro-ohkawa lab-pub
20161011 intro-ohkawa lab-pub20161011 intro-ohkawa lab-pub
20161011 intro-ohkawa lab-pub
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
JJUG CCC 2014 ATL
JJUG CCC 2014 ATLJJUG CCC 2014 ATL
JJUG CCC 2014 ATL
 
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
 
2018 07-23
2018 07-232018 07-23
2018 07-23
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
自動チューニングとビックデータ:機械学習の適用の可能性
自動チューニングとビックデータ:機械学習の適用の可能性自動チューニングとビックデータ:機械学習の適用の可能性
自動チューニングとビックデータ:機械学習の適用の可能性
 
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前にPythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
 
第4回全脳アーキテクチャハッカソン説明会
第4回全脳アーキテクチャハッカソン説明会第4回全脳アーキテクチャハッカソン説明会
第4回全脳アーキテクチャハッカソン説明会
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 
Klab expert camp 成果発表
Klab expert camp 成果発表Klab expert camp 成果発表
Klab expert camp 成果発表
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 

Mais de Yamagata Yoriyuki

Consistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmeticConsistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmetic
Yamagata Yoriyuki
 
Rubyでデータマイニング: RubyKaigi2007ライトニングトーク
Rubyでデータマイニング: RubyKaigi2007ライトニングトークRubyでデータマイニング: RubyKaigi2007ライトニングトーク
Rubyでデータマイニング: RubyKaigi2007ライトニングトーク
Yamagata Yoriyuki
 
Bounded arithmetic in free logic
Bounded arithmetic in free logicBounded arithmetic in free logic
Bounded arithmetic in free logic
Yamagata Yoriyuki
 
Camomile - OCaml用Unicodeライブラリ
Camomile - OCaml用UnicodeライブラリCamomile - OCaml用Unicodeライブラリ
Camomile - OCaml用Unicodeライブラリ
Yamagata Yoriyuki
 
Camomile : A Unicode library for OCaml
Camomile : A Unicode library for OCamlCamomile : A Unicode library for OCaml
Camomile : A Unicode library for OCaml
Yamagata Yoriyuki
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010
Yamagata Yoriyuki
 

Mais de Yamagata Yoriyuki (16)

ヴォイニッチ手稿と私
ヴォイニッチ手稿と私ヴォイニッチ手稿と私
ヴォイニッチ手稿と私
 
Consistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmeticConsistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmetic
 
モデル検査紹介
モデル検査紹介モデル検査紹介
モデル検査紹介
 
CSPを用いたログ解析その他
CSPを用いたログ解析その他CSPを用いたログ解析その他
CSPを用いたログ解析その他
 
Consistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmeticConsistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmetic
 
Consistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmeticConsistency proof of a feasible arithmetic inside a bounded arithmetic
Consistency proof of a feasible arithmetic inside a bounded arithmetic
 
OCamlとUnicode
OCamlとUnicodeOCamlとUnicode
OCamlとUnicode
 
Rubyでデータマイニング: RubyKaigi2007ライトニングトーク
Rubyでデータマイニング: RubyKaigi2007ライトニングトークRubyでデータマイニング: RubyKaigi2007ライトニングトーク
Rubyでデータマイニング: RubyKaigi2007ライトニングトーク
 
Bounded arithmetic in free logic
Bounded arithmetic in free logicBounded arithmetic in free logic
Bounded arithmetic in free logic
 
Bounded arithmetic in free logic
Bounded arithmetic in free logicBounded arithmetic in free logic
Bounded arithmetic in free logic
 
UML&FM 2012
UML&FM 2012UML&FM 2012
UML&FM 2012
 
Translating STM to CSP
Translating STM to CSPTranslating STM to CSP
Translating STM to CSP
 
Camomile - OCaml用Unicodeライブラリ
Camomile - OCaml用UnicodeライブラリCamomile - OCaml用Unicodeライブラリ
Camomile - OCaml用Unicodeライブラリ
 
Camomile : A Unicode library for OCaml
Camomile : A Unicode library for OCamlCamomile : A Unicode library for OCaml
Camomile : A Unicode library for OCaml
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010
 
CamomileでUnicode
CamomileでUnicodeCamomileでUnicode
CamomileでUnicode
 

CSPによる並行システムの検証(2)