# HG changeset patch # User mir3636 # Date 1548063264 -32400 # Node ID 7d9441dd343e9339b2f25b36b608ef1b26d3cd0d # Parent 94ac73bc7829526f32264305bff7c55d3d7d2982 update diff -r 94ac73bc7829 -r 7d9441dd343e paper/gearsOS.tex --- a/paper/gearsOS.tex Mon Jan 21 14:31:36 2019 +0900 +++ b/paper/gearsOS.tex Mon Jan 21 18:34:24 2019 +0900 @@ -1,18 +1,21 @@ \chapter{Gears OS の構成} Gears OS は以下の要素で構成される。 -\begin{itemize} - \item Context - \item TaskQueue - \item TaskManager - \item Worker -\end{itemize} + +・Context + +・TaskManager + +・TaskQueue + +・Workers + 図\ref{fig:gearsos} に Gears OS の構成図を示す。 \begin{figure}[ht] \begin{center} - \includegraphics[width=120mm]{./fig/gears_structure} + \includegraphics[width=140mm]{./fig/gears_structure} \end{center} \caption{Gears OS の構成図} \label{fig:gearsos} @@ -22,9 +25,50 @@ Context には Data Gear の Data Type の情報が格納されている。 この情報から確保する Data Gear のサイズなどを決定する。 -Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 -Task は実行する Code Gear と Data Gear をすべて持っている。 +%Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 +%Task は実行する Code Gear と Data Gear をすべて持っている。 TaskManager は Task を実行する Worker の生成、管理、Task の送信を行う。 Gears OS における Task Queue は Synchronized Queue で実現される。 Worker は TaskQueue から Task である Context を取得し、Task の Code Gear を実行し、Output Data Gear の書き出しを行っている。 Input/Output Data Gear の依存関係が解決されたものから並列実行される。 + +\section{Context} +Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 +Task は実行する Code Gear と Data Gear をすべて持っている。 +Context は、ソースコード \ref{contexth} のように定義されている。 + + + +Context は、ソースコード \ref{enumCodeh} のように Code Gear の番号を持っており。 +初期化の際に Code Gear のアドレスと対応付けている。(ソースコード \ref{initContext}) + +\begin{lstlisting}[frame=lrbt,label=code_simple,caption={\footnotesize enumCodeh}] +enum Code { + C_popSingleLinkedStack, + C_pushSingleLinkedStack, + C_stackTest3, + C_assert3, + ... +}; +\end{lstlisting} + +\begin{lstlisting}[frame=lrbt,label=code_simple,caption={\footnotesize initContext}] + context->code[C_popSingleLinkedStack] = popSingleLinkedStack_stub; + context->code[C_pushSingleLinkedStack] = pushSingleLinkedStack_stub; + context->code[C_stackTest3] = stackTest3_stub; + context->code[C_assert3] = assert3_stub; +\end{lstlisting} + +Data Gear も Code Gear と同様に Context が番号を持っている。(ソースコード \ref{enumDatah}) +\begin{lstlisting}[frame=lrbt,label=code_simple,caption={\footnotesize enumDatah}] +enum DataType { + D_Code, + D_SingleLinkedStack, + D_Stack, + D_TaskManager, + D_Worker, + ... +}; +\end{lstlisting} + + diff -r 94ac73bc7829 -r 7d9441dd343e paper/introduction.tex --- a/paper/introduction.tex Mon Jan 21 14:31:36 2019 +0900 +++ b/paper/introduction.tex Mon Jan 21 18:34:24 2019 +0900 @@ -44,7 +44,7 @@ これらの機能は Agda 上で継続を用いた関数型プログラムに対応するようになっている。 \begin{figure}[ht] \begin{center} - \includegraphics[width=70mm]{./fig/MetaGear.pdf} + \includegraphics[width=100mm]{./fig/MetaGear.pdf} \end{center} \caption{Gearsのメタ計算} \label{fig:MetaGear} diff -r 94ac73bc7829 -r 7d9441dd343e paper/meta_computation.tex --- a/paper/meta_computation.tex Mon Jan 21 14:31:36 2019 +0900 +++ b/paper/meta_computation.tex Mon Jan 21 18:34:24 2019 +0900 @@ -59,7 +59,7 @@ \begin{figure}[ht] \begin{center} - \includegraphics[width=70mm]{fig/IO_DataGear.pdf} + \includegraphics[width=100mm]{fig/IO_DataGear.pdf} \end{center} \caption{CodeGear と DataGear} \label{fig:IODataGear}