Mercurial > hg > Papers > 2018 > mitsuki-sigos
changeset 31:7e2ceefcef54
update
author | mir3636 |
---|---|
date | Sun, 21 Jan 2018 00:46:12 +0900 |
parents | 33222880db79 |
children | f78928bb28ad |
files | Slide/prosym.html Slide/prosym.md |
diffstat | 2 files changed, 56 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Sun Jan 21 00:05:37 2018 +0900 +++ b/Slide/prosym.html Sun Jan 21 00:46:12 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-21 00:05:29 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-21 00:45:59 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -146,13 +146,14 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="cbc-">CbC のコード例</h1> -<ul lang="Code_Gear"> +<ul> <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li> <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li> <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li> <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li> </ul> -<pre><code>__code cg0(int a, int b){ + +<pre lang="Code_Gear"><code>__code cg0(int a, int b){ goto cg1(a+b); } @@ -206,45 +207,43 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gears--1">Gears でのメタ計算</h1> +<h1 id="gears--1">Gears でのメタ計算の記述</h1> + +<ul> + <li>各 Code Gear の引数は Data Gear である。</li> + <li>code1, node2 は ノーマルな Code Gear であり、meta は Meta Code Gear である。</li> +</ul> + +<pre lang="code"><code>__code code1 (struct Array* array) { + ... + goto code2(array); +} + +__code meta(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code2(struct Array* array) { + ... +} + +</code></pre> +<p># Gears OS の構成 +- Gears OS は以下の要素で構成される。 + - Context + - 使用されるCode/Data Gear のリストを持っておりTaskでもある。<br /> + - TaskQueue + - Task のリストを扱う + - TaskManager + - Task の依存関係の解決、作成や停止を行います。 + - Worker + - Task の実行を行う</p> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gears-os-">Gears OS の構成</h1> -<ul> - <li>Gears OS は以下の要素で構成される。 - <ul> - <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> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="gears-os--1">Gears OS の構成図</h1> +<h1 id="gears-os-">Gears OS の構成図</h1> <div style="text-align: center;"> <img src="./fig/gears_structure.pdf" alt="gears_structure" width="900" />
--- a/Slide/prosym.md Sun Jan 21 00:05:37 2018 +0900 +++ b/Slide/prosym.md Sun Jan 21 00:46:12 2018 +0900 @@ -45,6 +45,7 @@ - Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。 - goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。 - この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。 + ```Code_Gear __code cg0(int a, int b){ goto cg1(a+b); @@ -78,8 +79,26 @@ <img src="./fig/meta.pdf" alt="MetaGear" width="600"> </div> -# Gears でのメタ計算 +# Gears でのメタ計算の記述 + +- 各 Code Gear の引数は Data Gear である。 +- code1, node2 は ノーマルな Code Gear であり、meta は Meta Code Gear である。 +```code +__code code1 (struct Array* array) { + ... + goto code2(array); +} + +__code meta(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code2(struct Array* array) { + ... +} + +``` # Gears OS の構成 - Gears OS は以下の要素で構成される。 - Context @@ -137,7 +156,6 @@ }; ``` - <!-- # CbC による Gears OS 記述の問題点 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。