view paper/GearsOS.tex @ 3:db8087751680

add chapter GearsOS
author tobaru
date Mon, 27 Jan 2020 23:08:31 +0900
parents
children a4a1a68d8811
line wrap: on
line source

\chapter{Geas OS}
  信頼性の保証と並列実行のサポートを目的として, Gears OS を開発している.
従来の OS が行うメモリ管理並列実行は Meta レベル(kernel space)で処理される.
ノーマルレベルからメタレベルの記述ができる GearsOS を開発している.

\section{Code Gear と Data Gear}
 Gears OS は Code Gear と Data Gear という単位でプログラムを記述する CbC を用いて実装する.
Code Gear は CbC における最も基本的な処理の単位である.
Code Gear 間で入力(Input Data Gear)と出力(Output Data Gear)を持ち,goto によって Code Gear から次の Code Gear へ遷移し,継続的に処理を行う.
関数呼び出しとは異なり,呼び出し元には戻らない.j
Code Gear 間の処理の流れを図 \ref{fig:codegear} に示す.


% 状態遷移ベースのプログラミング言語である.
% (継続的に処理を行う)ことで検証を容易に余す所なく行うことができる.
 \begin{figure}[ht]
 \begin{center}
  \includegraphics[width=160mm]{./fig/codegear}
 \end{center}
 \caption{Code Gear 間の継続}
 \label{fig:codegear}
\end{figure}


Data Gear は CbC におけるデータの基本的な単位である.Input Data Gear と Output Data Gear があり,Code Gear の遷移の際に Input Data Gear を受け取り,Output Data Gear を書き出す.
\par 


\section{Meta Code Gear と Meta Data Gear}
 CbC ではノーマルレベルの記述と別にメタレベルで記述することができる.メタレベルの記述によって User Space 側からメモリ管理を行えるようになる.
\par
メタ計算は Meta Code Gear と Meta Data Gear を用いる.この2つはノーマルレベルからメタレベルの変換する時に使われる.メタレベルの変換は Perl スクリプトで実装している.Gears OS での Meta Code Gear は Code Gear の直前, 直後に挿入され,メタ計算を実行する.
Code Gear 間の継続はノーマルレベルでは 図 \ref{fig:codegear} のように見えるが,メタレベルでの Code Gear は図 \ref{fig:meta_cg_dg } の下のように継続を行っている.

 \begin{figure}[ht]
 \begin{center}
  \includegraphics[width=160mm]{./fig/meta_cg_dg}
 \end{center}
 \caption{ノーマルレベルとメタレベルの継続の見え方}
 \label{fig:meta_cg_dg}
\end{figure}