# HG changeset patch # User menikon # Date 1581156035 -32400 # Node ID dca5e4f9fceb07da5e9b75a2687e6c8b5637d404 # Parent 80f76a34c4f7d95983b04b4295be9f53ff70cae7 fix ref diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/chapter2.tex --- a/final_main/chapter2.tex Fri Feb 07 21:30:47 2020 +0900 +++ b/final_main/chapter2.tex Sat Feb 08 19:00:35 2020 +0900 @@ -11,7 +11,7 @@ \label{fig:codegear} \end{figure} -現在 CbC は C コンパイラであるGCC\cite{gcc}及びLLVM\cite{llvm}をバックエンドとした clang 上で実装されている. +現在 CbC は C コンパイラであるGCC\cite{gcc} \cite{nobu-prosym}及びLLVM\cite{llvm} \cite{kaito-lola}をバックエンドとした clang 上で実装されている. 本研究ではこのプログラミング言語を用いて xv6 の Filesystemを書き換える. \section{CodeGear} CodeGear は CbCにおける基本的な処理単位である. 以下のソースコード\ref{cbcexample}は CodeGear の継続の例である. @@ -32,8 +32,15 @@ この CbC における CodeGear 間の継続にスタックが使用されない性質は信頼性の高い OS の開発に適している. \section{DataGear} +DataGear は CbCにおけるデータの基本的な単位である. CodeGear は Input DataGear, Output DataGear を引数に持ち,図\ref{fig:DataGear}で示したように遷移する際に任意のInput DataGearを参照し, Output DataGearを書き出す. + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=100mm]{fig/DataGear.pdf} + \end{center} + \caption{CodeGearとDataGear} + \label{fig:DataGear} +\end{figure} - - diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/chapter3.tex --- a/final_main/chapter3.tex Fri Feb 07 21:30:47 2020 +0900 +++ b/final_main/chapter3.tex Sat Feb 08 19:00:35 2020 +0900 @@ -18,7 +18,7 @@ \section{inetrface} Interface は Gears OS のモジュール化の仕組みである. Interface は呼び出しの引数になる Data Gear の集合であり,そこで呼び出される Code Gear のエントリである.呼び出される Code Gear の引数となる Data Gear はここで全て定義される. Interface を定義することで複数の実装を持つことができる. この Interface は, Java の Interface や Haskell の型クラスに対応し, 導入することで仕様と実装に分けて記述することが出来る. -図\ref{fig:interface} は 先行研究\cite{GearsOS}において作成された Stack の Interface とその実装を表したものである. +図\ref{fig:interface} は Stack の Interface とその実装を表したものである. \vspace{10mm} \begin{figure}[ht] diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/chapter4.tex --- a/final_main/chapter4.tex Fri Feb 07 21:30:47 2020 +0900 +++ b/final_main/chapter4.tex Sat Feb 08 19:00:35 2020 +0900 @@ -1,5 +1,13 @@ \chapter{xv6} +\section{xv6 とは} xv6 \cite{xv6} とは MIT のオペレーティングコースの教育目的で2006年に開発されたオペレーティングシステムである. xv6 はオリジナルである v6 が非常に古い C 言語で書かれてい る為, ANSI-C に書き換えられ x86 に再実装された. xv6 は read や write などの systemcall, プロセス, 仮想メモリ, カーネルとユーザーの分離, 割り込み, ファイルシステムなど Unix の基本的な構造を持っている. +本研究で使われているのは ARM\cite{arm} 上で動作する Raspberry Pi 用に改良されたxv6を使用する. + + +%\section{FileSystem} +%どんなものか書く + +%processについて(軽く) \section{xv6 のFileSystem構造} xv6 の FileSystem の構造を以下の図\ref{fig:filesystem}に示す. @@ -13,11 +21,18 @@ \label{fig:filesystem} \end{figure} -\section{boot sector} +\begin{itemize} + \item boot sector + \item super block + \item inode + \item +\end{itemize} -\section{super block} +\section{FilleSystem の API} %関数や構造体などを解説しそのまま利用されているところをかく + -\section{inode} + + \section{block bitmap} diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/main.out --- a/final_main/main.out Fri Feb 07 21:30:47 2020 +0900 +++ b/final_main/main.out Sat Feb 08 19:00:35 2020 +0900 @@ -8,15 +8,14 @@ \BOOKMARK [1][-]{section.3.1}{3.1 Context}{chapter.3}% 8 \BOOKMARK [1][-]{section.3.2}{3.2 inetrface}{chapter.3}% 9 \BOOKMARK [0][-]{chapter.4}{第4章 xv6}{}% 10 -\BOOKMARK [1][-]{section.4.1}{4.1 xv6 のFileSystem構造}{chapter.4}% 11 -\BOOKMARK [1][-]{section.4.2}{4.2 boot sector}{chapter.4}% 12 -\BOOKMARK [1][-]{section.4.3}{4.3 super block}{chapter.4}% 13 -\BOOKMARK [1][-]{section.4.4}{4.4 inode}{chapter.4}% 14 -\BOOKMARK [1][-]{section.4.5}{4.5 block bitmap}{chapter.4}% 15 -\BOOKMARK [1][-]{section.4.6}{4.6 data blocks}{chapter.4}% 16 -\BOOKMARK [1][-]{section.4.7}{4.7 log}{chapter.4}% 17 -\BOOKMARK [0][-]{chapter.5}{第5章 CbCによるFileSystemの書き換え}{}% 18 -\BOOKMARK [1][-]{section.5.1}{5.1 書き換え方針}{chapter.5}% 19 -\BOOKMARK [1][-]{section.5.2}{5.2 FileSystemのInterface}{chapter.5}% 20 -\BOOKMARK [1][-]{section.5.3}{5.3 CbC による FileSystem の書き換え}{chapter.5}% 21 -\BOOKMARK [0][-]{chapter.6}{第6章 まとめと今後の課題}{}% 22 +\BOOKMARK [1][-]{section.4.1}{4.1 xv6 とは}{chapter.4}% 11 +\BOOKMARK [1][-]{section.4.2}{4.2 xv6 のFileSystem構造}{chapter.4}% 12 +\BOOKMARK [1][-]{section.4.3}{4.3 FilleSystem の API}{chapter.4}% 13 +\BOOKMARK [1][-]{section.4.4}{4.4 block bitmap}{chapter.4}% 14 +\BOOKMARK [1][-]{section.4.5}{4.5 data blocks}{chapter.4}% 15 +\BOOKMARK [1][-]{section.4.6}{4.6 log}{chapter.4}% 16 +\BOOKMARK [0][-]{chapter.5}{第5章 CbCによるFileSystemの書き換え}{}% 17 +\BOOKMARK [1][-]{section.5.1}{5.1 書き換え方針}{chapter.5}% 18 +\BOOKMARK [1][-]{section.5.2}{5.2 FileSystemのInterface}{chapter.5}% 19 +\BOOKMARK [1][-]{section.5.3}{5.3 CbC による FileSystem の書き換え}{chapter.5}% 20 +\BOOKMARK [0][-]{chapter.6}{第6章 まとめと今後の課題}{}% 21 diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/main.pdf Binary file final_main/main.pdf has changed diff -r 80f76a34c4f7 -r dca5e4f9fceb final_main/reference.bib --- a/final_main/reference.bib Fri Feb 07 21:30:47 2020 +0900 +++ b/final_main/reference.bib Sat Feb 08 19:00:35 2020 +0900 @@ -6,10 +6,18 @@ year = 2015 } +@manual{arm, +author = "{ARM Architecture Reference Manual}", +title = "{http://infocenter.arm.com/help/topic/com.arm.\\doc.subset.architecture.reference/index.html}" +} + + @misc{xv6, -title = "{Xv6, a simple Unix-like teaching operating system}", -note = "(2020年2月7日閲覧)", -howpublished = {\url{https://pdos.csail.mit.edu/6.828/2019/xv6.html}}, + title={Xv6, a simple Unix-like teaching operating system}, + author={Cox, Russ and Kaashoek, M Frans and Morris, Robert}, + journal={2013-09-05]. http://pdos. csail. mit. edu/6.828/2012/xv6. html}, + year={2011}, + note = "(2020年2月7日閲覧)" } @InProceedings{llvm, @@ -26,6 +34,26 @@ title ="{http://gcc.gnu.org/onlinedocs/gccint/}", } +@article{kaito-lola, + author = "Kaito, Tokumori and Shinji, Kono", + title = "Implementing Continuation based language in LLVM and Clang", + journal = "LOLA 2015, Kyoto", + month = "July", + year = 2015 + +} + +@inproceedings{nobu-prosym, + author = "大城信康 and 河野真治", + title = "Continuation based C の GCC4.6 上の実装について", + booktitle = "第53回プログラミング・シンポジウム予稿集", + year = "2012", + volume = "2012", + pages = "69--78", + month = "jan" + +} + @article{GearsOS, author = "伊波立樹 and 河野真治", title = "Gears OS の並列処理",