view paper/chapter/chapter3.tex @ 15:82407e7fefd9

fix
author okud
date Sun, 14 Feb 2021 15:40:34 +0900
parents 1236fa28ffdd
children c977b5f82b9f
line wrap: on
line source

\chapter{Raspberry Pi上のGearsOS}



\section{GearsOS}
GearsOS\cite{Gears}は当研究室で信頼性と拡張性をテーマに開発を行っているsOSである。
GearsOSはContinuation based C(CbC)によって記述されている。
当研究室では、GearsOSの信頼性とCbCの有効性を示すために、基本的な機能を揃えたOSであるxv6をCbCで置き換えを行っている。
これにより、OSの個々のシステムコールが持つ状態を明確にすることができると考えている。
CbCで書き換えられたxv6をRaspberry Piに搭載することでハードウェア上でのメタレベルの計算や並列実行を行える様になる。

\section{xv6}
xv6\cite{xv6}とは、マサチューセッツ工科大の大学院生向け講義の教材として使うために、
UNIX V6 という OS を ANSI-C(規格化された C 言語) に書き換え、x86 に移植した xv6 OS である。
x86アーキテクチャで動作する。
xv6はプロセス、仮想メモリ、カーネルとユーザの分離、割り込み、ファイルシステムなどの基本的なUnixの構造を持つにも関わらず、
シンプルで学習しやすい。

\section{Raspberry Pi}
Raspberry Pi\cite{raspi}は、ARMプロセッサを搭載したシングルコンピュータである。
Raspberry Piにはいくつか種類があり、本研究ではRaspberry Pi 3 Model Bを仕様する。
Raspberry Pi 3 Model Bには、USB2.0コネクタが4つ、microSDカードスロット、HDMI出力、40ピンGPIOなどがついている。
CPUは、ARMアーキテクチャのCortex-A53でCPUクロックは1.4GHzでメモリは1GBある。

\section{Raspberry Pi 上の xv6}
xv6はx86で動作するOSである。
Raspberry Pi上でxv6を動かすためには、ARMに対応したxv6を用意する必要がある。
そのためRaspberry Pi用に移植したxv6-rpiを用いる。
Raspberry Pi上で起動しているxv6に入力を行うためにUSBシリアルケーブルでMacBookと接続する。
その時、図\ref{raspi}の様にRaspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。
この時、HDMIでディスプレイに接続しておく。
Mac側では、USBシリアルケーブルのドライバをインストールしてRaspberry Piと接続すると、
devディレクトリ直下にtty.usbserialとして認識される。
Mac側でソースコード\ref{screen}を使い、シリアル通信を行うと、Macのキーボードから入力を行える様になる。
この時、ソースコード\ref{screen}を打ってから、Raspberry Piに電源を入れないと正常に起動しない。

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=100mm]{fig/raspi3.jpeg}
    \end{center}
    \caption{Raspberry Pi と USBserial接続}
    \label{raspi}
\end{figure}

\renewcommand{\lstlistingname}{コマンド}
\begin{lstlisting}[frame=lrbt,label=screen,caption={screenコマンド}]
 $ screen /dev/tty.usbserial-143130 1152000
\end{lstlisting}