Mercurial > hg > Papers > 2017 > mitsuki-prosym
changeset 23:bb495c751e40
fix
author | mir3636 |
---|---|
date | Fri, 19 Jan 2018 07:45:21 +0900 |
parents | f83f575b6194 |
children | 8edb996bce46 |
files | Slide/prosym.html Slide/prosym.md |
diffstat | 2 files changed, 105 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Thu Jan 18 15:51:04 2018 +0900 +++ b/Slide/prosym.html Fri Jan 19 07:45:21 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-18 15:29:57 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-19 07:45:08 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -106,21 +106,28 @@ <!-- # OS の拡張性と信頼性の両立 -さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 -時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 -その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 -これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 -検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 -このため信頼性と拡張性を両立させることが重要である。 +- さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 +- 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 +- その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 +- これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 +- 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 +- このため信頼性と拡張性を両立させることが重要である。 --> <!-- # 目次? --> -<p># メタ計算の重要性 -- プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 -- メタ計算はノーマルレベルの計算から切り離して記述したい。 -- そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。 -- そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</p> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-1">メタ計算の重要性</h1> +<ul> + <li>プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> + <li>メタ計算はノーマルレベルの計算から切り離して記述したい。</li> + <li>そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。</li> + <li>そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</li> +</ul> </div> @@ -188,7 +195,7 @@ </ul> <div style="text-align: center;"> - <img src="./fig/metaCS.pdf" alt="message" width="600" /> + <img src="./fig/MetaGear.pdf" alt="MetaGear" width="600" /> </div> @@ -196,17 +203,33 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="gears-os-">Gears OS の構成</h1> +<ul> + <li>Gears OS は以下の要素で構成される。 + <ul> + <li>Context</li> + <li>TaskQueue</li> + <li>TaskManager</li> + <li>Worker</li> + </ul> + </li> +</ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="cbc--gears-os-">CbC による Gears OS 記述の問題点</h1> -<ul> - <li>Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。</li> - <li>本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。</li> - <li>そのためのプロトタイプとして perl スクリプトを作成した。</li> -</ul> +<h1 id="gears-os--1">Gears OS の構成図</h1> + +<div style="text-align: center;"> + <img src="./fig/gears_structure.pdf" alt="gears_structure" width="600" /> +</div> + +<!-- +# CbC による Gears OS 記述の問題点 +- Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 +- 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 +- そのためのプロトタイプとして perl スクリプトを作成した。 +--> </div> @@ -214,7 +237,7 @@ <!-- _S9SLIDE_ --> <h1 id="context">Context</h1> <ul> - <li>Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li> + <li>Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。</li> <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li> </ul> @@ -226,10 +249,33 @@ <!-- _S9SLIDE_ --> <h1 id="interface">Interface</h1> <ul> - <li>interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。</li> - <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li> + <li>Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。</li> + <li>Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。</li> + <li>Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。</li> </ul> +<pre lang="interface"><code>typedef struct Stack<Type, Impl>{ + union Data* stack; + union Data* data; + union Data* data1; + __code whenEmpty(...); + __code clear(Impl* stack,__code next(...)); + __code push(Impl* stack,Type* data, __code next(...)); + __code pop(Impl* stack, __code next(Type* data, ...)); + __code pop2(Impl* stack, __code next(Type* data, Type* data1, ...)); + __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...)); + __code get(Impl* stack, __code next(Type* data, ...)); + __code get2(Impl* stack, __code next(Type* data, Type* data1, ...)); + __code next(...); +} Stack; +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="interface-1">Interface</h1> + <pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); @@ -334,13 +380,13 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-1">比較</h1> +<h1 id="section-2">比較</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-2">今後の課題</h1> +<h1 id="section-3">今後の課題</h1> <ul> <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li>
--- a/Slide/prosym.md Thu Jan 18 15:51:04 2018 +0900 +++ b/Slide/prosym.md Fri Jan 19 07:45:21 2018 +0900 @@ -71,10 +71,21 @@ - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 <div style="text-align: center;"> - <img src="./fig/metaCS.pdf" alt="metaCS" width="600"> + <img src="./fig/MetaGear.pdf" alt="MetaGear" width="600"> </div> # Gears OS の構成 +- Gears OS は以下の要素で構成される。 + - Context + - TaskQueue + - TaskManager + - Worker + +# Gears OS の構成図 + +<div style="text-align: center;"> + <img src="./fig/gears_structure.pdf" alt="gears_structure" width="600"> +</div> <!-- # CbC による Gears OS 記述の問題点 @@ -84,14 +95,34 @@ --> # Context -- Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。 +- Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。 - Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。 <img src="./fig/context.svg" alt="message" width="550" > # Interface -- interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。 -- create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 +- Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。 +- Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。 +- Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。 + +```interface +typedef struct Stack<Type, Impl>{ + union Data* stack; + union Data* data; + union Data* data1; + __code whenEmpty(...); + __code clear(Impl* stack,__code next(...)); + __code push(Impl* stack,Type* data, __code next(...)); + __code pop(Impl* stack, __code next(Type* data, ...)); + __code pop2(Impl* stack, __code next(Type* data, Type* data1, ...)); + __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...)); + __code get(Impl* stack, __code next(Type* data, ...)); + __code get2(Impl* stack, __code next(Type* data, Type* data1, ...)); + __code next(...); +} Stack; +``` + +# Interface ```impl Stack* createSingleLinkedStack(struct Context* context) {