annotate mid_thesis.tex @ 8:35f83c3ab381

img add
author Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
date Mon, 28 Sep 2020 17:24:57 +0900
parents cdd2084de80c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1 \documentclass[9.5pt]{jarticle}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2 \usepackage[dvips,dvipdfmx]{graphicx}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 \usepackage{multicol}
0
okud
parents:
diff changeset
4 \usepackage{picins}
okud
parents:
diff changeset
5 \usepackage{fancyhdr}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 \usepackage{here}
0
okud
parents:
diff changeset
7 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部工学科知能情報コース 中間発表予稿}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 \usepackage[top=2cm, bottom=2cm, left=1cm, right=1cm]{geometry}
0
okud
parents:
diff changeset
9
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
10
0
okud
parents:
diff changeset
11
okud
parents:
diff changeset
12 \begin{document}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
13 \title{Gears OSのデバイスドライバの開発\\Gears OS device driver development}
0
okud
parents:
diff changeset
14 \author{学籍番号:175701G 氏名: 奥田光希 {}{} 指導教員 : 河野真治}
okud
parents:
diff changeset
15 \date{}
okud
parents:
diff changeset
16 \maketitle
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
17 \begin{abstract}
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
18 An OS have to be reliable and extensible. We are designing Gears OS with the goal of guaranteeing reliability for normal level calculations and scalability for meta-level calculations.Currently, It need to connect a Mac to run Geas OS on a Raspberry Pi via serial communication to get input.Being able to use a keyboard and mouse on the Gears OS on the Raspberry Pi will improve convenience. It would also eliminate the need to connect to hardware other than the Raspberry Pi through a PC.The purpose of this study is to develop a Gears OS Device Driver in CbC on a Rasberry Pi.
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
19 \end{abstract}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
20
0
okud
parents:
diff changeset
21 \thispagestyle{fancy}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22 \begin{multicols*}{2}
0
okud
parents:
diff changeset
23 \section{研究目的}
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
24 OSには信頼性が保証できることと拡張性があることが求められている。信頼性をノーマ ルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
25 現在、Geas OSをRaspberry Pi上で動かすためにはMacとシリアル通信で繋げなければ入力ができない。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
26 Raspberry Pi上のGears OSでキーボードやマウスを使えるようになれば利便性が向上する。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
27 また、Raspberry Pi以外のハードウェアで動かす時にも、PCを介して接続しなくて良くなる。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
28 本研究では、Rasberry Pi上でGears OS のDevice DriverをCbCで開発しすることが目的である。
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29 \section{Device Driver}
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
30 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で書いていく。
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
31 \begin{figure}[H]
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
32 \begin{center}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
33 \includegraphics[width=75mm]{pic/fig1.pdf}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
34 \end{center}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
35 \caption{Device Driverの役割}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36 \label{fig1}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 \end{figure}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38 \begin{figure}[H]
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
39 \begin{center}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
40 \includegraphics[width=75mm]{pic/fig2.pdf}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
41 \end{center}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 \caption{USB Driverの構成}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43 \label{fig2}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 \end{figure}
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
45 \cite{1,2}
0
okud
parents:
diff changeset
46 \section{Countinuation based C(CbC)}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
47 Countinuation based C(CbC)とは、当研究室で開発されているプログラミング言語である。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
48 CbCは、Cからサブルーチンコールとループ制御構造を取り除き、継続を導入したCの下位言語である。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
49 CbC は Code Segment を基本的な処理単位とする。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
50 C の関数とは異なり返り値を持たないが、Code Segment の宣言はCの関数の構文と同じように行い、型に\_\_code を用いる。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
51 CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
52 現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
53 この goto による処理の遷移を継続と呼ぶ。
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
54 C と異なり、戻り値を持たない Code Segment ではスタックに値を積んで行く必要が無くスタックは変更されない。このようなスタックに値を積まない継続を軽量継続と呼ぶ。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
55 この軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
56 \cite{3,4}
0
okud
parents:
diff changeset
57
okud
parents:
diff changeset
58 \section{Geas OS}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
59 Gears OSは当研究室で開発を行っているOSである。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
60 Gears OSの実装にはCbCを用いている。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
61 Gears OS では、プログラムの単位として Gear を用いる。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
62 Gear は並列実行の単位、データの分割、Gear 間の接続等になる。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
63 Code Gear はプログラムの処理そのものであり、任意の数の Data Gear を参照し、処理が完了すると任意の数の Data Gear に書き込む。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
64 Code Gear は接続された Data Gear 以外にアクセスできない。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
65 Code Segment と同じように Code Gear から次の Code Gear への処理の移動は goto の後に Code Gear の名前と引数を指定する事で実現できる。
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
66 Data Gearはデータそのものを表す。int や文字列などの Primitive Data Type を持っている。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
67 Gear の特徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
68 これにより、実行時間、メモリ使用量などを予測可能なものにすることができる。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
69 \cite{5}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
70
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
71 \section{xv6 on Raspberry Pi}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
72
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
73 \subsection{xv6}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
74 xv6とは MIT のオペレーティングコースの教育目的で 2006 年に開発されたオペレーティングシステムである。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
75 xv6 はオリジナルである v6 が非常に古い C 言語で書かれている為、 ANSI-C に書き換えられ x86 に再実装された。xv6 は read や write などの systemcall、プロセス、仮想メモリ、カーネルとユーザーの分離、割り込み、ファイルシステムなど Unix の基本的な構造を持っている。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
76 xv6はRaspberry Piに移植することができ、ANSI-Cで書かれているxv6をCbCに書き直すことで、Raspberry Pi上でCbCを動かすことができる。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
77 \cite{6}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
78
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
79 \subsection{Cross Compile}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
80 Cross Compileとは、別のOSで実行可能なコードを生成するコンパイル手法である。
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
81 Raspbian以外の以外のOS環境であるxv6であらかじめRaspberry Pi上でCbCが動くようにCross Compileを行い、そのコードをRaspberry Piに移すことで、実行できるようになる。\cite{7}
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
82
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 \section{今後の予定}
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 \subsection{現状}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
86 現段階では、Raspberry Pi上にGears OSを搭載している。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
87 また、Raspberry PiとMacをシリアル通信で繋げることができた。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
88 これにより、Raspberry Pi上のxv6でCbCを書くことができる。
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 \subsection{研究計画}
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
90 今後の計画として本格的にDevice Driverを開発していく。
5
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
91 USB Driverを開発するためにRaspberry PiのUEFI BIOSをbootできるようにする。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
92 UEFI BIOSとは、OSとプラットフォームウェアとの間のソフトウェアインターフェースを定義する使用である。
2
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
93 その後、xHCIを実装するために、そのUSBプロトコルをCbCで実装していきたい。
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
94 また、CbCのバージョンが上がったのでCross Compilerも新たに作成する必要がある。
0
okud
parents:
diff changeset
95
okud
parents:
diff changeset
96
okud
parents:
diff changeset
97 \begin{thebibliography}{9}
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
98 \bibitem{1}福谷武司,小谷章二,高橋智.Linux による USB デバイスドライバ作成と制御インタフェース開発
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
99 \bibitem{2}城戸英之,吉田泰彦,大原茂之.Linux用USBデバイスドライバの開発支援に関する一提案(情報処理学会第67回全国大会,2005)
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
100 \bibitem{3}坂本昂弘,河野真治.xv6 kernel 上での CbC による interface の実装(2019)
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
101 \bibitem{4}桃原優,坂本昂弘,河野真治.継続を用いたxv6 kernelの書き換え(2019)
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
102 \bibitem{5}宮城光希, 河野真治,Code Gear と Data Gear を持つ Gears OS の設計(2018)
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
103 \bibitem{6}Russ Cox,Frans Kaashoek,Robert Morris. xv6
6
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
104 \bibitem{7}桃原優,河野真治.Gears OS on Raspberry Pi(2018)
0
okud
parents:
diff changeset
105
okud
parents:
diff changeset
106 \end{thebibliography}
1
Koki Okuda <e175701@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 \end{multicols*}
0
okud
parents:
diff changeset
108 \end{document}