Mercurial > hg > Papers > 2017 > mitsuki-prosym
changeset 21:d5d62b74c219
fix
author | mir3636 |
---|---|
date | Thu, 18 Jan 2018 15:50:01 +0900 |
parents | 57c060703f4a |
children | f83f575b6194 |
files | Slide/prosym.html Slide/prosym.md |
diffstat | 2 files changed, 85 insertions(+), 114 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Thu Jan 18 13:38:10 2018 +0900 +++ b/Slide/prosym.html Thu Jan 18 15:50:01 2018 +0900 @@ -86,52 +86,24 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] - on 2018-01-18 09:19:07 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-18 15:29:57 +0900 with Markdown engine kramdown (1.13.2) using options {} --> <!-- _S9SLIDE_ --> -<h1 id="gears-os">Gears OS</h1> - -<ul> - <li> - <p>現代の OS では拡張性と信頼性を両立させることが要求されている。 -<!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分--> -<!--信頼性を保証するには証明とモデル検査を用いる方法がある--></p> - </li> - <li> - <p>信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。</p> - </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section">メタレベルの計算</h1> +<h1 id="section">研究目的</h1> <ul> - <li>プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> - <li>メタ計算をノーマルレベルの計算から切り離して記述したい。</li> - <li>本研究ではノーマルレベルとメタレベルを共通して表現できる言語として Continuation based C を用いる。</li> + <li>現代の OS では拡張性と信頼性を両立させることが要求されている。 +<!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分--> +<!--信頼性を保証するには証明とモデル検査を用いる方法がある--></li> + <li>信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。</li> + <li>ノーマルレベルの計算とメタレベルの計算を切り離して記述するために Code Gear と Data Gear という単位を用いている。</li> + <li>Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。</li> + <li>本研究では、CbC を用いた Gears OS の実装と、メタ計算の実例を示す。</li> </ul> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="continuation-based-c-cbc">Continuation based C (CbC)</h1> <!-- -Gears OS は Continuation based C ^\(CbC)によってアプリケーションと OS そのものを記述する。 - -CbCはノーマルレベルではメタ構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。 -メタレベルから見た Data Gear をノーマルレベルの Code Gear に接続するには stub という Meta Code Gear を用いる。 -stub と Meta はユーザーレベル Code Gear / Data Gear からスクリプトにより作成される。 - -ノーマルレベルからメタレベルを含んだコードへの変換に必要な情報はプログラムを構成する Code Gear と Data Gear の集まりから得る。 -この集まりを Interface として定義している。 -本研究では、Interfaceを用いたプログラミングと、メタ計算の実例を示す。 - # OS の拡張性と信頼性の両立 さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 @@ -141,26 +113,33 @@ 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 このため信頼性と拡張性を両立させることが重要である。 --> -<!--プログラムからデータを分離して扱うデータベースには、 -プログラム中のデータ構造とRDBの表構造のずれにより、<u>インピーダンスミスマッチ</u>という問題がある。 - -データベースのレコードをプログラム中のオブジェクトとして使える<u>OR Mapper</u>や、 -データベース自体も、表に特化したKey Value Storeや、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。 - -しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。--> +<!-- +# 目次? +--> +<p># メタ計算の重要性 +- プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 +- メタ計算はノーマルレベルの計算から切り離して記述したい。 +- そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。 +- そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</p> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-1">メタ計算の重要性</h1> +<h1 id="continuation-based-c-cbc">Continuation based C (CbC)</h1> +<ul> + <li>Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。</li> + <li>Code Gear は 関数呼び出し時の環境を使わずに次の Code Gear へと goto 文によって遷移する。</li> + <li>この goto 文による遷移を軽量継続と呼ぶ。</li> + <li>CbC は軽量継続を持ち、C と互換性のある言語である。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="cbc-">CbC のコード例</h1> <ul lang="Code_Gear"> - <li>プログラムを記述する際、ノーマルな処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> - <li>メタ計算はノーマルな計算から切り離して記述したい。</li> - <li>そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。</li> - <li>そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 -# Continuation based C (CbC)</li> - <li>Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。</li> <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li> <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li> <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li> @@ -174,12 +153,43 @@ goto cs2(c); } </code></pre> -<p># Gears OS -- Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。 -- 並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。 -- またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。 -- Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。 -- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</p> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gears-os">Gears OS</h1> +<ul> + <li>Gears OS は Code Gear とデータの単位である Data Gear を用いて開発されており、CbC で記述されている。</li> + <li>並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。</li> + <li>Input/Output Data Gear の依存関係が解決された Code Gear を並列実行する。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="data-gear">Data Gear</h1> +<ul> + <li>Data Gear は データの単位であり、int や文字列などの Primitive Type を持っている。</li> + <li>Code Gear は任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> + <li>接続された Data Gear 以外には参照を行わない。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gears-">Gears でのメタ計算</h1> +<ul> + <li>Gears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。</li> + <li>Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。</li> + <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li> +</ul> + +<div style="text-align: center;"> + <img src="./fig/metaCS.pdf" alt="message" width="600" /> +</div> </div> @@ -324,13 +334,13 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-2">比較</h1> +<h1 id="section-1">比較</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-3">今後の課題</h1> +<h1 id="section-2">今後の課題</h1> <ul> <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li> @@ -338,51 +348,7 @@ <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li> </ul> -<!-- -# ChildrenとAttribute - -# Eitherクラス - -# Jungleのサンプルコード -# Jungleの木の編集 - -# NodePath - -# ノードの追加 - -# 移動、ルートノードの追加、コミット - -# Jungleのサンプルコード - -# 検索APIの実装 - -# 関数findを用いた検索APIのサンプルコード - -# JungleでのIndexの実装 - -# Indexの実装 - -# Indexの実装 - -# HTML Rendering Engine - -# 構造 -# ContentTree -# Nodeが持つAttribute -# LayoutTree -# LayoutTreeの主な要素 -# useにおけるタグ対応表 -# multiComponent -# 設計 -# コードとギャップのある格納 - -# コードとギャップのない格納 - -# 性能評価 - -# まとめ ---> -<p><a href="プロシン発表時間 セッション4 1/7 8:50 - 10:10"></a></p> +<p><a href="プロシン発表時間 セッション7 1/21 10:40 - 12:00"></a></p> <!-- === end markdown block === --> </div>
--- a/Slide/prosym.md Thu Jan 18 13:38:10 2018 +0900 +++ b/Slide/prosym.md Thu Jan 18 15:50:01 2018 +0900 @@ -9,7 +9,6 @@ - 現代の OS では拡張性と信頼性を両立させることが要求されている。 <!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分--> <!--信頼性を保証するには証明とモデル検査を用いる方法がある--> - - 信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。 - ノーマルレベルの計算とメタレベルの計算を切り離して記述するために Code Gear と Data Gear という単位を用いている。 - Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。 @@ -18,16 +17,17 @@ <!-- # OS の拡張性と信頼性の両立 -さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 -時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 -その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 -これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 -検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 -このため信頼性と拡張性を両立させることが重要である。 +- さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 +- 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 +- その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 +- これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 +- 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 +- このため信頼性と拡張性を両立させることが重要である。 --> <!-- # 目次? --> + # メタ計算の重要性 - プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 - メタ計算はノーマルレベルの計算から切り離して記述したい。 @@ -66,17 +66,22 @@ - 接続された Data Gear 以外には参照を行わない。 # Gears でのメタ計算 +- Gears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。 +- Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。 +- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 -- またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。 -- Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。 -- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 +<div style="text-align: center;"> + <img src="./fig/metaCS.pdf" alt="metaCS" width="600"> +</div> # Gears OS の構成 +<!-- # CbC による Gears OS 記述の問題点 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 - 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 - そのためのプロトタイプとして perl スクリプトを作成した。 +--> # Context - Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。