# HG changeset patch # User mir3636 # Date 1494755276 -32400 # Node ID 876ee5de108858ce829e029420862314f16498b2 # Parent 77e8dfb995b342328e573e37cb3de79c9a1e7451 add graffle diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/chapter1.tex --- a/final_main/chapter1.tex Thu Feb 16 12:43:26 2017 +0900 +++ b/final_main/chapter1.tex Sun May 14 18:47:56 2017 +0900 @@ -7,15 +7,16 @@ %\section{メタ計算の重要性} -プログラムを記述する際、通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等、記述しなければならない処理が存在する。 -これらの計算を Meta Computation と呼ぶ。 +プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理、スレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。 +これらの計算をメタ計算と呼ぶ。 -Meta Computation を通常の計算から切り離して記述するためには処理を細かく分割する必要がある。しかし、関数やクラスなどの単位は容易に分割できない。 +メタ計算を通常の計算から切り離して記述するためには処理を細かく分割する必要がある。しかし、関数やクラスなどの単位は容易に分割できない。 -そこで当研究室では Meta Computation を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 +そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 -Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。 -Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いて Meta Computation を実現する。 +Code Gear は処理の単位である。 +関数に比べて細かく分割されているのでメタ計算をより柔軟に記述できる。 +Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いてメタ計算を実現する。 Continuation based C (CbC)\cite{cbc} はこの Code Gear 単位を用いたプログラミング言語として開発している。 @@ -23,7 +24,7 @@ また、当研究室で開発している Gears OS\cite{gears} は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。 -本研究では CbC を用いての Gears OS の実装と CbC における ユーザーの関知しない Meta Computationの自動生成を行なう。 +本研究では CbC を用いての Gears OS の実装と Gears OS におけるメタ計算の自動生成を行なう。 %\section{論文の構成} diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/chapter3.tex --- a/final_main/chapter3.tex Thu Feb 16 12:43:26 2017 +0900 +++ b/final_main/chapter3.tex Sun May 14 18:47:56 2017 +0900 @@ -6,8 +6,8 @@ また、接続された Data Gear 以外には参照を行わない。 処理やデータの構造が Code Gear、Data Gear に閉じているため、これにより実行時間、メモリ使用量などを予測可能なものにすることが可能になる。 -Gears OS では Meta Computation を Meta Code Gear、Meta Data Gear で表現する。 -Meta Code Gear は通常のCode Gear の直後に遷移され、Meta Computation を実行する。 +Gears OS ではメタ計算を、Meta Code Gear、Meta Data Gear で表現する。 +Meta Code Gear は通常のCode Gear の直後に遷移され、メタ計算を実行する。 CbC は Code Gear を処理の単位として用いたプログラミング言語であるため、Gears OS の Code Gear を記述するのに適している。 @@ -39,9 +39,9 @@ \section{interface の記述} -interface を記述することで Context を通して Code Gear が参照できるようになった。 +interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。 create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 -return で interface を返し、その先で指定した Code Gear へ継続できるようになる。 +return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。 \begin{lstlisting}[frame=lrbt,label=interface,caption={interface}] typedef struct Stack{ diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/chapter5.tex --- a/final_main/chapter5.tex Thu Feb 16 12:43:26 2017 +0900 +++ b/final_main/chapter5.tex Sun May 14 18:47:56 2017 +0900 @@ -1,7 +1,7 @@ \chapter{Context、stub Code Segment の自動生成} -Gears OS では 3 章で述べたように通常の Computation の他に Context や stub などの Meta Computation を記述する必要がある。 -Gears OS を現在の CbC の機能のみを用いて記述するとこの Meta Computation の記述を行わなくてはならず、これには多くの労力を要する。 +Gears OS では 3 章で述べたようにノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。 +Gears OS を現在の CbC の機能のみを用いて記述するとこのメタ計算の記述を行わなくてはならず、これには多くの労力を要する。 この記述を助けるために Context を生成する generate\_context と stub Code Gear を生成する generate\_stub を perl スクリプトで作成した。 \section{stub Code Segment の生成} @@ -13,7 +13,7 @@ generate\_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する(リスト\ref{generate_stub})。 この時既に stub Code Gear が記述されている Code Gear は無視される。 -cbc ファイル(リスト\ref{stack_cbc}) から、生成した stub Code Gear を加えて c ファイル(\ref{stack_c})に変換を行う。 +cbc ファイル(リスト\ref{stack_cbc}) から、生成した stub Code Gear を加えて stub を加えたコード(\ref{stack_c})に変換を行う。 \begin{lstlisting}[frame=lrbt,label=generate_stub,caption={\footnotesize generate stub}] sub generateStubArgs { @@ -196,7 +196,7 @@ \end{lstlisting} -Code Gear の取得は指定された c ファイルから \_\_code 型を見て行う。 +Code Gear の取得は指定された stub を加えたコードから \_\_code 型を見て行う。 取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。 Code/Data Gear の名前とポインタの対応は generate\_context によって生成される enum Code、enum Data と関数ポインタによって表現される。 diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/chapter6.tex --- a/final_main/chapter6.tex Thu Feb 16 12:43:26 2017 +0900 +++ b/final_main/chapter6.tex Sun May 14 18:47:56 2017 +0900 @@ -1,6 +1,6 @@ \chapter{今後の課題} 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 -今後の課題は Code Gear から meta computation を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 -また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることも優先する。 +今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 +また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/fig/.DS_Store Binary file final_main/fig/.DS_Store has changed diff -r 77e8dfb995b3 -r 876ee5de1088 final_main/main.pdf Binary file final_main/main.pdf has changed diff -r 77e8dfb995b3 -r 876ee5de1088 final_pre/finalPre.pdf Binary file final_pre/finalPre.pdf has changed diff -r 77e8dfb995b3 -r 876ee5de1088 final_pre/finalPre.tex --- a/final_pre/finalPre.tex Thu Feb 16 12:43:26 2017 +0900 +++ b/final_pre/finalPre.tex Sun May 14 18:47:56 2017 +0900 @@ -161,14 +161,14 @@ stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。 \section{Context, stub の自動生成} -Gears OS では通常の Computation の他に Context や stub などの Meta Computation を記述する必要がある。 +Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。 Gears OS を現在の CbC の機能のみを用いて記述すると Context や stub Code Gear の記述を行わなくてはならず、これには多くの労力を要する。 そのため、この記述を助けるために Context を生成する generate\_context と stub Code Gear を生成する generate\_stub を perl スクリプトで作成した。 \section{今後の課題} 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perlスクリプトの生成を行なった。 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 -今後の課題は Code Gear から meta computation を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 +今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang\cite{llvm} 上で実装しコンパイラで直接 CbC を実行できるようにすることも優先する。 \nocite{*} diff -r 77e8dfb995b3 -r 876ee5de1088 presen/fig/generate_context.graffle Binary file presen/fig/generate_context.graffle has changed