Mercurial > hg > Papers > 2020 > menikon-thesis
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 で定義されている必要がある。