changeset 59:d1fe7f17320d

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 28 May 2020 09:04:44 +0900
parents b43d210923e7
children be3419709cd3
files slide/slide.html slide/slide.md
diffstat 2 files changed, 98 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/slide/slide.html	Thu May 28 07:55:15 2020 +0900
+++ b/slide/slide.html	Thu May 28 09:04:44 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 v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79 */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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="1" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+/* @theme j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict */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="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="1" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content> xv6の構成要素の継続の分析</span></foreignObject></svg></h1>
 <ul>
 <li>清水 隆博
@@ -27,7 +27,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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="2" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="2" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>研究目的</h1>
 <ul>
 <li>アプリケーションの信頼性を向上させたい
@@ -44,7 +44,7 @@
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="3" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="3" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>ノーマルレベルとメタレベルを用いた信頼性の向上</h1>
 <ul>
 <li>プログラムの実行部分は以下の2つからなる
@@ -65,7 +65,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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="4" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="4" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>モデル検査</h1>
 <ul>
 <li>実際に想定されるパターンを全て動かして検証する</li>
@@ -78,7 +78,7 @@
 <li>Spinを用いる方法では、 promelaという言語で実装し直す必要がある</li>
 </ul>
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="5" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="5" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>定理証明支援系</h1>
 <ul>
 <li>論理学的なモデルに変更して証明する
@@ -100,7 +100,7 @@
 </li>
 </ul>
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="6" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="6" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>GearsOSでの信頼性の保証</h1>
 <ul>
 <li>メタレベルのみで信頼性の保証を行う
@@ -118,7 +118,7 @@
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="7" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="7" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>GearsOSでの信頼性の保証</h1>
 <ul>
 <li>デフォルトのメタレベルの計算は自動生成される</li>
@@ -132,7 +132,7 @@
 </li>
 </ul>
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="8" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="8" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>CbCとCodeGear(ノーマルレベル)</h1>
 <ul>
 <li>軽量継続で表現する単位をCodeGearと呼ぶ</li>
@@ -154,7 +154,7 @@
 <li>cbcで書き直したxv6の<code>read</code>システムコールの例</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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="9" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="9" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>CbCとCodeGear(メタレベル)</h1>
 <ul>
 <li><code>cbc_read_stub</code>内で必要な引数をcontextから取り出す
@@ -168,7 +168,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="10" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="10" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="10" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>cbcで書き直したシステムコールディスパッチの例</h1>
 <ul>
 <li>CbCは<code>goto</code>文で呼び出す
