view final_main/chapter3.tex @ 24:5e0c566bba54

fix
author menikon
date Sat, 15 Feb 2020 17:10:19 +0900
parents 676277795520
children
line wrap: on
line source

\chapter{GearsOS}
%\label{chap:poordirection}
\section{GearsOS の概要}
Gears OS は CbC によって記述されており、CodeGear と DataGear の単位を用いて開発されている OS である。
Gears OS は 一連の実行が行われる際に使用される CodeGear と DataGear を全て持つ Context と呼ばれるものを持っている。Gears OS は CodeGear 間の継続などの際、常に context を持ち歩いており CodeGear と DataGear の参照が必要になる場合、この Context を通して参照される。

\section{Context}
Context とは一連の実行が行われる際に使用される CodeGear と DataGear の集合である。 従来のスレッドやプロセスに対応する。Context は接続可能な CodeGear、 Data Gear のリスト、 Data Gear を確保するメモリ空間、 実行される Task への Code Gear 等を持っている。 CodeGear が 別の CodeGear に遷移する際、 必ず context を参照し enum
で定義された CodeGear の番号を指定し遷移する。ノーマルレベルで見た際の CodeGear、DataGear および context の関係を以下の図\ref{fig:cbc} に簡潔に示す。
%Context は Meta Data Gear であるため、Meta Code Gear を介してアクセスする。
%\vspace{10mm}
\begin{figure}[ht]
     \begin{center}
     \includegraphics[width=100mm]{fig/context.pdf}
     \end{center}
     \caption{CodeGear、DataGear、contxtの関係図}
    \label{fig:cbc}
\end{figure}

\section{Inetrface}
Interface は Gears OS のモジュール化の仕組みである。 Interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。呼び出される Code Gear の引数となる Data Gear はここで全て定義される。Interface を定義することで複数の実装を持つことができる。
この Interface は、 Java の Interface や Haskell の型クラスに対応し、導入することで仕様と実装に分けて記述することが出来る。
図\ref{fig:interface} は Stack の Interface とその実装を表したものである。

\vspace{10mm}
\begin{figure}[ht]
     \begin{center}
     \includegraphics[width=100mm]{fig/interface.pdf}
     \end{center}
     \caption{Stack の Interface とその実装}
    \label{fig:interface}
\end{figure}

Interface の定義で示されている CodeGear と実装側で実装されている CodeGear は対応しており、実装側で実装する CodeGear は必ず Interface で定義されている必要がある。