annotate paper/conclusion.tex @ 19:68ea0500773f

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