Mercurial > hg > Papers > 2019 > mitsuki-master
comparison paper/conclusion.tex @ 42:75efd3df0c7e
update
author | mir3636 |
---|---|
date | Fri, 08 Feb 2019 17:23:51 +0900 |
parents | 5927917e1832 |
children | 9727ceb711b3 |
comparison
equal
deleted
inserted
replaced
41:6b48a2c84700 | 42:75efd3df0c7e |
---|---|
1 \chapter{結論} | 1 \chapter{結論} |
2 本論文では Gears OS のプロトタイプの設計と実装、メタ計算である Context と stub の生成を行う Perl スクリプトの記述、並列実行機構の実装を行った。 | 2 本論文では Gears OS のプロトタイプの設計と実装、メタ計算である Context と stub の生成を行う Perl スクリプトの記述を行った。 |
3 さらに Raspberry Pi 上での Gears OS 実装の考察、xv6 の機能の一部を CbC で書き換えを行った。 | |
4 | |
3 Code Gear 、Data Gear を処理とデータの単位として用いて Gears OS を設計した。 | 5 Code Gear 、Data Gear を処理とデータの単位として用いて Gears OS を設計した。 |
4 Code Gear、Data Gear にはメタ計算を記述するための Meta Code Gear、Meta Data Gear が存在する。 | 6 Code Gear、Data Gear にはメタ計算を記述するための Meta Code Gear、Meta Data Gear が存在する。 |
5 メタ計算を Meta Code Gear、によって行うことでメタ計算を階層化して行うことができる。 | 7 メタ計算を Meta Code Gear、によって行うことでメタ計算を階層化して行うことができる。 |
6 Code Gear は関数より細かく分割されてるためメタ計算を柔軟に記述できる。 | 8 Code Gear は関数より細かく分割されてるためメタ計算を柔軟に記述できる。 |
7 Gears OS は Code Gear と Input/Output Data Gear の組を Task とし、並列実行を行う。 | 9 Gears OS は Code Gear と Input/Output Data Gear の組を Task とし、並列実行を行う。 |
13 Gears OS では引数は Context 上に用意された Interface の Data Gear に格納され、操作に対応する Code Gear に goto する。 | 15 Gears OS では引数は Context 上に用意された Interface の Data Gear に格納され、操作に対応する Code Gear に goto する。 |
14 | 16 |
15 Context は使用する Code Gear、Data Gear をすべて格納している Meta Data Gear である。 | 17 Context は使用する Code Gear、Data Gear をすべて格納している Meta Data Gear である。 |
16 通常の計算から Context を直接扱うことはセキュリティ上好ましくない。 | 18 通常の計算から Context を直接扱うことはセキュリティ上好ましくない。 |
17 このため Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub Code Gear を定義した。 | 19 このため Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub Code Gear を定義した。 |
18 stub Code Gear は Code Gear 毎に記述され、Code Gear 間の遷移に挿入される。 | 20 stub Code Gear は Code Gear 毎に記述され、Code Gear 間の遷移の前に挿入される。 |
19 | |
20 並列処理を行う際は Context を生成し、 Code Gear と Input/Output Data Gear を Context に設定して TaskManager 経由で各 Worker の SynchronizedQueue に送信される。 | |
21 Context の設定はメタレベルの記述になるため、ノーマルレベルでは par goto 文という CbC の goto 文に近い記述で並列処理を行える。 | |
22 この par goto は通常のプログラミングの関数呼び出しのように扱える。 | |
23 | 21 |
24 これらのメタ計算の記述は煩雑であるため Perl スクリプトによる自動生成を行なった。 | 22 これらのメタ計算の記述は煩雑であるため Perl スクリプトによる自動生成を行なった。 |
25 これにより Gears OS のコードの煩雑さは改善され、ユーザーレベルではメタを意識する必要がなくなった。 | 23 これにより Gears OS のコードの煩雑さは改善され、ユーザーレベルではメタを意識する必要がなくなった。 |
26 | 24 |
25 ハードウェア上での Gears OS の実装を実現させるために Raspberry Pi 上での実装を考察した。 | |
26 比較的シンプルな OS である xv6 を CbC に書き換えることにした。 | |
27 | |
28 xv6 を CbC で書き換えることによって、実行可能な CbC プログラムで記述された OS がそのまま、 | |
29 状態遷移モデルによるモデル検査、Agda による定理証明が可能となる。 | |
30 | |
27 今後の課題は、 | 31 今後の課題は、 |
28 Go、との比較から、 Gears OS が1CPU での動作が遅いということがわかった。 | 32 現在は xv6 のシステムコールの一部のみの書き換えと、設計のみしか行っていないので、カーネル全ての書き換えと、 |
29 Gears OS は par goto 文を使用することで Context を生成し、並列処理を行う。 | 33 Gears OS の TaskManager の置き換えを行い、Gears OS の機能を xv6 に組み込む必要がある。 |
30 しかし、Context はメモリ空間の確保や使用する全ての Code/Data Gear を設定する必要があり、生成にある程度の時間がかかってしまう。 | 34 また、xv6-rpi は QEMU のみの動作でしか確認してないため、実機上での動作を行う必要がある。 |
31 そこで、 par goto のコンパイルタイミングで実行する Code Gear のフローをモデル検査で解析し、処理が軽い場合はContext を生成せずに、関数呼び出しを行う等の最適化を行なうといったチューニングが必要である。 | |
32 |