comparison Paper/main.tex @ 10:8550077113b9

fix
author mir3636
date Fri, 22 Dec 2017 22:53:23 +0900
parents a6372acc8f0e
children 3e81264d4764
comparison
equal deleted inserted replaced
9:e61e468bf6fc 10:8550077113b9
169 \end{center} 169 \end{center}
170 \caption{Gears でのメタ計算} 170 \caption{Gears でのメタ計算}
171 \label{fig:metaCS} 171 \label{fig:metaCS}
172 \end{figure} 172 \end{figure}
173 173
174 Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。 174 Gears OS は Context と呼ばれる使用されるすべての Code Gear、Data Gear 持っている Meta Data Gear を持つ。
175 Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。 175 Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
176 176
177 しかし Context を通常の計算から直接扱うのはセキュリティ上好ましくない。 177 しかし Context を通常の計算から直接扱うのはセキュリティ上好ましくない。
178 そこで Context から必要なデータを取り出して Code Gear に接続するMeta Code Gear である stub Code Gear を定義し、 178 そこで Context から必要なデータを取り出して Code Gear に接続するMeta Code Gear である stub Code Gear を定義し、
179 これを介して間接的に必要な Data Gear にアクセスする。 179 これを介して間接的に必要な Data Gear にアクセスする。
210 \lstinputlisting[label=initcontext, caption=initContext]{./src/initcontext.c} 210 \lstinputlisting[label=initcontext, caption=initContext]{./src/initcontext.c}
211 211
212 Data Gear は union と struct によって表現される。 212 Data Gear は union と struct によって表現される。
213 Context には Data Gear の Data Type の情報が格納されている。 213 Context には Data Gear の Data Type の情報が格納されている。
214 この情報から確保する Data Gear のサイズなどを決定する。 214 この情報から確保する Data Gear のサイズなどを決定する。
215 Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。 215 %Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。
216 216
217 Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 217 Context は Task でもあり、Taskは通常のOSのスレッドに対応する。
218 Task は実行する Code Gear と Data Gear をすべて持っている。 218 Task は実行する Code Gear と Data Gear をすべて持っている。
219 TaskManager によって Context が生成され Task Queue へ挿入する。 219 TaskManager によって Context が生成され Task Queue へ挿入する。
220 Gears OS における Task Queue は Synchronized Queue で実現される。 220 Gears OS における Task Queue は Synchronized Queue で実現される。
326 %GearsOSのメタ計算部分の実装例を示した 326 %GearsOSのメタ計算部分の実装例を示した
327 %メタ計算の有効性 327 %メタ計算の有効性
328 %Interfaceの有用性 328 %Interfaceの有用性
329 329
330 \section{今後の課題} 330 \section{今後の課題}
331 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。 331 本論文では Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。
332 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 332 Code Gear 、Data Gear を処理とデータの単位として用いて Gears OS を設計した。
333 Code Gear、Data Gear にはメタ計算を記述するための Meta Code Gear、Meta Data Gear が存在する。
334 メタ計算を Meta Code Gear、によって行うことでメタ計算を階層化して行うことができる。
335 Code Gear は関数より細かく分割されてるためメタ計算を柔軟に記述できる。
336
337 Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。
338 Interface は使用される Data Gear の定義と、それに対する操作を行う Code Gear の集合である。
339 Interface は複数の実装をもち、Meta Data Gear として定義される。
340 従来の関数呼び出しでは引数をスタック上に構成し、関数の実装アドレスを Call するが、
341 Gears OS では引数は Context 上に用意された Interface の Data Gear に格納され、操作に対応する Code Gear に goto する。
342
343 Context は使用する Code Gear、Data Gear をすべて格納している Meta Data Gear である。
344 通常の計算から Context を直接扱うことはセキュリティ上好ましくない。
345 このため Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub Code Gear を定義した。
346 stub Code Gear は Code Gear 毎に記述され、Code Gear 間の遷移に挿入される。
347
348 これらのメタ計算の記述は煩雑であるため Perl スクリプトによる自動生成を行なった。
349 これにより Gears OS のコードの煩雑さは改善され、ユーザーレベルではメタを意識する必要がなくなった。
333 350
334 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 351 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。
335 また、今回 Perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 352 また、今回 Perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。
336 353
337 % BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 354 % BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%