diff paper/gearsOS.tex @ 2:b3fc9cc0d85f

Add section
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Jan 2018 05:22:05 +0900
parents
children 86340b0bf212
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/gearsOS.tex	Sun Jan 07 05:22:05 2018 +0900
@@ -0,0 +1,52 @@
+\chapter{Gears OS}
+\section{Code GearとData Gear}
+Gears OS はプログラムとデータの単位として Gear を用いる。
+Gear は並列実行の単位、データの分割、Gear 間の接続等になる。
+
+Code Gear はプログラムの処理そのもので、任意の数の Input Data Gear を参照し、処理が完了すると任意の数の Output Data Gear に書き込む。
+また、Code Gear は接続された Data Gear 以外には参照を行わない。
+Gears OS では \figref{codegear-datagear} で示しているように Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を可能とする。
+
+Code Gear 間の移動は継続を用いて行われる。
+継続は関数呼び出しとは異なり、呼び出し元に戻らず、Code Gear 内で次の Code Gear への継続を行う。
+そのため Code Gear, Data Gear を使ったプログラミングは末尾再帰を強制したスタイルになる。
+
+Gear の特徴として処理やデータの構造が Code Gear、 Data Gear に閉じていることにある。
+これにより、実行時間、メモリ使用量などを予想可能なものにする事が可能になる。
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=1.0]{./fig/codegear-datagear.pdf}
+    \end{center}
+    \caption{Code Gear と Data Gear の依存関係}
+    \label{fig:codegear-datagear}
+\end{figure}
+
+\section{Continuation based C}
+Gears OS の実装は本研究室で開発されているCbC(Continuation based C) を用いて行う。
+CbC は Code Gear を基本的な処理単位として記述できるプログラミング言語である。
+
+CbC の記述例を\coderef{cg1}に, 実際にこのソースコードが実行される際の遷移を\figref{cg1}に示す。
+CbC の Code Gear は \_\_code という型を持つ関数として記述する。
+Code Gear は継続で次の Code Gear に遷移する性質上、関数とは違い戻り値は持たない。
+そのため、\_\_code は Code Gear の戻り値ではなく、Code Gear であることを示すフラグとなっている。
+Code Gear から次の Code Gear への遷移は goto による継続で処理を行い、次の Code Gear への引数として入出力を与える。
+\coderef{cg1}内の goto cg1(a+b); が継続にあたり、(a+b) がcg1 への入力になる。
+
+CbC の goto による継続は Scheme の継続と異なり、呼び出し元の環境を必要とせず、行き先を指定すれば良い。
+したがって、この継続を軽量継続と呼ぶ。
+
+\lstinputlisting[caption=CodeSegmentの軽量継続, label=code:cg1]{./src/cg1.cbc}
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=1.0]{./fig/goto.pdf}
+    \end{center}
+    \caption{goto による Code Gearの軽量継続}
+    \label{fig:cg1}
+\end{figure}
+
+\section{Meta Computation}
+
+\section{Context}
+\section{Interface}