Mercurial > hg > Papers > 2020 > ikkun-sigos
changeset 28:43d413be71c4
fix
author | ikkun <ikkun@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 28 May 2020 01:39:29 +0900 |
parents | eeaaa64b2916 |
children | d460c442d596 |
files | presen/sigos.html presen/sigos.md |
diffstat | 2 files changed, 59 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/sigos.html Thu May 28 01:31:29 2020 +0900 +++ b/presen/sigos.html Thu May 28 01:39:29 2020 +0900 @@ -12,7 +12,7 @@ /* @theme example */div#p>svg>foreignObject>section{background-image:url("assets/logo.svg");background-position:right 3% bottom 2%;background-repeat:no-repeat;background-attachment:5%;background-size:20% auto} -/* @theme vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr */div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="1" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +/* @theme za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj */div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="1" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content> Gears OSでモデル検査を実現する手法について</span></foreignObject></svg></h1> <ul> <li>東恩納 琢偉 @@ -22,7 +22,7 @@ </li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="2" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="2" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>研究目的</h1> <ul> <li>OS上ではさまざまなアプリケーションやサービスが提供されるが、予期しないエラーが起こり得る。</li> @@ -30,7 +30,7 @@ <li>またGearsOS そのものをGearsOS上でモデル検査することに関しても考察する。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="3" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="3" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>Gears OS</h1> <ul> <li>軽量継続を基本とする言語 Contnution based C を用いて記述されている。</li> @@ -38,7 +38,7 @@ <li>信頼性を保証する方法としてモデル検査による検証や、定理証明を用いる事で、信頼性へのアプローチを行っています。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="4" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="4" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>Continution based C</h1> <ul> <li>CbC とは C言語をベースとして、開発された言語でC言語との違いはプログラムにおける goto 文を用いて CodeGear という単位で遷移する。</li> @@ -57,7 +57,7 @@ } </span></span></foreignObject></svg></code></pre> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="5" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="5" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>goto</h1> <ul> <li>goto 文はCbC における状態遷移に使われ、 goto の直後に遷移先を記述することで接続される。</li> @@ -66,7 +66,7 @@ </ul> <center><img src="./pic/input-outputDataSegment.svg" alt="" width="100%" height="100%" /></center> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="6" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="6" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>dataGear と meta dataGear</h1> <ul> <li>CbC における入力は dataGear と呼ばれる構造体になっており、ノーマルレベル<br /> @@ -74,7 +74,7 @@ <li>メタレベルには計算を行うCPUやメモリ、計算に関するノーマルレベルのdataGearを格納するcontext などがある。context は一般的なOSのプロセスに相当する。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="7" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="7" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>stub CodeGear</h1> <ul> <li>メタレベルから見ると、code Gearの入力はcontext ただ1つである。</li> @@ -93,7 +93,7 @@ } </span></span></foreignObject></svg></code></pre> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="8" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="8" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>cotntextと状態数</h1> <ul> <li>プログラムの非決定的な実行は、入力あるいは並列実行の非決定性から生じる。</li> @@ -101,7 +101,7 @@ <li>しかし、このcontextの状態はとても巨大になる事がある、そのためそれらを抽象化する必要性がある。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="9" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="9" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>GearsOSの実装</h1> <ul> <li>codeGear は処理の基本単位であり、並列処理などにより割り込まれることなく記述された通りに実行される必要がある。</li> @@ -109,7 +109,7 @@ <li>しかし、GearsOSにおいては正しく実行される事を保証されるように実装されているとする。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="10" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="10" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>モデル検査</h1> <ul> <li>モデルとは検証したいアプリケーションやサービスの振る舞いや性質を抽象化して表現したものであり、抽象化の手法には以下のようなものがある。</li> @@ -123,21 +123,44 @@ <li>検査の要点によってモデルを使い分ける必要性がある。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="11" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="11" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>状態遷移モデル</h1> <ul> <li>今回行うモデル検査は状態遷移からプログラムの振る舞いを検証する。</li> <li>状態遷移モデルとは、処理前と処理後の状態をつなぎ合わせる手法である。</li> -<li>構成要素としては以下のような物がある。</li> </ul> -<p>| ---------- | --------------------------------- |<br /> -| 状態 | プログラムの状態 |<br /> -| 初期状態 |何らかの処理、計算が行われる前の状態|<br /> -| 終了状態 |処理、または計算が行われた状態 |<br /> -| 処理(計算) |状態を変化させる |<br /> -| 遷移条件 |状態が分岐する際の条件 |</p> +<table> +<thead> +<tr> +<th>構成要素</th> +<th></th> +</tr> +</thead> +<tbody> +<tr> +<td>状態</td> +<td>プログラムの状態</td> +</tr> +<tr> +<td>初期状態</td> +<td>何らかの処理、計算が行われる前の状態</td> +</tr> +<tr> +<td>終了状態</td> +<td>処理、または計算が行われた状態</td> +</tr> +<tr> +<td>処理(計算)</td> +<td>状態を変化させる</td> +</tr> +<tr> +<td>遷移条件</td> +<td>状態が分岐する際の条件</td> +</tr> +</tbody> +</table> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="12" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="12" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>既存のモデル検査手法(SPIN)</h1> <ul> <li>SPIN はPromela (Process Meta Language)で記述される。</li> @@ -153,7 +176,7 @@ 線形時相論理で記述された仕様</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="13" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="13" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>既存のモデル検査手法(Java path Finder)</h1> <ul> <li>Java Path Finder はjavaプログラムの検査ツール</li> @@ -167,8 +190,8 @@ Partial Order Reduction</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="14" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> -<h1></h1> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="14" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> +<h1>モデル検査手法について</h1> <ul> <li>GearsOS におけるモデル検査はcode gear 単位の順列組み合わせによって行われる。</li> <li>codegear 実行後の状態を検査し、データベースに格納する。</li> @@ -180,27 +203,23 @@ <li>GearsOS による検証用プログラムとして Dining Philosohers Ploblem (以下DPP)を用いる。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="15" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="15" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>DPP</h1> <ul> <li>5人の哲学者が円卓についており、各々スパゲティーの皿が目の前に用意され、スパゲティーは絡まっている為2つのフォーク使わなければ食べれない。</li> <li>フォークは席の間に1本ずつある。哲学者は、思考とフォークを持つ、食事する。</li> </ul> -<center><img src="./pic/dpp_image.svg" alt="" width="55%" height="55%" /></center> +<center><img src="./pic/dpp_image.svg" alt="" width="50%" height="50%" /></center> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="16" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="16" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>DPP</h1> <ul> <li>状態は以下の構成要素からなる<br /> -Pickup Right<br /> -fork Pickup<br /> -Left fork eating Put Right fork<br /> -Put Left fork<br /> -Thinking</li> +<code>Pickup Right fork</code> <code> Pickup Left fork</code> <code>eating</code> <code> Put Right fork</code> <code>Put Left fork</code> <code>Thinking</code></li> </ul> -<p><right><img src="./pic/dpp_image.svg" alt="" width="50%" height="50%" /></right></p> +<p><bottom><img src="./pic/dpp_image.svg" alt="" width="70%" height="70%" /></bottom></p> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="17" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="17" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>GeasOS におけるDPP実装(1/3)</h1> <ul> <li>5つのスレッドで並列処理を行う事で、哲学者の行動を再現する。</li> @@ -209,7 +228,7 @@ <li>par goto は複数スレッドでの実行であるので、各スレッドで実行後に__exitに継続する事で終了する。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="18" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="18" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>GearsOS におけるDPP実装(2/3)</h1> <ul> <li>マルチスレッドでのデータの一貫性を保証する手法としてCAS がある。</li> @@ -218,7 +237,7 @@ <li>DPPの例題ではフォークがスレッドで共有されるデータにあたるので、synchronixed Queue を用いることによってスレッド間での同期を行う。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="19" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="19" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>GearsOS におけるDPP実装(3/3)</h1> <ul> <li>5つのスレッドで行われる処理の状態は6つあり、それぞれを状態変数で表す。</li> @@ -227,7 +246,7 @@ <li>またDPPにおける状態遷移は無限ループであるため、stateDBを用いて同じ状態を検索することで、終了判定を行う。</li> </ul> </section> -</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr" data-marpit-pagination="20" data-marpit-pagination-total="20" style="--paginate:true;--theme:vl9xq2qe7yx7y1tsxus7otwvroffivurz7uvmdagkr;"> +</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj" data-marpit-pagination="20" data-marpit-pagination-total="20" style="--paginate:true;--theme:za9t5jbg9rpnsigrrkzqv5ozsjj37semsamptgsyysj;"> <h1>GearsOS でのモデル検査を実現する手法について</h1> <ul> <li>DPP をGearsOS 上のアプリケーションとして実装する。</li>
--- a/presen/sigos.md Thu May 28 01:31:29 2020 +0900 +++ b/presen/sigos.md Thu May 28 01:39:29 2020 +0900 @@ -118,8 +118,8 @@ - 今回行うモデル検査は状態遷移からプログラムの振る舞いを検証する。 - 状態遷移モデルとは、処理前と処理後の状態をつなぎ合わせる手法である。 -- 構成要素としては以下のような物がある。 +| 構成要素 | | | ---------- | --------------------------------- | | 状態 | プログラムの状態 | | 初期状態 |何らかの処理、計算が行われる前の状態| @@ -159,7 +159,7 @@ --- -# +# モデル検査手法について - GearsOS におけるモデル検査はcode gear 単位の順列組み合わせによって行われる。 - codegear 実行後の状態を検査し、データベースに格納する。 - 新しい上体が生成されなくなった時モデル検査が終了する。 @@ -175,20 +175,16 @@ - 5人の哲学者が円卓についており、各々スパゲティーの皿が目の前に用意され、スパゲティーは絡まっている為2つのフォーク使わなければ食べれない。 - フォークは席の間に1本ずつある。哲学者は、思考とフォークを持つ、食事する。 -<center><img src="./pic/dpp_image.svg" alt="" width="55%" height="55%" ></center> +<center><img src="./pic/dpp_image.svg" alt="" width="50%" height="50%" ></center> --- # DPP - 状態は以下の構成要素からなる -Pickup Right -fork Pickup -Left fork eating Put Right fork - Put Left fork - Thinking +`Pickup Right fork` ` Pickup Left fork` `eating` ` Put Right fork` `Put Left fork` ` Thinking ` -<right><img src="./pic/dpp_image.svg" alt="" width="50%" height="50%" ></right> +<bottom><img src="./pic/dpp_image.svg" alt="" width="70%" height="70%" ></bottom> ---