# HG changeset patch # User okud # Date 1613131076 -32400 # Node ID 1236fa28ffdd1de8742052eb7a5642cf99299fe5 # Parent b6212bbc42dac4566db0bac66c85ad71b15cd3f9 add slide diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/bibitem.tex --- a/paper/chapter/bibitem.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/bibitem.tex Fri Feb 12 20:57:56 2021 +0900 @@ -1,9 +1,11 @@ \begin{thebibliography}{99} \bibitem{IntelNews} Intel/Unified EFI Forum, https://www.uefi.org ,2017/11/3. \bibitem{CbC} 宮城光希,河野慎治.CbC言語によるOS記述.琉球大学工学部情報工学科平成29年度学位論文(学士),2017. -\bibitem{Gears} 清水隆博,河野真治.GearsOSのメタ計算.琉球大学工学部情報工学科令和3年度学位論文(修士),2021. -\bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012. \bibitem{gcc} GNU Compiler Collection (GCC) Internals,https://gcc.gnu.org/onlinedocs/gccint/ \bibitem{llvm} Clang: a C language family frontend for LLVM,https://clang.llvm.org. \bibitem{singularity} https://sylabs.io/singularity/ +\bibitem{Gears} 清水隆博,河野真治.GearsOSのメタ計算.琉球大学工学部情報工学科令和3年度学位論文(修士),2021. +\bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012. +\bibitem{raspi} https://www.raspberrypi.org +\bibitem{uefi} https://wiki.osdev.org/UEFI \end{thebibliography} \ No newline at end of file diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter2.tex --- a/paper/chapter/chapter2.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter2.tex Fri Feb 12 20:57:56 2021 +0900 @@ -6,7 +6,15 @@ CbCは、C言語の下位言語であり、関数呼び出しではなく継続を導入している。 CbCでは、関数の代わりにCodeGearという単位でプログラミングを行う。 CodeGearは入力と出力を持ち、CbCでは引数が入出力になっている。 -CodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。 +図\ref{CbC}の様にCodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。 +\begin{figure}[H] + \begin{center} + \includegraphics[width=100mm]{fig/CbC.png} + \end{center} + \caption{CbCの遷移} + \label{CbC} +\end{figure} + CbCには、GCC\cite{gcc}上に実装されたものとLLVM/Clang\cite{llvm}上に実装されたものがある。 GCCとLLVM/Clangで実装されたCbCをARMでCompileするにはCross Compileを行う必要がある。 GCCとLLVMではCbCを動かすのにGCCの方が安定しているのでCbCのGCCのCrossCompile環境を作成する。 diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter3.tex --- a/paper/chapter/chapter3.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter3.tex Fri Feb 12 20:57:56 2021 +0900 @@ -17,7 +17,7 @@ シンプルで学習しやすい。 \section{Raspberry Pi} -Raspberry Piは、ARMプロセッサを搭載したシングルコンピュータ。 +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ある。 @@ -27,17 +27,22 @@ Raspberry Pi上でxv6を動かすためには、ARMに対応したxv6を用意する必要がある。 そのためRaspberry Pi用に移植したxv6-rpiを用いる。 Raspberry Pi上で起動しているxv6に入力を行うためにUSBシリアルケーブルでMacBookと接続する。 -その時、Raspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。 +その時、図\ref{raspi}の様にRaspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。 この時、HDMIでディスプレイに接続しておく。 Mac側では、USBシリアルケーブルのドライバをインストールしてRaspberry Piと接続すると、 devディレクトリ直下にtty.usbserialとして認識される。 -Mac側でscreenコマンドを使い、シリアル通信を行うと、Macのキーボードから入力を行える様になる。 -この時、screenコマンドを打ってから、Raspberry Piに電源を入れないと正常に起動しない。 +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{fig1} -\end{figure} \ No newline at end of file + \label{raspi} +\end{figure} + +\renewcommand{\lstlistingname}{コマンド} +\begin{lstlisting}[frame=lrbt,label=screen,caption={screenコマンド}] + screen /dev/tty.usbserial-143130 1152000 +\end{lstlisting} \ No newline at end of file diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter4.tex --- a/paper/chapter/chapter4.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter4.tex Fri Feb 12 20:57:56 2021 +0900 @@ -2,7 +2,7 @@ \section{UEFI} -UEFIとは、Unified Extensible Firmware Interfaceの略で +UEFI\cite{uefi}とは、Unified Extensible Firmware Interfaceの略で OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。 1990年代半ばにIntelによってBIOSに変わるEFI仕様が開発された。 2005年にIntel、AMD、Apple、Microsoftなどの企業からなるUnified EFI Forumという業界団体のもとUEFIが開発された。 @@ -10,33 +10,47 @@ 以前までのBIOSと異なり、近代的なソフトウェア開発手法を用いることが推奨されていて、C言語などで実装ができる。 -\section{BIOS vs UEFI} - +\section{BIOSとUEFI} +UEFIはBIOSの後継として開発されたがBIOSと大きな違いがいくつかある。 +BIOSとUEFIの違いを表\ref{tb:biso_uefi}にまとめた。 \begin{table}[H] \begin{center} - \caption{BIOS vs UEFI} + \caption{BIOSとUEFIの違い} \begin{tabular}{|c|c|c|c|} \hline & BIOS & UEFI(32bit) & UEFI(64bit)\\ \hline - OS & 16bit & 32bit & 64bit \\ \hline + CPU & 16bit & 32bit & 64bit \\ \hline メモリ空間 & 1MB & 4GB & 256TB\\ \hline - HDD容量 & 2TBまで & 2TB以上可能 & 2TB以上可能 \\ \hline - HDD数 & 一つ & 複数& 複数 \\ \hline - BOOT & GPT & MBR & MBR \\ \hline - Network & なし & あり & あり \\ \hline - セキュリティ機能 & なし & あり & あり\\ \hline + BOOT & MBR & GPT & GPT \\ \hline + デバイス規格 & PS/2 & USB & USB \\ \hline \end{tabular} \label{tb:biso_uefi} \end{center} \end{table} +\subsection{CPU} +BIOSは、40年近く前から存在しているので、16bitCPU前提のアーキテクチャであるため16bitで起動する。 +また、CPUリアルモードでないとBIOSから起動できない。 +さらに、CPUのアーキテクチャに依存し、アーキテクチャごとに設定しなければならない。 +しかし、UEFIは、32bit、64bitの両方を起動できる。起動も64bitモードで可能。 +また、CPUのアーキテクチャに依存しない。 + +\subsection{メモリ空間} +BIOSは16bitしかないのでメモリも1MBと制限がある。 +UEFIでは、32bitなら4GB、64bitなら256TBまでメモリを潤沢に使える。 +これにより、セキュリティを含めたシステム機能の強化が可能になった。 + +\subsection{BOOT} +BIOSとUEFIでは、BOOT方式が違う。 +BIOSは、ディスク先頭の512バイトにBootLoaderとパーティーションテーブル(MBR)が格納されていて +第一セクタの512バイトがメモリの0x7c00にコピーされ、そこにジャンプする。 +そして、そのBootLoaderが起動する。BootLoaderがカーネルとディスクイメージをメモリにロードし、 +カーネルが初期化処理をする。その後OSが起動される。 +UEFIは、 + +\subsection{デバイス} +device + \section{UEFI Application} aaa -\section{Raspberry Pi UEFI} -Raspberry PiはARMプロセッサを搭載しているので、ARMで動くUEFIを用意する必要がある。 -UEFIはマルチプラットフォームであり、UEFIの仕様はハードウェアに依存しないため、異なるCPUアーキテクチャでも動作できる。 -そのため +\section{UEFI Hello World} +UEFIを開発する際に - - -\section{UEFI Hello World} -UEFIを開発する際に、 - diff -r b6212bbc42da -r 1236fa28ffdd paper/fig/BOOT.png Binary file paper/fig/BOOT.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/fig/CbC.png Binary file paper/fig/CbC.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/final_thesis.pdf Binary file paper/final_thesis.pdf has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/backfill.png Binary file paper/slide/images/backfill.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/container.png Binary file paper/slide/images/container.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/fswrite.png Binary file paper/slide/images/fswrite.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/jobscheduler.png Binary file paper/slide/images/jobscheduler.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/system.png Binary file paper/slide/images/system.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/slide.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/slide/slide.html Fri Feb 12 20:57:56 2021 +0900 @@ -0,0 +1,1290 @@ +