# HG changeset patch # User Tatsuki IHA # Date 1462770272 -32400 # Node ID 04cb189ec8412ef6190a41f94049dc63d288c0f1 # Parent 8d0be7f20a338558a8a40835135f51bc77bf7704 Update diff -r 8d0be7f20a33 -r 04cb189ec841 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 8d0be7f20a33 -r 04cb189ec841 paper/sigos.tex --- a/paper/sigos.tex Mon May 09 13:38:46 2016 +0900 +++ b/paper/sigos.tex Mon May 09 14:04:32 2016 +0900 @@ -190,7 +190,7 @@ \begin{center} \includegraphics[width=70mm]{./pic/gearsos.pdf} \end{center} - \caption{gotoによる Code Segment 間の接続} + \caption{Gears OS の構成図} \label{fig:gearsos} \end{figure} @@ -202,7 +202,7 @@ Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することは出来ない。 Worker 間の相互作用は Persistent Data Tree への読み書きのみで行う。 -Code \ref{src:context}, Code \ref{src:initContext} に実際の Context の定義と初期化を示す。 +Code \ref{src:context}, Code \ref{src:initContext} に実際の Context の定義と生成を示す。 \lstinputlisting[label=src:context, caption=Context]{./src/context.h} \lstinputlisting[label=src:initContext, caption=initContext]{./src/context.c} @@ -215,7 +215,7 @@ これにより、実行時のルーチンなどを動的に変更することが可能となる。 \paragraph* {Data Gear の Allocation 用の情報} -Context の生成時に Allocation 用に Code \ref{src:context} の ALLOCATE\_SIZE 文の領域を確保する。 +Context の生成時(Code \ref{src:initContext})、 Allocation 用に Code \ref{src:context} の ALLOCATE\_SIZE 分の領域を確保する。 Context にはその領域へのポインタとサイズが格納されている(Code \ref{src:context}の struct Context 内の heap, heapLimit)。 実際に Allocation する際は heap を 必要な Data Gear のサイズに応じてインクリメントすることで Data Gear の Allocation を実現する。 @@ -463,10 +463,22 @@ Worker は TaskQueue から Task を取り出し、 Persistent Data Tree から Data Gear を取得し、 Task 内の Code Gear の並列実行を行う。 また、個別の Context を参照しているので、メモリ空間が独立しており、メモリを確保する処理で他の Worker を止めることはない。 -今後の課題として、 今回の例題では Twice を用いて並列処理の性能を示したが、 Twice は依存関係のない並列処理である。 +今後の課題として、 依存関係のある並列処理の実現、 GPU などのプロセッサ等での実行、 デバック手法、 型検査が上げられる。 + +今回の例題では Twice を用いて並列処理の性能を示したが、 Twice は依存関係のない並列処理である。 本来、並列処理には依存関係が存在するため、 複雑な並列処理でも安定した実行ができることを依存関係がある並列処理の例題を作成し、評価する必要がある。 -また、型情報を残すために Data Gear を定義しているが、 Data Gear 野方情報を検査していない。 +Gears OS 上でマルチコア CPU を用いた実行を可能にしたが、 GPU などの他のプロセッサを演算に用いることができない。 +そのため、 Data Gear 等のデータを GPU などの各プロセッサにマッピングするための機構を用意する必要がある。 + +Gears OS は 関数呼び出しではなく、スタックを積まない軽量継続を使用して実装されているため、スタックトレースが見えず、従来のデバック手法が使えない。 +そのため、Gears OS 用の 新しい デバック手法を考案する必要がある。 +Gears OS は Context から Data Gear の情報を取得できるため、そこから今の状況を把握することができる。 +その性質から、 Context を見ることができるコードを Meta Code Gear に入れることで、 Code Gear を止めて Data Gear の状況を見ることが可能となる。 +しかし、この方法では並列で動いている Code Gear に対しては綺麗にデバック出来ない。 +そのため、並列処理でのデバック手法も考案する必要がある。 + +また、型情報を残すために Data Gear を定義しているが、 Data Gear の型情報を検査していない。 プログラムの正しさを保証するために Data Gear の型情報を検査するシステムを 実装する必要がある。 % GPU の方も書く % debug 手法