Mercurial > hg > Papers > 2018 > mitsuki-sigos
diff Slide/prosym.html @ 27:da3022f9122e
update
author | mir3636 |
---|---|
date | Sat, 20 Jan 2018 22:58:11 +0900 |
parents | 39f38ed9c7a2 |
children | 33222880db79 |
line wrap: on
line diff
--- a/Slide/prosym.html Sat Jan 20 14:36:12 2018 +0900 +++ b/Slide/prosym.html Sat Jan 20 22:58:11 2018 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] - on 2018-01-19 18:24:07 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-20 22:57:55 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -100,7 +100,7 @@ <li>信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。</li> <li>ノーマルレベルの計算とメタレベルの計算を切り離して記述するために Code Gear と Data Gear という単位を用いている。</li> <li>Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。</li> - <li>本研究では、CbC を用いた Gears OS の実装と、メタ計算の実例を示す。</li> + <li>本研究では、CbC を用いた Gears OS の実装を示す。</li> </ul> <!-- @@ -121,7 +121,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-1">メタ計算の重要性</h1> +<h1 id="section-1">メタ計算</h1> <ul> <li>プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> <li>メタ計算はノーマルレベルの計算から切り離して記述したい。</li> @@ -152,12 +152,12 @@ <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li> <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li> </ul> -<pre><code>__code cs0(int a, int b){ - goto cs1(a+b); +<pre><code>__code cg0(int a, int b){ + goto cg1(a+b); } -__code cs1(int c){ - goto cs2(c); +__code cg1(int c){ + goto cg2(c); } </code></pre> @@ -172,6 +172,10 @@ <li>Input/Output Data Gear の依存関係が解決された Code Gear を並列実行する。</li> </ul> +<div style="text-align: center;"> + <img src="./fig/normal.pdf" alt="MetaGear" width="600" /> +</div> + </div> <div class='slide '> @@ -180,7 +184,7 @@ <ul> <li>Data Gear は データの単位であり、int や文字列などの Primitive Type を持っている。</li> <li>Code Gear は任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> - <li>接続された Data Gear 以外には参照を行わない。</li> + <li>Code Gear は接続された Data Gear 以外には参照を行わない。</li> </ul> @@ -195,13 +199,19 @@ </ul> <div style="text-align: center;"> - <img src="./fig/MetaGear.pdf" alt="MetaGear" width="600" /> + <img src="./fig/meta.pdf" alt="MetaGear" width="600" /> </div> </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="gears--1">Gears でのメタ計算</h1> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="gears-os-">Gears OS の構成</h1> <ul> <li>Gears OS は以下の要素で構成される。 @@ -245,7 +255,7 @@ <pre lang="contexr"><code>/* context define */ struct Context { - int codeNum; //実行可能な code の数 + int codeNum; //実行可能な Code Gear の数 __code (**code) (struct Context*); //実行可能な code Gear のリスト void* heapStart; //Data Gear の Allocate用のヒープ void* heap; @@ -255,6 +265,28 @@ }; </code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="context-1">Context</h1> +<ul> + <li>Code/Data Gear の名前は enum で定義される。</li> + <li>Code/Data Gear の名前とポインタの対応は enum を使って行われる。</li> +</ul> + +<pre lang="code"><code>enum Code { + C_cg1, + C_cg2, +}; +</code></pre> + +<pre lang="data"><code>enum Data { + D_dg1, + D_dg2, +}; +</code></pre> + <!-- # CbC による Gears OS 記述の問題点 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 @@ -273,7 +305,12 @@ <li>Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。</li> </ul> -<pre lang="interface"><code>typedef struct Stack<Type, Impl>{ + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="interface" id="interface-">Interface のコード</h1> +<pre><code>typedef struct Stack<Type, Impl>{ union Data* stack; union Data* data; union Data* data1; @@ -293,12 +330,9 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="interface-1">Interface</h1> +<h1 id="interface--1">Interface の実装例</h1> -<ul lang="impl"> - <li>implement の例</li> -</ul> -<pre><code>Stack* createSingleLinkedStack(struct Context* context) { +<pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); stack->stack = (union Data*)singleLinkedStack; @@ -403,9 +437,9 @@ <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li> <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 <ul> - <li>Context が持つ Code/Data Gear のリスト の Code/Data Gear 名とポインタを対応させるための enum の定義を記述した enumCode.h、enumData.h</li> + <li>Code/Data Gear を enum で定義した enumCode.h、enumData.h</li> <li>取得した Code/Data Gear から Context の生成を行う target-context</li> - <li>Context を生成する際に Data Gear の Allocation を行う dataGearInit.c</li> + <li>Context を生成する際の Data Gear の Allocation を行う dataGearInit.c</li> </ul> </li> </ul>