0
|
1 \chapter{結論}
|
1
|
2 本論文では Gears OS のプロトタイプの設計と実装、メタ計算である Context と stub の生成を行う Perl スクリプトの記述、並列実行機構の実装を行った。
|
|
3 Code Gear 、Data Gear を処理とデータの単位として用いて Gears OS を設計した。
|
|
4 Code Gear、Data Gear にはメタ計算を記述するための Meta Code Gear、Meta Data Gear が存在する。
|
|
5 メタ計算を Meta Code Gear、によって行うことでメタ計算を階層化して行うことができる。
|
|
6 Code Gear は関数より細かく分割されてるためメタ計算を柔軟に記述できる。
|
|
7 Gears OS は Code Gear と Input/Output Data Gear の組を Task とし、並列実行を行う。
|
0
|
8
|
1
|
9 Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。
|
|
10 Interface は使用される Data Gear の定義と、それに対する操作を行う Code Gear の集合である。
|
|
11 Interface は複数の実装をもち、Meta Data Gear として定義される。
|
|
12 従来の関数呼び出しでは引数をスタック上に構成し、関数の実装アドレスを Call するが、
|
|
13 Gears OS では引数は Context 上に用意された Interface の Data Gear に格納され、操作に対応する Code Gear に goto する。
|
0
|
14
|
1
|
15 Context は使用する Code Gear、Data Gear をすべて格納している Meta Data Gear である。
|
|
16 通常の計算から Context を直接扱うことはセキュリティ上好ましくない。
|
|
17 このため Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub Code Gear を定義した。
|
|
18 stub Code Gear は Code Gear 毎に記述され、Code Gear 間の遷移に挿入される。
|
0
|
19
|
1
|
20 並列処理を行う際は Context を生成し、 Code Gear と Input/Output Data Gear を Context に設定して TaskManager 経由で各 Worker の SynchronizedQueue に送信される。
|
|
21 Context の設定はメタレベルの記述になるため、ノーマルレベルでは par goto 文という CbC の goto 文に近い記述で並列処理を行える。
|
|
22 この par goto は通常のプログラミングの関数呼び出しのように扱える。
|
0
|
23
|
1
|
24 これらのメタ計算の記述は煩雑であるため Perl スクリプトによる自動生成を行なった。
|
|
25 これにより Gears OS のコードの煩雑さは改善され、ユーザーレベルではメタを意識する必要がなくなった。
|
0
|
26
|
1
|
27 今後の課題は、
|
|
28 Go、との比較から、 Gears OS が1CPU での動作が遅いということがわかった。
|
0
|
29 Gears OS は par goto 文を使用することで Context を生成し、並列処理を行う。
|
|
30 しかし、Context はメモリ空間の確保や使用する全ての Code/Data Gear を設定する必要があり、生成にある程度の時間がかかってしまう。
|
1
|
31 そこで、 par goto のコンパイルタイミングで実行する Code Gear のフローをモデル検査で解析し、処理が軽い場合はContext を生成せずに、関数呼び出しを行う等の最適化を行なうといったチュ>ーニングが必要である。
|
0
|
32
|