view final_pre/finalPre.tex @ 10:86f6bb9be40a

add
author mir3636
date Wed, 15 Feb 2017 18:20:07 +0900
parents
children cc8ff782067c
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\usepackage{abstract}
\usepackage{url}
%\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\input{dummy.tex}
\renewcommand{\abstractname}{Abstract}
\begin{document}
\title{CbC 言語による OS 記述}
%\title{Supporting NAT in Screen Sharing System TreeVNC}
\author{135756F 氏名 {宮城}{光希} 指導教員 : 河野 真治}
\date{}
\twocolumn [
\maketitle
\begin{onecolabstract}
\end{onecolabstract}]
\thispagestyle{fancy} 

\section{メタ計算の重要性}
プログラムを記述する際、通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等、記述しなければならない処理が存在する。
これらの計算を Meta Computation と呼ぶ。

Meta Computation を通常の計算から切り離して記述するためには処理を細かく分割する必要がある。しかし、関数やクラスなどの単位は容易に分割できない。

そこで当研究室では Meta Computation を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。

Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。
Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いて Meta Computation を実現する。

Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。

CbCは軽量継続による遷移を行うので、継続前の Code Gear に戻ることはなく、状態遷移ベースのプログラミングに適している。

また、当研究室で開発している Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。

本研究では CbC を用いての Gears OS の実装と CbC における ユーザーの関知しない Meta Computationの自動生成を行なう。

%\begin{figure}[htbp]
%    \begin{center}
%        \includegraphics[width=50mm]{./pic/treeVnc.pdf}
%    \end{center}
%    \caption{構成される木構造}
%    \label{fig:tree}
%\end{figure}

\section{Continuation based C (CbC)}
CbC は 処理を Code Gear とした単位を用いて記述するプログラミング言語である。
Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。
Code Gear から次の Code Gear へと goto による継続で遷移で処理を行い、引数として出力を与える。
図\ref{fig:cs}は Code Gear 間の処理の流れを表している。

\begin{figure}[htpb]
 \begin{center}
  \scalebox{0.5}{\includegraphics{pic/codesegment.pdf}}
 \end{center}
 \caption{goto による code gear 間の継続}
 \label{fig:cs}
\end{figure}

\section{Gears OS}
Gears OS では並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。
Data Gear はデータの単位であり、int や文字列などの Primitive Type を持っている。
Code Gear は 任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。
また、接続された Data Gear 以外には参照を行わない。
処理やデータの構造が Code Gear、Data Gear に閉じているため、これにより実行時間、メモリ使用量などを予測可能なものにすることが可能になる。

Gears OS では Meta Computation を Meta Code Gear、Meta Data Gear で表現する。
Meta Code Gear は通常のCode Gear の直後に遷移され、Meta Computation を実行する。

CbC は Code Gear を処理の単位として用いたプログラミング言語であるため、Gears OS の Code Gear を記述するのに適している。

図\ref{fig:gearsos} に Gears OS の構成図を示す。

\begin{figure}[htpb]
    \begin{center}
        \scalebox{0.2}{\includegraphics{pic/gearsos.pdf}}
    \end{center}
    \caption{Gears OS の構成図}
    \label{fig:gearsos}
\end{figure}





\nocite{*}
\bibliographystyle{junsrt}
\bibliography{reference}
\end{document}