SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
猫でもわかる! 
モデル検査器 SPIN 入門 
チェシャ猫 (@y_taka_23) 
2014年12月6日 
NGK2014B 昼の部 LT
リソース共有問題 
● スキャナとプリンタを同時に使用したい 
● スキャナ・プリンタの使用は一度に 1 人のみ 
● クライアントが 2 人いる場合 
– クライアント A がスキャナを確保 
– クライアント B がプリンタを確保 
– A はプリンタの、B はスキャナの解放待ち 
– 両者ともに動けない (デッドロック) 
● 並行プロセスの相互作用による不具合
現実はさらに複雑 
● イレギュラーな挙動 
– 突然エラーが発生してプロセスが死ぬ 
– パケットが通信中に消失・破損する 
● プロセス間の複雑な相互作用 
– 非同期処理と同期処理が混在している 
– 通信に遅延が発生する
あり得る状態を全探索 
= モデル検査 (Model Checking)
Promela / SPIN 
● Promela (PROcess MEta LAnguage) 
– プロセスの振る舞いを記述する DSL 
– 手続き指向、C 言語風文法 
● SPIN (Simple Promela INterpreter) 
– Promela でモデル化されたシステムを検証 
– モデルが取り得るすべての状態を全探索
非決定的選択 
● 複数の遷移の可能性を考えられる 
● システムから制御不可能な要素をモデリング 
● SPIN は発生し得るすべての分岐を検査 
if 
:: mode == 0 -> input = 0; 
:: mode == 1 -> input = 0; 
:: mode == 1 -> input = 1; 
fi
インタリーブ実行 
● 文ごとに割り込みが発生し得る 
● 非同期マルチプロセスをモデリング 
● SPIN は発生し得るすべての実行順序を検査 
proctype incrementer() { 
tmp = acc; /* A */ 
acc = tmp + 1; /* B */ 
} 
proctype decrementer() { 
tmp = acc; /* C */ 
acc = tmp – 1; /* D */ 
}
線形時相論理 
● LTL (Linear Temporal Logic) とも呼ばれる 
● 時間的な前後関係を含む条件を検証 
– □ … 現在以降の任意の状態で条件が成立 
– ◇ … 現在以降のある状態で条件が成立 
● 例 : リクエストに対しいつかは応答がある 
[] (request => <> response) 
● 例:初期化後は常に有効 
[] (initialized => [] active)
興味のある人は 
● Basic Spin Manual 
– http://whitewash-net.or.jp/~hs7m-kwgc/ 
spin/Man/Manual_japanese.html 
● 書籍『SPIN モデル検査入門』 
– Mordechai Ben-Ari 著、中島震ら訳 
● 名古屋モデル検査勉強会 #2 資料 
– https://gist.github.com/y-taka-23/8419128 
presented by チェシャ猫 (@y_taka_23)

Contenu connexe

Tendances

ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
なおき きしだ
 

Tendances (20)

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
第10回 配信講義 計算科学技術特論B(2022)
第10回 配信講義 計算科学技術特論B(2022)第10回 配信講義 計算科学技術特論B(2022)
第10回 配信講義 計算科学技術特論B(2022)
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf
 
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
論文紹介 Semantic Mapping for Mobile Robotics Tasks: A Survey
論文紹介 Semantic Mapping for Mobile Robotics Tasks: A Survey論文紹介 Semantic Mapping for Mobile Robotics Tasks: A Survey
論文紹介 Semantic Mapping for Mobile Robotics Tasks: A Survey
 
FPGAX2019
FPGAX2019FPGAX2019
FPGAX2019
 

En vedette

En vedette (10)

Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight JavaHello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
 
すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!
 
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
 
Learn You a Frege for Great Good!
Learn You a Frege for Great Good!Learn You a Frege for Great Good!
Learn You a Frege for Great Good!
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Language
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
 
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
 
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 

Dernier

Dernier (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

猫でもわかる! モデル検査器 SPIN 入門

  • 1. 猫でもわかる! モデル検査器 SPIN 入門 チェシャ猫 (@y_taka_23) 2014年12月6日 NGK2014B 昼の部 LT
  • 2. リソース共有問題 ● スキャナとプリンタを同時に使用したい ● スキャナ・プリンタの使用は一度に 1 人のみ ● クライアントが 2 人いる場合 – クライアント A がスキャナを確保 – クライアント B がプリンタを確保 – A はプリンタの、B はスキャナの解放待ち – 両者ともに動けない (デッドロック) ● 並行プロセスの相互作用による不具合
  • 3. 現実はさらに複雑 ● イレギュラーな挙動 – 突然エラーが発生してプロセスが死ぬ – パケットが通信中に消失・破損する ● プロセス間の複雑な相互作用 – 非同期処理と同期処理が混在している – 通信に遅延が発生する
  • 5. Promela / SPIN ● Promela (PROcess MEta LAnguage) – プロセスの振る舞いを記述する DSL – 手続き指向、C 言語風文法 ● SPIN (Simple Promela INterpreter) – Promela でモデル化されたシステムを検証 – モデルが取り得るすべての状態を全探索
  • 6. 非決定的選択 ● 複数の遷移の可能性を考えられる ● システムから制御不可能な要素をモデリング ● SPIN は発生し得るすべての分岐を検査 if :: mode == 0 -> input = 0; :: mode == 1 -> input = 0; :: mode == 1 -> input = 1; fi
  • 7. インタリーブ実行 ● 文ごとに割り込みが発生し得る ● 非同期マルチプロセスをモデリング ● SPIN は発生し得るすべての実行順序を検査 proctype incrementer() { tmp = acc; /* A */ acc = tmp + 1; /* B */ } proctype decrementer() { tmp = acc; /* C */ acc = tmp – 1; /* D */ }
  • 8. 線形時相論理 ● LTL (Linear Temporal Logic) とも呼ばれる ● 時間的な前後関係を含む条件を検証 – □ … 現在以降の任意の状態で条件が成立 – ◇ … 現在以降のある状態で条件が成立 ● 例 : リクエストに対しいつかは応答がある [] (request => <> response) ● 例:初期化後は常に有効 [] (initialized => [] active)
  • 9. 興味のある人は ● Basic Spin Manual – http://whitewash-net.or.jp/~hs7m-kwgc/ spin/Man/Manual_japanese.html ● 書籍『SPIN モデル検査入門』 – Mordechai Ben-Ari 著、中島震ら訳 ● 名古屋モデル検査勉強会 #2 資料 – https://gist.github.com/y-taka-23/8419128 presented by チェシャ猫 (@y_taka_23)