@@ -188,7 +188,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="11" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="11" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="11" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>cbcで書き直したシステムコールディスパッチの例</h1>
 <pre><code class="language-c"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">syscall</span><span class="hljs-params">(<span class="hljs-keyword">void</span>)</span>
 </span>{
@@ -214,7 +214,7 @@
 </li>
 </ul>
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="12" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="12" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>CbCを用いたソフトウェアの実装</h1>
 <ul>
 <li>計算を実行するためのメモリ領域が必要
@@ -235,7 +235,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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="13" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="13" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>CbCのcotnext</h1>
 <ul>
 <li>CbCのプログラムで利用するCodeGearとデータの組を管理する機能
@@ -256,14 +256,14 @@
 <li>実際のデータの入手、保存はcontextを触ることが出来るMeta Code Gearが行う</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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="14" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="14" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>通常のCbCプログラム</h1>
 <ul>
 <li>プログラマから見るとCodeGearからCodeGearへの継続のみに見える<br />
 <img src="assets/context1.svg" alt="" style="padding-left: 100px;" /></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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="15" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="15" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>実際のCbCプログラム</h1>
 <ul>
 <li>実際は1度contextを参照するMetaCodeGearに継続する
@@ -274,7 +274,7 @@
 </ul>
 <img src="assets/context2.svg" alt="" style="padding-left: 100px;" />
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="16" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="16" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>実際のCbCプログラム</h1>
 <ul>
 <li>MetaCodeGearでは次の計算に必要なDataGearを取り出す
@@ -285,7 +285,7 @@
 </ul>
 <img src="assets/context_last.svg" alt="" style="padding-left: 100px;" />
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="17" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="17" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>CbCを用いたOSの再実装</h1>
 <ul>
 <li>CbCのCodeGearは状態遷移単位での記述に向いている</li>
@@ -297,7 +297,7 @@
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="18" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="18" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>xv6</h1>
 <ul>
 <li>マサチューセッツ工科大学で開発されたv6OSをもとにしたOS
@@ -319,7 +319,7 @@
 </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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="19" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="19" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>xv6のCbCでの書き換え</h1>
 <ul>
 <li>既存のOSを段階的にCbCで書き換えていく
@@ -332,7 +332,7 @@
 <li>CbCのcontextをプロセス構造体に埋め込み、 <code>goto</code>文を利用する場合はcontextからデータを参照する</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="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="20" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="20" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>read system callの書き換え</h1>
 <ul>
 <li>xv6のシステムコールの一部を書き換えることを検討する</li>
@@ -351,7 +351,7 @@
 </li>
 </ul>
 </section>
-</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="21" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="21" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>read system callの継続の一部</h1>
 <ul>
 <li>実際に処理を切り分けているCodeGear
@@ -380,7 +380,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="22" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="22" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="22" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>read システムコールの状態遷移図</h1>
 <ul>
 <li>システムコール中のCodeGearを状態遷移図にした
@@ -391,7 +391,7 @@
 </li>
 </ul>
 </section>
-</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="23" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="23" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>システムコール単位での書き換え</h1>
 <ul>
 <li><code>cbc_fileread</code> CodeGearなどは複数のCodeGearの集合となっている
@@ -403,7 +403,7 @@
 </ul>
 <img src="assets/readsyscall.svg" alt="" style="padding-left: 20px;" />
 </section>
-</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="24" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="24" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>Basic Block単位での書き換え</h1>
 <ul>
 <li>Basic Blockとはコンパイラの用語でループやリターンを区切りとするプログラミング単位
@@ -415,7 +415,7 @@
 <li>これによりCodeGearを割り込まれない検証の単位とする事ができる</li>
 </ul>
 </section>
-</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="25" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="25" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>Basic Block単位での書き換え</h1>
 <ul>
 <li>仮想メモリ管理やファイルシステムなどの関数はxv6の場合Cのファイル単位でまとまっている
@@ -431,7 +431,7 @@
 </li>
 </ul>
 </section>
-</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="26" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="26" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>ファイルシステム操作の書き換え</h1>
 <ul>
 <li>ファイルシステムのAPIが実装されている<code>fs.c</code>のAPIからCodeGearの集合を定義する
@@ -454,7 +454,7 @@
 } fs;
 </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="27" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="27" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="27" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>もとのialloc関数</h1>
 <ul>
 <li>inodeのアロケーションを行う<code>ialloc</code>関数を書き換えた</li>
@@ -477,7 +477,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="28" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="28" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="28" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="28" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>ialloc関数</h1>
 <ul>
 <li>対象のデバイスのinodeを一つずつ取り出すループ処理</li>
@@ -502,13 +502,13 @@
 }
 </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="29" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="29" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="29" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="29" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>ループ条件の確認のCodeGear</h1>
 <ul>
 <li>CbCでループ条件の判定を行うCodeGearを実装した
 <ul>
 <li><code>for (inum = 1; inum &lt; sb.ninodes; inum++)</code>に対応する</li>
-<li>ループ条件を満たなかった場合はpanicに移動する</li>
+<li>ループ条件を満たなかった場合はpanicに継続する</li>
 </ul>
 </li>
 </ul>
