Mercurial > hg > Papers > 2021 > okud-thesis
changeset 6:cdd2084de80c
fix4
author | Koki Okuda <e175701@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Sep 2020 12:56:21 +0900 |
parents | 7117bbdc79ec |
children | dcd6ccccf815 |
files | mid_thesis.pdf mid_thesis.tex |
diffstat | 2 files changed, 25 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/mid_thesis.tex Mon Sep 14 20:56:59 2020 +0900 +++ b/mid_thesis.tex Tue Sep 15 12:56:21 2020 +0900 @@ -21,9 +21,13 @@ \thispagestyle{fancy} \begin{multicols*}{2} \section{研究目的} -OSには信頼性が保証できることと拡張性があることが求められている。信頼性をノーマ ルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。現在,Geas OSをRaspberry Pi上で動かすためにはMacとシリアル通信で繋げなければ入力ができない。Raspberry Pi上のGears OSでキーボードやマウスを使えるようになれば利便性が向上する。また、Raspberry Pi以外のハードウェアで動かす時にも、PCを介して接続しなくて良くなる。本研究では、Rasberry Pi上でGears OS のDevice DriverをCbCで開発しすることが目的である。 +OSには信頼性が保証できることと拡張性があることが求められている。信頼性をノーマ ルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。 +現在、Geas OSをRaspberry Pi上で動かすためにはMacとシリアル通信で繋げなければ入力ができない。 +Raspberry Pi上のGears OSでキーボードやマウスを使えるようになれば利便性が向上する。 +また、Raspberry Pi以外のハードウェアで動かす時にも、PCを介して接続しなくて良くなる。 +本研究では、Rasberry Pi上でGears OS のDevice DriverをCbCで開発しすることが目的である。 \section{Device Driver} -OSは、接続された機器を直接理解することはできず、OSと接続機器の橋渡しの役割を担うのがDevice Driverである(図\ref{fig1})。Device DriverはOSごとに作成する必要がある。当研究室で開発されているGeas OSに対応するDevice Driver としてUSB接続機器が市場に多いことやRaspberry PIに接続端子があることからUSB Driverを開発する。USB Driverの構成は図\ref{fig2}のようになる。また、開発されたDevice Driverの信頼性の検証をしたいため、USBDriverのソースコードをCbmakCで書いていく。 +OSは、接続された機器を直接理解することはできず、OSと接続機器の橋渡しの役割を担うのがDevice Driverである(図\ref{fig1})。Device DriverはOSごとに作成する必要がある。当研究室で開発されているGeas OSに対応するDevice Driver としてUSB接続機器が市場に多いことやRaspberry Piに接続端子があることからUSB Driverを開発する。USB Driverの構成は図\ref{fig2}のようになる。また、開発されたDevice Driverの信頼性の検証をしたいため、USB DriverのソースコードをCbCで書いていく。 \begin{figure}[H] \begin{center} \includegraphics[width=75mm]{pic/fig1.pdf} @@ -38,13 +42,18 @@ \caption{USB Driverの構成} \label{fig2} \end{figure} +\cite{1,2} \section{Countinuation based C(CbC)} Countinuation based C(CbC)とは、当研究室で開発されているプログラミング言語である。 CbCは、Cからサブルーチンコールとループ制御構造を取り除き、継続を導入したCの下位言語である。 -CbC は Code Segment を基本的な処理単位とする。C の関数とは異なり返り値を持たないが、Code Segment の宣言はCの関数の構文と同じように行い、型に\_\_code を用いる。CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。 -現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。この goto による処理の遷移を継続と呼ぶ。 +CbC は Code Segment を基本的な処理単位とする。 +C の関数とは異なり返り値を持たないが、Code Segment の宣言はCの関数の構文と同じように行い、型に\_\_code を用いる。 +CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。 +現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。 +この goto による処理の遷移を継続と呼ぶ。 C と異なり、戻り値を持たない Code Segment ではスタックに値を積んで行く必要が無くスタックは変更されない。このようなスタックに値を積まない継続を軽量継続と呼ぶ。 この軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる。 +\cite{3,4} \section{Geas OS} Gears OSは当研究室で開発を行っているOSである。 @@ -53,10 +62,11 @@ Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 Code Gear はプログラムの処理そのものであり、任意の数の Data Gear を参照し、処理が完了すると任意の数の Data Gear に書き込む。 Code Gear は接続された Data Gear 以外にアクセスできない。 -Code Segment と同じように Code Gear から次の Code Gear への処理の移動は goto の後に Code Gear の名前と引数を指定する事で実 現できる。 +Code Segment と同じように Code Gear から次の Code Gear への処理の移動は goto の後に Code Gear の名前と引数を指定する事で実現できる。 Data Gearはデータそのものを表す。int や文字列などの Primitive Data Type を持っている。 -Gear の特 徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。 -これにより、実行時間、メモリ使用 量などを予測可能なものにすることができる。 +Gear の特徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。 +これにより、実行時間、メモリ使用量などを予測可能なものにすることができる。 +\cite{5} \section{xv6 on Raspberry Pi} @@ -64,10 +74,11 @@ xv6とは MIT のオペレーティングコースの教育目的で 2006 年に開発されたオペレーティングシステムである。 xv6 はオリジナルである v6 が非常に古い C 言語で書かれている為、 ANSI-C に書き換えられ x86 に再実装された。xv6 は read や write などの systemcall、プロセス、仮想メモリ、カーネルとユーザーの分離、割り込み、ファイルシステムなど Unix の基本的な構造を持っている。 xv6はRaspberry Piに移植することができ、ANSI-Cで書かれているxv6をCbCに書き直すことで、Raspberry Pi上でCbCを動かすことができる。 +\cite{6} \subsection{Cross Compile} Cross Compileとは、別のOSで実行可能なコードを生成するコンパイル手法である。 -Raspbian以外の以外のOS環境であるxv6であらかじめRaspberry Pi上でCbCが動くようにCross Compileを行い、そのコードをRaspberry Piに移すことで、実行できるようになる。 +Raspbian以外の以外のOS環境であるxv6であらかじめRaspberry Pi上でCbCが動くようにCross Compileを行い、そのコードをRaspberry Piに移すことで、実行できるようになる。\cite{7} \section{今後の予定} @@ -84,18 +95,13 @@ \begin{thebibliography}{9} - -\bibitem{1}桃原優,河野真治.Gears OS on Raspberry Pi(2018) -\bibitem{2}坂本昂弘,河野真治.xv6 kernel 上での CbC による interface の実装(2019) -\bibitem{3}桃原優,坂本昂弘,河野真治.継続を用いたx.v6 kernelの書き換え(2019) -\bibitem{4}宮城光希, 河野真治,Code Gear と Data Gear を持つ Gears OS の設計(2018) -\bibitem{5}自作OSの今と昔.https://knowledge.sakura.ad.jp/22042/ +\bibitem{1}福谷武司,小谷章二,高橋智.Linux による USB デバイスドライバ作成と制御インタフェース開発 +\bibitem{2}城戸英之,吉田泰彦,大原茂之.Linux用USBデバイスドライバの開発支援に関する一提案(情報処理学会第67回全国大会,2005) +\bibitem{3}坂本昂弘,河野真治.xv6 kernel 上での CbC による interface の実装(2019) +\bibitem{4}桃原優,坂本昂弘,河野真治.継続を用いたxv6 kernelの書き換え(2019) +\bibitem{5}宮城光希, 河野真治,Code Gear と Data Gear を持つ Gears OS の設計(2018) \bibitem{6}Russ Cox,Frans Kaashoek,Robert Morris. xv6 -\bibitem{7}福谷武司,小谷章二,高橋智.Linux による USB デバイスドライバ作成と制御インタフェース開発 -\bibitem{8}城戸英之,吉田泰彦,大原茂之.Linux用USBデバイスドライバの開発支援に関する一提案(情報処理学会第67回全国大会,2005) -\bibitem{9}デバイスドライバ開発入門.https://prev.net-newbie.com/linux/driver/index.html - - +\bibitem{7}桃原優,河野真治.Gears OS on Raspberry Pi(2018) \end{thebibliography} \end{multicols*}