# HG changeset patch # User e165723 # Date 1557239105 -32400 # Node ID ca398b70183187cbe9c209060031e37f9a3a0aed # Parent 8dd84d4179f81b6a21fc938429302facc90de751 Fourth chapter modify diff -r 8dd84d4179f8 -r ca398b701831 Paper/sigos.pdf Binary file Paper/sigos.pdf has changed diff -r 8dd84d4179f8 -r ca398b701831 Paper/sigos.tex --- a/Paper/sigos.tex Tue May 07 22:00:58 2019 +0900 +++ b/Paper/sigos.tex Tue May 07 23:25:05 2019 +0900 @@ -104,12 +104,19 @@ Gears OS は Code Gear、Data Gear の単位を用いて開発されており、CbC で記述されている。Gears OS は Context と呼ばれる使用されるすべての Code Gear、Data Gear 持っ ている Meta Data Gear を持つ。Gears OS は継続の際この Context を常に持ち歩き、必要な Code Gear、Data Gear を参照したい場合、この Context を通して参照する。 \subsection{Context} -Context は実行する Code Gear と Data Gear を全て持っている Meta Data Gear で ある。Context は通常の OS のスレッドに対応する。 +Context は実行する Code Gear と Data Gear を全て持っており、通常 OS のプロセスに相当する。 +また Context は Data Gear を構造体で定義しており、その全てを union と定義している。 +Context 内で Code Gear と Data Gear は enumにより番号で管理されている。 \subsection{Interface} +Interface は Gears OS のモジュール化の仕組みである。Interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。呼び出される Code Gear の引数となる Data Gear はここで全て定義される。Interface を定義 することで複数の実装を持つことができる。 +CbC は関数呼び出しと異なり、goto による継続で遷移を行う。このため CbCの継続にはスタックフレームがなく引数を格納する場所がない。 +Context は初期化の際に引数格納用の Data Gear の領域を確保する。Code Gear が継 +続する際にはこの領域に引数の Data Gear を格納する。この領域に確保された Data Gear へのアクセスは Interface の情報から行われる。 \section{xv6 のCbCへの書き換え} - +xv6 は 2006 年に MIT のオペレーティングシステムコースで教育用の目的として開発されたオペレーティングシステムである。xv6 はプロセス、仮想メモリ、カーネルとユーザ の分離、割り込み、ファイルシステムなどの基本的な Unix の構造を持つにも関わらず、シンプルで学習しやすい。 +CbC は 継続を中心とした言語であるため状態遷移モデルに落とし込むことができる。 xv6 を CbC で書き換えることにより、OS の機能の保証が可能となる。 \subsection{書き換え} \section{結論}