changeset 7:f57143305847

fix
author mir3636
date Thu, 21 Dec 2017 18:57:57 +0900
parents dc0aa4a22e32
children a6372acc8f0e
files Paper/main.pdf Paper/main.tex Paper/pic/metaCS.pdf Paper/pic/metaCS.xbb
diffstat 4 files changed, 56 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/main.pdf has changed
--- a/Paper/main.tex	Wed Dec 20 18:44:34 2017 +0900
+++ b/Paper/main.tex	Thu Dec 21 18:57:57 2017 +0900
@@ -160,9 +160,27 @@
 
 Gears OS では メタ計算 を Meta Code Gear、Meta Data Gear で表現する。
 Meta Code Gear は通常の Code Gear の直後に遷移され、メタ計算を実行する。
-Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
+これを図示したものが図\ref{fig:metaCS}である。
+%Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
+
+\begin{figure}[ht]
+ \begin{center}
+  \includegraphics[width=70mm]{./pic/metaCS.pdf}
+ \end{center}
+ \caption{Gears でのメタ計算}
+ \label{fig:metaCS}
+\end{figure}
 
-CbC は Code Gear を処理の単位として用いたプログラミング言語であるため、Gears OS の Code Gear を記述するのに適している。
+Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
+Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
+
+しかし Context を通常の計算から直接扱うのはセキュリティ上好ましくない。
+そこで Context から必要なデータを取り出して Code Gear に接続するMeta Code Gear である stub Code Gear を定義し、
+これを介して間接的に必要な Data Gear にアクセスする。
+stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する前に挿入される。
+goto による継続を行うと、実際には次の Code Gear の stub Code Gear を呼び出す。
+
+%CbC は Code Gear を処理の単位として用いたプログラミング言語であるため、Gears OS の Code Gear を記述するのに適している。
 
 \section{Gears OS の構成}
 Gears OS は以下の要素で構成される。
@@ -184,8 +202,8 @@
  \label{fig:gearsos}
 \end{figure}
 
-Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
-Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
+%Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
+%Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
 Code\ref{context} は Context の定義で Code\ref{initcontext} は Context の生成である。
 
 \lstinputlisting[caption=Context, label=context]{./src/context1.c}
@@ -196,24 +214,21 @@
 この情報から確保する Data Gear のサイズなどを決定する。
 Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。
 
-Context は Task でもあり、TaskManager によって Context が生成され Task Queue へ挿入する。
+Context は Task でもあり、Taskは通常のOSのスレッドに対応する。
+Task は実行する Code Gear と Data Gear をすべて持っている。
+TaskManager によって Context が生成され Task Queue へ挿入する。
 Gears OS における Task Queue は Synchronized Queue で実現される。
 Worker は TaskQueue から Task である Context を取得し、 Input/Output Data Gear の依存関係が解決されたものから並列実行される。
 
-\section{CbC のコードの例}
+%\section{CbC のコードの例}
 
-Code\ref{excbc}は CbC で記述された stack のコードの一部である。
-Code Gear は \_\_code Code Gear の記述から始まり、次の Code Gear へ goto で遷移する。
+%Code\ref{excbc}は CbC で記述された stack のコードの一部である。
+%Code Gear は \_\_code Code Gear の記述から始まり、次の Code Gear へ goto で遷移する。
 
 %...の説明
 %codegearの説明もっとする?
 
-\lstinputlisting[label=excbc, caption=CbC で記述された stack のコード]{./src/ex_stack.cbc}
-
-\section{CbC による Gears OS 記述の問題}
-Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
-これらのメタ計算を自動生成、interface、implement の機能を導入することにより、ユーザーレベルにおける CbC 可読性を上げ、
-Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
+%\lstinputlisting[label=excbc, caption=CbC で記述された stack のコード]{./src/ex_stack.cbc}
 
 \section{interface と implement}
 interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。
@@ -231,33 +246,30 @@
 
 \lstinputlisting[label=implement, caption=Implement]{./src/stackimpl.cbc}
 
-\section{Gearef、GearImpl}
+%\section{Gearef、GearImpl}
 
-Context には Allocation 等で生成した Data Gear へのポインタが格納されている。
-Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、Code\ref{gearef1} のようにコードが煩雑になってしまう。
-そこで Code Gear がデータを参照するための Gearef というマクロを定義した。
-Gearef に Context と型を渡すことでデータの参照が行える。
-また interface の実装を参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。
-GearImpl は Context と interface 名、interface の変数名を指定して参照する。
-Gearef と GearImpl を用いたコードが Code\ref{gearef2}である。
+%Context には Allocation 等で生成した Data Gear へのポインタが格納されている。
+%Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、Code\ref{gearef1} のようにコードが煩雑になってしまう。
+%そこで Code Gear がデータを参照するための Gearef というマクロを定義した。
+%Gearef に Context と型を渡すことでデータの参照が行える。
+%また interface の実装を参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。
+%GearImpl は Context と interface 名、interface の変数名を指定して参照する。
+%Gearef と GearImpl を用いたコードが Code\ref{gearef2}である。
 
-\lstinputlisting[label=gearef1, caption=定義前のコード]{./src/ex_code1}
-\lstinputlisting[label=gearef2, caption=Gearef、GearImplを用いたコード]{./src/ex_code2}
+%\lstinputlisting[label=gearef1, caption=定義前のコード]{./src/ex_code1}
+%\lstinputlisting[label=gearef2, caption=Gearef、GearImplを用いたコード]{./src/ex_code2}
 
-\section{stub Code Gear}
-Code Gear が必要とする Data Gear を取り出す際に Context を通す必要があるが、
-Context を直接扱うのはセキュリティ上好ましくない。
-そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
-stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。
+%\section{stub Code Gear}
+%Code Gear が必要とする Data Gear を取り出す際に Context を通す必要があるが、
+%Context を直接扱うのはセキュリティ上好ましくない。
+%そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
+%stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。
 
-\section{CbC による Gears OS 記述の問題}
-
-%メタの話
+\section{stub Code Gear の生成}
 
 Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
 これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
 
-\section{stub Code Gear の生成}
 stub Code Gear は Code Gear 間の継続に挟まれる Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。
 Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。
 stub Code Gear を 自動生成する generate stub を Perl スクリプトで作成することによって Code Gear の記述量を約半分にすることができる。
@@ -300,6 +312,9 @@
 
 \lstinputlisting[label=init_context, caption=生成されたinitContext]{./src/gencontext.c}
 
+%\section{比較}
+%\section{結論}
+
 \section{今後の課題}
 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。
 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。
Binary file Paper/pic/metaCS.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/pic/metaCS.xbb	Thu Dec 21 18:57:57 2017 +0900
@@ -0,0 +1,8 @@
+%%Title: ./fig/metaCS.pdf
+%%Creator: extractbb 20140317
+%%BoundingBox: 31 511 515 732
+%%HiResBoundingBox: 30.601520 511.100000 515.413800 732.012800
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Mon Feb 15 05:21:55 2016
+