# HG changeset patch # User mir3636 # Date 1523608127 -32400 # Node ID 00013625773673fba6d887bea7adcab54063e580 # Parent 48561c7a20366ca1e0ee178145f871d6f2a579dd fix diff -r 48561c7a2036 -r 000136257736 Paper/sigos.pdf Binary file Paper/sigos.pdf has changed diff -r 48561c7a2036 -r 000136257736 Paper/sigos.tex --- a/Paper/sigos.tex Fri Apr 13 17:15:24 2018 +0900 +++ b/Paper/sigos.tex Fri Apr 13 17:28:47 2018 +0900 @@ -371,8 +371,6 @@ Context には Data Gear の Data Type の情報が格納されている。 この情報から確保される Data Gear のサイズなどを決定する。 -\lstinputlisting[label=init_context, caption=Perlスクリプトで生成されたinitContext]{./src/gencontext.c} - \section{Gears OS の並列処理} Gears OS では実行の Task を Code Gear と Input/Output Data Gear の組で表現する。 Input/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う。 @@ -394,25 +392,25 @@ 異なる場合は他に書き込みがあったとみなされ、値の更新に失敗する。 %CAS のコード -Gears OS ではこの CAS を行うための Interface を定義している(\coderef{atomicInterface})。 +Gears OS ではこの CAS を行うための Interface を定義している(Code\ref{atomicInterface})。 この Interface では、Data Gear 全てを内包している Data 共用体のポインタの値を更新する CAS を定義して -いる(\coderef{atomicInterface} 6行目)。 +いる(Code\ref{atomicInterface} 6行目)。 -\lstinputlisting[caption=AtomicInterface, label=code:atomicInterface]{./src/atomicInterface.h} +\lstinputlisting[label=atomicInterface, caption=AtomicInterface]{./src/atomicInterface.h} -AtomicInterface での CAS の実際の実装を \coderef{atomicImpl} に示す。 -実際の実装では \_\_sync\_bool\_compare\_and\_swap 関数を呼び出すことで CAS を行う(\coderef{atomicImpl} 2行目)。 +AtomicInterface での CAS の実際の実装を Code\ref{atomicImpl} に示す。 +実際の実装では \_\_sync\_bool\_compare\_and\_swap 関数を呼び出すことで CAS を行う(Code\ref{atomicImpl} 2行目)。 この関数は第一引数に渡されたアドレスに対して第二引数の値から第三引数の値ヘ CAS を行う。 CAS に成功した場合、true を返し、失敗した場合は false を返す。 -\coderef{atomicImpl} では CAS に成功した場合と失敗した場合それぞれに対応した Code Gear へ継続する。 +Code\ref{atomicImpl} では CAS に成功した場合と失敗した場合それぞれに対応した Code Gear へ継続する。 -\lstinputlisting[caption=CAS の実装, label=code:atomicImpl]{./src/atomicImpl.cbc} +\lstinputlisting[caption=CAS の実装, label=atomicImpl]{./src/atomicImpl.cbc} -SynchronizedQueue の Data Gear の定義を \coderef{synchronizedQueue} に示す。 +SynchronizedQueue の Data Gear の定義を Code\ref{synchronizedQueue} に示す。 SynchronizedQueue はデータのリストの先頭と、終端のポインタを持っている。 Queue を操作する際はこのポインタに対して CAS をすることでデータの挿入と取り出しを行う。 -\lstinputlisting[caption=SynchronizedQueue の定義, label=code:synchronizedQueue]{./src/synchronizedQueue.h} +\lstinputlisting[caption=SynchronizedQueue の定義, label=synchronizedQueue]{./src/synchronizedQueue.h} %\section{依存関係の解決}