# HG changeset patch # User Shohei KOKUBO # Date 1430815540 -32400 # Node ID b02e6b40f4701ba3636b1089c2ea388ddf3062a6 # Parent 05be3fd3575032efb9fcaf026c37d74daaafab87 edit diff -r 05be3fd35750 -r b02e6b40f470 paper/sigos.bib --- a/paper/sigos.bib Tue May 05 14:24:59 2015 +0900 +++ b/paper/sigos.bib Tue May 05 17:45:40 2015 +0900 @@ -1,11 +1,11 @@ -@article{FFTonGPU, - author = "{Yasuhiko OGATA, Toshio Endo, Naoya MARUYAMA, Satoshi MATSUOKA}", - title = "性能モデルに基づくCPU及びGPUを併用する効率的なFFTライブラリ", - journal = "情報処理学会論文誌 コンピューティングシステム", - month = "June", - year = 2008 +@article{ + Monad, + author = "{Eugenio Moggi}", + title = "Computational lambda-calculus and monads", + journal = "Proceedings of the Fourth Annual Symposium on Logic in computer science", + year = 1989 } - + @misc{cell, author = "{Sony Corporation}", title = "{Cell broadband engine architecture}", @@ -18,21 +18,6 @@ howpublished = "{https//sourceforge.jp/projects/cerium/}" } -@Article{ AugThiNamWac11CCPE, -author = "{C{\'e}dric Augonnet, Samuel Thibault, Raymond Namyst, Pierre-Andr{\'e} Wacrenier}", -title = {{StarPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architectures}}, -journal = {Concurrency and Computation: Practice and Experience, Special Issue: Euro-Par 2009}, -volume = 23, -issue = 2, -pages = {187--198}, -year = 2011, -month = FEB, -publisher = {John Wiley & Sons, Ltd.}, -doi = {10.1002/cpe.1631}, -url = {http://hal.inria.fr/inria-00550877}, -keywords = {StarPU} -} - @article{gongo:2008a, author = "宮國 渡 and 河野 真治 and 神里 晃 and 杉山 千秋", title = "Cell 用の Fine-grain Task Manager の実装", @@ -55,6 +40,7 @@ month = "April", year = 2011 } + @article{toma:2012a, author = "當眞 大千 and 河野 真治", title = "Cerium Task Manager におけるマルチコア上での並列実行機構の実装", diff -r 05be3fd35750 -r b02e6b40f470 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 05be3fd35750 -r b02e6b40f470 paper/sigos.tex --- a/paper/sigos.tex Tue May 05 14:24:59 2015 +0900 +++ b/paper/sigos.tex Tue May 05 17:45:40 2015 +0900 @@ -95,9 +95,10 @@ Gears OS では、Meta な機能を関数型言語における Monad に基づいて実現する。 Gears OS を用いて作成されたプログラムに対する Model Checking を行う機能を提供する。 -これにより、生成されたプログラムの信頼性を保証する。 +Model Chaecking によって、並列実行時のデッドロックの検出などを行う。 +これにより、プログラムの信頼性を保証する。 -Gears OS は Gear を継続することによる柔軟性、Monad に基づくメタ計算による並行制御、Model Checking を用いた信頼性の確保を目的とする。 +Gears OS は接続する Gear を変更することでプログラムの振る舞いを変更することを可能にする柔軟性、Monad に基づくメタ計算による並行制御、Model Checking を用いた信頼性の確保を目的とする。 % Theory \section{Monad とメタ計算} @@ -105,7 +106,7 @@ がある。 メタ計算の例として、失敗する可能性がある計算、並行処理、入出力などの副 作用、メモリ管理などがある。 -メタ計算の理論的な表現として、Monad を用いることが Moggi らにより提案 +メタ計算の理論的な表現として、Monad を用いることが Moggi らにより提案\cite{Monad} されている。 Gears OS ではメタ計算を表現するのに、Monad と軽量継続を用いる。 @@ -135,7 +136,7 @@ Gears OS ではプログラムの実行単位として様々な Gear を使う。 Gear が平行実行の単位、データ分割、Gear 間の接続などになる。 -Code Gear はプログラムの実行コードそのものであり、Cuda +Code Gear はプログラムの実行コードそのものであり、CUDA の kernel に相当する。 Code Gear は複数の Data Gear を参照し、一つまたは複数の Data Gear に書 き込む。 @@ -161,7 +162,6 @@ Meta Gear は、いままでの OS におけるライブラリや内部のデータ構造に相当 する。 なので、Meta Gear は Code Gear, Data Gear へのポインタを持っている。 - % s/Segment/Gear % Context @@ -185,24 +185,20 @@ \lstinputlisting[caption=Context]{source/context.h} -\textbf{Code Gear の名前とポインタの対応表} - +\paragraph*{Code Gear の名前とポインタの対応表} Code Gear の名前とポインタの対応は enum と関数ポインタによって表現される。 これにより、実行時に比較ルーチンなどを動的に変更することが可能になる。 -\textbf{Data Gear の Allocation 用の情報} - +\paragraph*{Data Gear の Allocation 用の情報} Context の生成時にある程度の領域を確保する。 Context にはその領域へのポインタとサイズが格納されている。 そのポインタを必要な Data Gear のサイズに応じて、インクリメントすることによって Data Gear の Allocation を実現する。 -\textbf{Code Gear が参照する Data Gear へのポインタ} - +\paragraph*{Code Gear が参照する Data Gear へのポインタ} Context には Data Gear へのポインタが格納されている。 Code Gear は Context を通して Data Gear へアクセスする。 -\textbf{Data Gear に格納される Data Type の情報} - +\paragraph*{Data Gear に格納される Data Type の情報} Data Gear は union と struct によって表現される。 Context には Data Gear の Data Type の情報が格納されている。 この情報から確保する Data Gear のサイズなどを決定する。 @@ -213,7 +209,7 @@ \section{Persistent Data Gear} Data Gear の管理には木構造を用いる。 この木構造は非破壊で構築される。 -非破壊的木構造では、編集元の木構造を破壊することなく新しい木構造を構成する。 +非破壊的木構造では、図\ref{fig:non-destructive_tree}のように編集元の木構造を破壊することなく新しい木構造を構成する。 破壊的木構造と異なりロックの必要がなく、平行して読み書き、参照を行うことが可能である。 また、変更前の木構造をすべて保持しているので過去のデータにアクセスすることができる。 @@ -221,6 +217,7 @@ \centering \includegraphics[width=70mm]{images/nondestructive_tree_modification.pdf} \caption{木構造の非破壊的編集} + \label{fig:non-destructive_tree} \end{figure} % allocator @@ -232,6 +229,18 @@ \lstinputlisting[caption=Allocator]{source/allocate.h} +% List +\section{List} +通常 List は要素と次へのポインタを持つ構造体で表現される。 +Gears OS の場合、Meta レベル以外でポインタは扱わないので図\ref{fig:list}のように任意の要素を持つ Data Gear と次へのポインタを持つ Meta Data Gear の組によって List は表現される。 + +\begin{figure}[!h] + \centering + \includegraphics[width=70mm]{images/List.pdf} + \caption{List の表現} + \label{fig:list} +\end{figure} + \section{} \nocite{*} \bibliographystyle{ipsjunsrt}