Mercurial > hg > Papers > 2018 > mitsuki-sigos
changeset 30:33222880db79
update
author | mir3636 |
---|---|
date | Sun, 21 Jan 2018 00:05:37 +0900 |
parents | 6df75cb95ddd |
children | 7e2ceefcef54 |
files | Slide/fig/generate_context3.pdf Slide/prosym.html Slide/prosym.md |
diffstat | 3 files changed, 69 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Sat Jan 20 23:52:11 2018 +0900 +++ b/Slide/prosym.html Sun Jan 21 00:05:37 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-20 22:57:55 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-21 00:05:29 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -216,10 +216,26 @@ <ul> <li>Gears OS は以下の要素で構成される。 <ul> - <li>Context</li> - <li>TaskQueue</li> - <li>TaskManager</li> - <li>Worker</li> + <li>Context + <ul> + <li>使用されるCode/Data Gear のリストを持っておりTaskでもある。</li> + </ul> + </li> + <li>TaskQueue + <ul> + <li>Task のリストを扱う</li> + </ul> + </li> + <li>TaskManager + <ul> + <li>Task の依存関係の解決、作成や停止を行います。</li> + </ul> + </li> + <li>Worker + <ul> + <li>Task の実行を行う</li> + </ul> + </li> </ul> </li> </ul> @@ -346,8 +362,16 @@ stack->clear = C_clearSingleLinkedStack; return stack; } +</code></pre> -__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="interface--2">Interface の実装例</h1> + +<pre lang="impl"><code>__code pushSingleLinkedStack(struct SingleLinkedStack* stack, + union Data* data, __code next(...)) { Element* element = new Element(); element->next = stack->top; element->data = data; @@ -376,13 +400,20 @@ <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li> </ul> -<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="stub" id="stub-code-gear-">stub Code Gear の例</h1> +<pre><code>__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -406,7 +437,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="stub-code-gear-">stub Code Gear の生成</h1> +<h1 id="stub-code-gear--1">stub Code Gear の生成</h1> <ul> <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li> <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li> @@ -415,13 +446,21 @@ <li>cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。</li> </ul> -<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="stub-code-gear-1">生成された stub Code Gear</h1> + +<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -434,7 +473,6 @@ <h1 id="context--1">Context の生成</h1> <ul> - <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li> <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 <ul> <li>Code/Data Gear を enum で定義した enumCode.h、enumData.h</li> @@ -445,7 +483,7 @@ </ul> <div style="text-align: center;"> - <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900" /> + <img src="./fig/generate_context3.pdf" alt="generate_context3" width="500" /> </div>
--- a/Slide/prosym.md Sat Jan 20 23:52:11 2018 +0900 +++ b/Slide/prosym.md Sun Jan 21 00:05:37 2018 +0900 @@ -185,8 +185,13 @@ stack->clear = C_clearSingleLinkedStack; return stack; } +``` -__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) { +# Interface の実装例 + +```impl +__code pushSingleLinkedStack(struct SingleLinkedStack* stack, + union Data* data, __code next(...)) { Element* element = new Element(); element->next = stack->top; element->data = data; @@ -209,14 +214,17 @@ - しかし、Meta Data Gear である Context をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。 - そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 +# stub Code Gear の例 ```stub -__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { +__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -238,14 +246,18 @@ - Code Gear の引数と interface を照らし合わせ、Gearef または GearImpl を決定する。 - cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。 +# 生成された stub Code Gear + ```stub -__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { +__code clearSingleLinkedStack(struct Context *context, + struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); } __code clearSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); + SingleLinkedStack* stack = + (SingleLinkedStack*)GearImpl(context, Stack, stack); enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } @@ -253,14 +265,13 @@ # Context の生成 -- Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 - generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 - Code/Data Gear を enum で定義した enumCode.h、enumData.h - 取得した Code/Data Gear から Context の生成を行う target-context - Context を生成する際の Data Gear の Allocation を行う dataGearInit.c <div style="text-align: center;"> - <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900"> + <img src="./fig/generate_context3.pdf" alt="generate_context3" width="500"> </div> # 今後の課題