Mercurial > hg > Papers > 2021 > ikki-sigos
changeset 4:48b77cf5b5cd
add images & codes etc
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 30 Apr 2021 02:08:20 +0900 |
parents | acd9fc30859e |
children | 16305e9540cc |
files | Paper/codes/test.c Paper/images/cgdg.pdf Paper/images/meta-cg-dg.pdf Paper/paper.pdf Paper/paper.tex |
diffstat | 5 files changed, 90 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/codes/test.c Fri Apr 30 02:08:20 2021 +0900 @@ -0,0 +1,15 @@ +#include <stdio.h> + +__code CG2(){ + int i = 10; + printf("i = %d\n", i); +} + +__code CG1(){ + printf("Hello\n"); + goto CG2(); +} + +int main(){ + goto CG1(); +}
--- a/Paper/paper.tex Thu Apr 29 22:14:57 2021 +0900 +++ b/Paper/paper.tex Fri Apr 30 02:08:20 2021 +0900 @@ -11,8 +11,32 @@ -\usepackage[dvips]{graphicx} +\usepackage[dvips, dvipdfmx]{graphicx} \usepackage{latexsym} +\usepackage{listings} +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\tt\footnotesize}, % + identifierstyle={\footnotesize}, % + commentstyle={\footnotesize\itshape}, % + keywordstyle={\footnotesize\ttfamily}, % + ndkeywordstyle={\footnotesize\ttfamily}, % + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible}, % + xrightmargin=0zw, % + xleftmargin=1zw, % + aboveskip=1zw, + numberstyle={\scriptsize}, % + stepnumber=1, + numbersep=0.5zw, % + lineskip=-0.5ex, +} +\usepackage{caption} + \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline} \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\} @@ -22,7 +46,7 @@ %\setcounter{巻数}{59}%vol59=2018 %\setcounter{号数}{10} %\setcounter{page}{1} - +\renewcommand{\lstlistingname}{Code} \begin{document} @@ -38,8 +62,8 @@ \paffiliate{JU}{琉球大学理工学研究科情報工学専攻\\ Johoshori Uniersity} -\author{一木貴裕}{Ikki Takahiro}{Presently with Information Engineering, University of the Ryukyus.} -\author{河野 真治}{Kono Shinzi}{Presently with Information Engineering, University of the Ryukyus.} +\author{一木貴裕}{Ikki Takahiro}{KIE}[ikki-tkhr@cr.ie.u-ryukyu.ac.jp] +\author{河野 真治}{Kono Shinzi}{IE}[kono@ie.u-ryukyu.ac.jp] \begin{abstract} 本研究室ではgearというプログラミング概念を持つ, 分散フレームワークChristieを開発している. Christieはノード同士がDatagearと呼ばれる変数データを送信しあうことにより, 簡潔に分散プログラムの記述を行うことができる. @@ -73,59 +97,65 @@ GearsOSは現在開発途上であるため, 現在は言語フレームワークとしてしか動作しない。OSとして起動するためにこれから実装が必要な機能が多く存在しており, その中の一つとして分散ファイルシステムが挙げられる. GearsOSの分散ファイルシステムを構成するために、当研究室が開発している分散フレームワークChristieの仕組みを用いようと考えた. -ChrsitieはGearsOSのもつGearという概念とよく似た, 別のGearというプログラミング概念を持っており, DataGearと呼ばれる変数データを接続されたノード同士が送信しあうことで分散処理を簡潔に記述することができる. -また, ChrisiteはTopologyManagerと呼ばれる機能を持っており、任意の形でノード同士の配線を行いTopologyを形成する機能を持っている。 +ChrsitieはGearsOSのもつGearという概念とよく似た, 別のGearというプログラミング概念を持っており, DataGearと呼ばれる変数データを接続されたノード同士が送信しあうことで分散処理を簡潔に記述することができる. DataGearは指定された型と名前を持つkeyに対応しており, プログラムが必要なkeyにデータが揃ってから初めてプログラムが処理される. +また, ChrisiteはTopologyManagerと呼ばれる機能を持っており, 任意の形でノード同士の配線を行いTopologyを形成する機能を持っている. %2 -\section{投稿の流れ} +\section{現代のファイルシステムについて} %2.1 -\subsection{準備} +\section{Continuation based C} +GearsOSはC言語の下位言語であるContinuation based Cを用いて記述されている. CbCは関数呼び出しでなく, 継続を導入しており, スタック領域を用いずjmp命令でコード間を移動することにより軽量な継続を実現している. CbCではこの継続を用いてfor文などのループの代わりに再起呼び出しを行う. 実際のOSやアプリケーションを記述する際にはGCCまたはLLVM/clangのCbC実装を用いる. + +CbCでは関数の代わりにCodeGear(以下CG)という単位でプログラミングを行う. CodeGearは\texttt{\_\_code}で宣言を行い, 各CodeGearはDataGearと呼ばれる変数データを入力として受け取り, その結果を別のDataGearに書き込む. 特に入力のDataGeatをInputDataGear, 出力されるDataGearを OutputDataGearと呼ぶ. CodeGearとDataGearの関係図を図\ref{fig:cgdg}に示す. +CodeGearは関数呼び出しのスタックを持たないため, 一度CodeGearを遷移すると元の処理に戻ってくることができない. + +CbCコードの例をソースコード\ref{label=src:cbc_example}に示す.%refを使う + +\begin{figure}[tb] + \begin{center} + \includegraphics[width=80mm]{images/cgdg.pdf} + \end{center} + \caption{CodeGearと入出力の関係図} + \label{fig:cgdg} +\end{figure} -情報処理学会論文誌ジャーナルの\LaTeX スタイルファイルを含む論文執筆キットは -\begin{quote} -\small -\|http://www.ipsj.or.jp/jip/submit/style.html| -\end{quote} -からダウンロードすることができる.論文執筆キットは以下のファイルを含んで -いる. -\begin{enumerate} -\item \|ipsj.cls |: 最終原稿用スタイルファイル -\item \|ipsjdraft.sty |: 投稿用スタイル(査読用) -\item \|ipsjpref.sty |: 序文用スタイル -\item \|jsample.tex |: 本稿のソースファイル -\item \|esample.tex |: 英文サンプルのソースファイル -\item \|ipsjsort.bst |: jBibTEX スタイル(著者名順) -\item \|ipsjunsrt.bst |: jBibTEX スタイル(出現順) -\item \|bibsample.bib |: 文献リストのサンプル -\item \|ebibsample.bib|: 英文文献リストのサンプル -\item \|tech-jsample.tex:| 研究報告(和文)のサンプル -\item \|tech-esample.tex:| 研究報告(英文)のサンプル -\end{enumerate} -実行環境としては\LaTeXe を前提としているので,準備されたい. +\begin{lstlisting}[frame=lrbt,label=src:cbc_example,caption={CbCの例題}] +void syscall(void) +#include <stdio.h> +__code CG2(){ + int i = 10; + printf("i = %d\n", i); +} + +__code CG1(){ + printf("Hello\n"); + goto CG2(); +} + +int main(){ + goto CG1(); +} + +\end{lstlisting} - +\section{CbCを用いたOSの記述} +CodeGearの遷移はノーマルレベルから見ると単純にCodeGearがDataGearをInput, Outputをのみ繰り返し, コードブロックを移動しているように見えるが, 実際にはCodeGearからCodeGearへの遷移にはデータの整合性の確認などのメタ計算が必要となる. - + +\ref{fig:meta-cgdg} -%2.2 -\subsection{原稿の作成と投稿} - -本稿に従って用意した投稿用原稿の\LaTeX ソースからpdfファイルを作成し, -Adobeのpdf readerで読めることを確認した後, -\begin{quote} -\small -\|https://ipsj1.i-product.biz/ipsjsig/**| -\end{quote} -(**部分は研究会の略称,DBS等)の研究会投稿システムにて,指示にし従い投稿する. - - - - +\begin{figure}[tb] + \begin{center} + \includegraphics[width=80mm]{images/meta-cg-dg.pdf} + \end{center} + \caption{CodeGearとMetaCodeGearの関係図} + \label{fig:meta-cgdg} +\end{figure}