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