# HG changeset patch # User Tatsuki IHA # Date 1462691164 -32400 # Node ID 31341eeba799a2aa16e066dd0599bb2f79e80617 # Parent d23040817cf69862647c3391d238c4bb1010e9ba Update diff -r d23040817cf6 -r 31341eeba799 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r d23040817cf6 -r 31341eeba799 paper/sigos.tex --- a/paper/sigos.tex Sun May 08 14:59:00 2016 +0900 +++ b/paper/sigos.tex Sun May 08 16:06:04 2016 +0900 @@ -343,6 +343,30 @@ \section{まとめ} 本論文では Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装を行った。 +Code Gear は処理、 Data Gear はデータの単位である。 +Code Gear は戻り値を持たないので、関数呼び出しのようにスタックに値を積む必要がなく、スタックは変更されない。 +そのため並列化、ループ制御、関数コールとスタックの操作を意識した最適化をソースコードレベルで行える。 +また、プログラム Code/Data Gear に分割して記述することで並列度を高めることができる。 + +Gears OS の基本的な機能として、 TaskQueue, Persistent Data Tree, Workerの実装を Code/Data Gear に基づいて行った。 +Gears OS では Context というデータ構造に Code/Data Gear のリスト、 TaskQueue へのポインタ Persistent Data Tree へのポインタ、Temporal Data Gear を確保するためのメモリ空間などがある。 +Context はスレッド毎に存在し、それぞれが異なる Context を参照している。 +TaskQueue は並列処理される Task を管理する。 +TaskQueue はすべての Context で共有され、マルチスレッドで動作する必要がある。 +そのためデータの一貫性を保つために Compare and Swap(CAS) を用いた実装を行った。 +Persistent Data Tree は 並列処理 での Data Gearの管理を行う。 +そのためすべての Context で共有される。 +Persistent Data Tree は非破壊木構造で構成することで読み書きのを平行して行う事が可能となった。 +また、Red-Black Tree アルゴリズムを用いて実装することで木の平衡性が保たれる。 +Worker は TaskQueue から Task を取り出し、 Persistent Data Tree から Data Gear を取得し、 Task 内の Code Gear の並列実行を行う。 +また、個別の Context を参照しているので、メモリ空間が独立しており、メモリを確保する処理で他の Worker を止めることはない。 + +今後の課題として、 今回の例題では Twice を用いて並列処理の性能を示したが、 Twice は依存関係のない並列処理である。 +本来、並列処理には依存関係が存在するため、 複雑な並列処理でも安定した実行ができることを依存関係がある並列処理の例題を作成し、評価する必要がある。 + +また、型情報を残すために Data Gear を定義しているが、 Data Gear 野方情報を検査していない。 +プログラムの正しさを保証するために Data Gear の型情報を検査するシステムを 実装する必要がある。 + \nocite{*} \bibliographystyle{ipsjunsrt} \bibliography{sigos}