Mercurial > hg > Papers > 2019 > menikon-midterm
diff midterm.tex @ 0:61fe443393a5
first commit
author | e165723 <e165723@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Oct 2019 17:24:29 +0900 |
parents | |
children | f0db7d006b4f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/midterm.tex Tue Oct 15 17:24:29 2019 +0900 @@ -0,0 +1,91 @@ +\documentclass[twocolumn,twoside,9.5pt]{jarticle} +\usepackage[dvipdfmx]{graphicx} +\usepackage{picins} +\usepackage{fancyhdr} +\usepackage{listings} +\usepackage{caption} +\usepackage{latexsym} + +%\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} + +\begin{document} +\title{継続を用いたxv6 kernelの書き換え} +\author{学籍番号 : 165723C 氏名 : 坂本昂弘 {}{} 指導教員 : 河野真治} +\date{} +\maketitle +\thispagestyle{fancy} + +\section{xv6を継続で書き換える意味} +現代の OS では拡張性と信頼性を両立させることが要求されている. +信頼性をノーマルレベルの計算に対して保証し,拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である. + +Gears OS は Continuation based C (CbC)\cite{cbc} によってアプリケーションと OS そのものを記述する. +OS の下ではプログラムの記述は通常の処理の他に,メモリ管理,スレッドの待ち合わせやネットワークの管理, +エラーハンドリング等の記述しなければならない処理が存在する. +これらの計算をメタ計算と呼ぶ. +メタ計算を通常の計算から切り離して記述するために,Code Gear,Data Gear という単位を提案している. +CbC はこの Code Gear と Data Gear の単位でプログラムを記述する. +% OS は時代とともに複雑さが増し,OS の信頼性を保証することは難しい. + + +Code Gear は goto による継続で処理を表すことができる. +これにより,状態遷移による OS の記述が可能となり,複雑な OS のモデル検査を可能とする. +また,CbC は 定理証明支援系 Agda に置き換えることができるように構築されている. + +これらを用いて OS の信頼性を保証したい. +CbCの有効性を示すために,基本的な機能を揃えた OS である xv6 を CbC で書き換える. +これにより,OS の個々のシステムコールの持つ状態を明確にすることができると考えている. + +CbC でシステムやアプリケーションを記述するためには,Code Gear と Data Gear を柔軟に再利用する必要があり, +機能を接続するAPIと実装の分離が可能であることが望ましい. +CbC では形式化されたモジュールシステムが提供されている. +xv6 の CbC 書き換えでは, このモジュールシステムを用いる. + +書き換えはまだ部分的であるが, 既存の部分と両立するように設計されている. 従って, xv6 の基本的な +動作には変更はない. 実際に実行速度などはほとんど差がない. 逆に言えばオーバヘッドが存在しないことが確認できた. + + +\section{Continuation based C} +CbC は処理を Code Gear という単位を用いて記述するプログラミ +ング言語である. Code Gear 間では軽量継続 (goto 文) による +遷移を行うので,継続前の Code Gear に戻 ることはない.この記述方法は +図1のように状態 +遷移ベースのプログラミングに適している. + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{pic/codesegment.pdf} + \end{center} + \caption{goto による code gear 間の継続} + \label{fig:cbc} +\end{figure} + +現在CbCはCコンパイラであるGCC\cite{gcc}及びLLVM\cite{llvm}をバックエンドとしたclang +% MicroCコンパイラ +上で実装されている.今回 xv6 のkernelの部分をこの CbC を 用いて書き換える. + +\section{section3} + +\section{今後の課題} + +%\begin{thebibliography}{9} + +\nocite{*} +%\bibliographystyle{ipsjunsrt} +\bibliography{reference} + +%\end{thebibliography} +\end{document} \ No newline at end of file