comparison midterm.tex @ 3:f0db7d006b4f

add hgignore
author e165723 <e165723@ie.u-ryukyu.ac.jp>
date Sat, 19 Oct 2019 14:48:19 +0900
parents 61fe443393a5
children afaa3a0ba58d
comparison
equal deleted inserted replaced
2:2e8286b5f43b 3:f0db7d006b4f
3 \usepackage{picins} 3 \usepackage{picins}
4 \usepackage{fancyhdr} 4 \usepackage{fancyhdr}
5 \usepackage{listings} 5 \usepackage{listings}
6 \usepackage{caption} 6 \usepackage{caption}
7 \usepackage{latexsym} 7 \usepackage{latexsym}
8 \usepackage{url}
9 \usepackage{abstract}
10 \usepackage{float}
8 11
9 %\pagestyle{fancy} 12 %\pagestyle{fancy}
10 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿} 13 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿}
11 \rhead{} 14 \rhead{}
12 \cfoot{} 15 \cfoot{}
19 \setlength{\textwidth}{181mm} 22 \setlength{\textwidth}{181mm}
20 \setlength{\textheight}{261mm} 23 \setlength{\textheight}{261mm}
21 \setlength{\footskip}{0mm} 24 \setlength{\footskip}{0mm}
22 \pagestyle{empty} 25 \pagestyle{empty}
23 26
27 \usepackage{comment}
28 \usepackage{listings}
29 \lstset{
30 language=C,
31 tabsize=2,
32 frame=single,
33 basicstyle={\ttfamily\footnotesize}, %
34 identifierstyle={\footnotesize}, %
35 commentstyle={\footnotesize\itshape}, %
36 keywordstyle={\footnotesize\bfseries}, %
37 ndkeywordstyle={\footnotesize}, %
38 stringstyle={\footnotesize\ttfamily},
39 breaklines=true,
40 captionpos=b,
41 columns=[l]{fullflexible}, %
42 xrightmargin=0zw, %
43 xleftmargin=1zw, %
44 aboveskip=1zw,
45 numberstyle={\scriptsize}, %
46 stepnumber=1,
47 numbersep=0.5zw, %
48 lineskip=-0.5ex,
49 }
50 \renewcommand{\lstlistingname}{Code}
51 \usepackage{caption}
52 \captionsetup[lstlisting]{font={small, tt}}
53
54 \renewcommand{\abstractname}{概要}
55
24 \begin{document} 56 \begin{document}
25 \title{継続を用いたxv6 kernelの書き換え} 57 \title{xv6 kernel上でのCbCによるinterfaceの実装\\CbC interface implementation in xv6 kernel}
26 \author{学籍番号 : 165723C 氏名 : 坂本昂弘 {}{} 指導教員 : 河野真治} 58 \author{学籍番号 : 165723C 氏名 : 坂本昂弘 {}{} 指導教員 : 河野真治}
27 \date{} 59 \date{}
28 \maketitle 60 \maketitle
29 \thispagestyle{fancy} 61 \thispagestyle{fancy}
30 62
31 \section{xv6を継続で書き換える意味} 63 \section{研究目的}
32 現代の OS では拡張性と信頼性を両立させることが要求されている.
33 信頼性をノーマルレベルの計算に対して保証し,拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である.
34
35 Gears OS は Continuation based C (CbC)\cite{cbc} によってアプリケーションと OS そのものを記述する.
36 OS の下ではプログラムの記述は通常の処理の他に,メモリ管理,スレッドの待ち合わせやネットワークの管理,
37 エラーハンドリング等の記述しなければならない処理が存在する.
38 これらの計算をメタ計算と呼ぶ.
39 メタ計算を通常の計算から切り離して記述するために,Code Gear,Data Gear という単位を提案している.
40 CbC はこの Code Gear と Data Gear の単位でプログラムを記述する.
41 % OS は時代とともに複雑さが増し,OS の信頼性を保証することは難しい.
42
43
44 Code Gear は goto による継続で処理を表すことができる.
45 これにより,状態遷移による OS の記述が可能となり,複雑な OS のモデル検査を可能とする.
46 また,CbC は 定理証明支援系 Agda に置き換えることができるように構築されている.
47
48 これらを用いて OS の信頼性を保証したい.
49 CbCの有効性を示すために,基本的な機能を揃えた OS である xv6 を CbC で書き換える.
50 これにより,OS の個々のシステムコールの持つ状態を明確にすることができると考えている.
51
52 CbC でシステムやアプリケーションを記述するためには,Code Gear と Data Gear を柔軟に再利用する必要があり,
53 機能を接続するAPIと実装の分離が可能であることが望ましい.
54 CbC では形式化されたモジュールシステムが提供されている.
55 xv6 の CbC 書き換えでは, このモジュールシステムを用いる.
56
57 書き換えはまだ部分的であるが, 既存の部分と両立するように設計されている. 従って, xv6 の基本的な
58 動作には変更はない. 実際に実行速度などはほとんど差がない. 逆に言えばオーバヘッドが存在しないことが確認できた.
59
60 64
61 \section{Continuation based C} 65 \section{Continuation based C}
62 CbC は処理を Code Gear という単位を用いて記述するプログラミ 66 xv6 kernel上でinterfaceを実装する際,当研究室で開発されたプログラミング言語Continuation based C (CbC)を用いる.
63 ング言語である. Code Gear 間では軽量継続 (goto 文) による 67 CbCは基本的な処理単位をCodeGearとして定義し,CodeGea間で遷移するようにプログラムを記述するC言語と互換性のあるプログラミング言語である.
64 遷移を行うので,継続前の Code Gear に戻 ることはない.この記述方法は
65 図1のように状態
66 遷移ベースのプログラミングに適している.
67 68
68 \begin{figure}[ht] 69 %\lstinputlisting[label=cbcexample, caption=cbc\_example.cbc]{src/cbc_example.cbc}
69 \begin{center}
70 \includegraphics[width=70mm]{pic/codesegment.pdf}
71 \end{center}
72 \caption{goto による code gear 間の継続}
73 \label{fig:cbc}
74 \end{figure}
75 70
76 現在CbCはCコンパイラであるGCC\cite{gcc}及びLLVM\cite{llvm}をバックエンドとしたclang 71 \section{xv6}
77 % MicroCコンパイラ 72 xv6とはMITのオペレーティングコースの教育目的で2006年に開発されたオペレーティングシステムである.
78 上で実装されている.今回 xv6 のkernelの部分をこの CbC を 用いて書き換える. 73 \\xv6はシンプルでUnixに似た構造を持っている.
79 74
80 \section{section3} 75 \section{xv6のinterface}
81 76
82 \section{今後の課題} 77 \section{今後の課題}
83 78
84 %\begin{thebibliography}{9} 79 %\begin{thebibliography}{9}
85 80
86 \nocite{*} 81 \nocite{*}
87 %\bibliographystyle{ipsjunsrt} 82 \bibliographystyle{ipsjunsrt}
88 \bibliography{reference} 83 \bibliography{reference}
89 84
90 %\end{thebibliography} 85 %\end{thebibliography}
91 \end{document} 86 \end{document}