@@ -522,7 +522,43 @@
 }
 </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="30" data-paginate="true" data-theme="v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79" data-marpit-pagination="30" data-marpit-pagination-total="30" style="--paginate:true;--theme:v6hn8h7l4tg8ne1ukz9ln213yxen5miovp2jk59lw9h79;">
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="30" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="30" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
+<h1>ループに復帰するかの判定</h1>
+<ul>
+<li>空のinodeがあるかどうか(<code>dip-&gt;type == 0)</code>で継続を分岐させる
+<ul>
+<li>0のものがあった場合は初期化を行うCodeGearに遷移する</li>
+<li>なければループ条件の確認のCodeGearに継続する</li>
+</ul>
+</li>
+<li>次のCodeGearへの引数の整合性の確認はメタ計算で実行される</li>
+</ul>
+<pre><code class="language-c"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-function">__code <span class="hljs-title">allocinode_loop</span><span class="hljs-params">(struct fs_impl* fs_impl, uint inum, short type,   __code next(...))</span></span>{
+    bp = bread(dev, IBLOCK(inum));
+    dip = (struct dinode*) bp-&gt;data + inum % IPB;
+    <span class="hljs-keyword">if</span>(dip-&gt;type == <span class="hljs-number">0</span>){
+        <span class="hljs-function"><span class="hljs-keyword">goto</span> <span class="hljs-title">allocinode_loopexit</span><span class="hljs-params">(fs_impl, inum,  bp, dip, next(...))</span></span>;
+    }
+
+    brelse(bp);
+    inum++;
+    <span class="hljs-function"><span class="hljs-keyword">goto</span> <span class="hljs-title">allocinode_loopcheck</span><span class="hljs-params">(fs_impl, next(...))</span></span>;
+}
+</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="31" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="31" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
+<h1>BasicBlock単位での書き換えの考察</h1>
+<ul>
+<li>従来のxv6の関数呼び出しをもとにしているために、コードの変更点が少ない</li>
+<li>CodeGearへの変換を機械的に行うことが可能</li>
+<li>APIそのものはCodeGearを基本とした状態に書き直していない
+<ul>
+<li>スタックを前提とした処理と共存している</li>
+</ul>
+</li>
+</ul>
+</section>
+</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-paginate="true" data-theme="j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict" data-marpit-pagination="32" data-marpit-pagination-total="32" style="--paginate:true;--theme:j18ztucocdha700kv6ro3v1zvd7gi16wpae5ix87hict;">
 <h1>まとめ</h1>
 <ul>
 <li>xv6の処理の一部を継続を用いてcbcで書き換えた
--- a/slide/slide.md	Thu May 28 07:55:15 2020 +0900
+++ b/slide/slide.md	Thu May 28 09:04:44 2020 +0900
@@ -392,7 +392,7 @@
 
 - CbCでループ条件の判定を行うCodeGearを実装した
     - `for (inum = 1; inum < sb.ninodes; inum++)`に対応する
-    - ループ条件を満たなかった場合はpanicに移動する
+    - ループ条件を満たなかった場合はpanicに継続する
 
 ```c
 __code allocinode_loopcheck(struct fs_impl* fs_impl, uint inum,  struct superblock* sb, __code next(...)){
@@ -406,6 +406,36 @@
 ```
 
 ---
+
+# ループに復帰するかの判定
+- 空のinodeがあるかどうか(`dip->type == 0)`で継続を分岐させる
+    - 0のものがあった場合は初期化を行うCodeGearに遷移する
+    - なければループ条件の確認のCodeGearに継続する
+- 次のCodeGearへの引数の整合性の確認はメタ計算で実行される
+
+```c
+__code allocinode_loop(struct fs_impl* fs_impl, uint inum, short type,   __code next(...)){
+    bp = bread(dev, IBLOCK(inum));
+    dip = (struct dinode*) bp->data + inum % IPB;
+    if(dip->type == 0){
+        goto allocinode_loopexit(fs_impl, inum,  bp, dip, next(...));
+    }
+
+    brelse(bp);
+    inum++;
+    goto allocinode_loopcheck(fs_impl, next(...));
+}
+```
+
+---
+# BasicBlock単位での書き換えの考察
+
+- 従来のxv6の関数呼び出しをもとにしているために、コードの変更点が少ない
+- CodeGearへの変換を機械的に行うことが可能
+- APIそのものはCodeGearを基本とした状態に書き直していない
+    - スタックを前提とした処理と共存している
+
+---
 # まとめ
 - xv6の処理の一部を継続を用いてcbcで書き換えた
   - システムコールに着目する手法