9
|
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
|
|
2 \usepackage[dvipdfmx]{graphicx}
|
|
3 \usepackage{picins}
|
|
4 \usepackage{fancyhdr}
|
|
5 \usepackage{abstract}
|
|
6 \usepackage{here}
|
|
7 \usepackage{url}
|
|
8 \usepackage{listings,jlisting}
|
|
9 %\pagestyle{fancy}
|
|
10 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部工学科知能情報コース 卒業研究発表会}
|
|
11 \rhead{}
|
|
12 \cfoot{}
|
|
13
|
|
14 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
|
|
15 \setlength{\headheight}{0mm}
|
|
16 \setlength{\headsep}{5mm}
|
|
17 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
|
|
18 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
|
|
19 \setlength{\textwidth}{181mm}
|
|
20 \setlength{\textheight}{261mm}
|
|
21 \setlength{\footskip}{0mm}
|
|
22 \pagestyle{empty}
|
|
23
|
|
24 \renewcommand{\abstractname}{Abstract}
|
|
25 \begin{document}
|
17
|
26 \title{GearsOSのBootに関する研究}
|
|
27 \author{175733E 氏名 {奥田光希}\\ 指導教員 : {河野 真治} }
|
9
|
28 \date{}
|
|
29 \twocolumn [
|
|
30 \maketitle
|
|
31 \begin{onecolabstract}
|
17
|
32 We are proposing GearsOS, which uses Meta-calculus to improve reliability in our lab.
|
|
33 We are implementing GearsOS on Raspberry Pi based on x.v6.
|
|
34 Currently, GearsOS is booted from BIOS, and we would like to migrate it to UEFI.
|
|
35 If we can migrate to UEFI, we can avoid dependencies on CPU and other devices.
|
|
36 GearsOS is written in CbC (Continuation based C), so it is not affected by CPU or device.
|
|
37 This will make it possible to apply GearsOS to a variety of embedded systems.
|
9
|
38 \end{onecolabstract}]
|
|
39 \thispagestyle{fancy}
|
|
40
|
|
41 \section{はじめ}
|
17
|
42 2017年、Intel社は2020年までにLegacy BIOSとUEFIへの互換を非推奨とし、互換モジュールのCSMを削除すると発表した。\cite{IntelNews}
|
|
43 Legacy BIOSはPCの進化に伴い、致命的な問題点が発生する。
|
|
44 問題点の一つとして、拡張性がないことがあげられる。EthernetやUSBにつながるディスクなど、新たにブートデバイスが追加されるたびに,
|
|
45 OSのブートローダを変更しなければならない。またマザーボードごとに、ファームウェアをアセンブラで開発する必要がある。
|
|
46 また、1MBのメモリ制限により、セキュリティを含めたシステム機能の強化が困難であるためセキュリティにも問題がある。
|
|
47 これらの問題を解決するためにUEFIが開発された。
|
|
48 UEFIは、2TBを超える大きなディスクからブートでき、高速にブートできる。
|
|
49 CPUに依存しないアーキテクチャとドライバを持ちネットワークも使用可能な柔軟なプレOS環境が利用できる。
|
|
50 今後、Legacy BIOSからUEFIへの移行が急速に進むだろう。
|
|
51 また、UEFIはApplicationを持っていて、それはC言語などの高級言語で記述可能なので個人で開発がしやすい。
|
|
52
|
|
53 当研究室では、信頼性と拡張性をテーマにGearsOSを開発している。
|
|
54 GearsOSはContinuation based C(CbC)によってアプリケーションとOSそのものを記述している。
|
|
55 現在、CbCで証明可能なOSを実装するために、xv6のCbCの書き換えを行っている。
|
|
56 xv6は Legacy OSなため、UEFIから起動することができない。
|
|
57 UEFIからxv6を起動させることができれば、拡張性が大きく広がる。
|
|
58 さらに、UEFIは接続されているデバイスの認識を持てるので、マウスやキーボードを使えるように
|
|
59 UEFI Applicationを使い、デバイスドライバを作れる。
|
|
60 これにより、利便性もよくなる。
|
|
61 本研究では、ARMで動くシングルコンピュータであるRaspberryPi上にUEFIからGearsOSをブートさせることにより
|
|
62 様々な組み込みシステムに対してGearsOSを応用できる様にすることである。
|
|
63
|
|
64 \section{Continuation based C(CbC)}
|
|
65 Continuation based C(CbC)\cite{CbC}は、当研究室で開発を行っているプログラミング言語である。
|
|
66 CbCは、C言語の下位言語であり、関数呼び出しではなく継続を導入している。
|
|
67 CbCでは、関数の代わりにCodeGearという単位でプログラミングを行う。
|
|
68 CodeGearは入力と出力を持ち、CbCでは引数が入出力になっている。
|
|
69 CodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。
|
|
70
|
|
71
|
|
72 \subsection{CbC GCC ARM CrossCompile}
|
|
73 GCC上で実装されたCbCのARM CrossCompile環境をSingularity\cite{singularity}で構築した。
|
|
74 CrossCompileは、Compilerが動作している以外のプラットフォーム向けに
|
|
75 実行ファイルを生成する機能を持ったCompile手法である。
|
|
76 これにより、CbCで実装されたプログラムをRaspberry Pi上で実装ができる様になった。
|
|
77
|
|
78 \section{GearsOS}
|
|
79 GearsOS\cite{Gears}は当研究室で信頼性と拡張性をテーマに開発を行っているOSである。
|
|
80 GearsOSはContinuation based C(CbC)によって記述されている。
|
|
81 当研究室では、GearsOSの信頼性とCbCの有効性を示すために、基本的な機能を揃えたOSであるxv6\cite{xv6}をCbCで置き換えを行っている。
|
|
82 これにより、OSの個々のシステムコールが持つ状態を明確にすることができると考えている。
|
|
83 CbCで書き換えられたxv6をRaspberry Pi\cite{raspi}に搭載することでハードウェア上でのメタレベルの計算や並列実行を行える様になる。
|
|
84
|
|
85
|
|
86 \section{UEFI}
|
|
87 UEFI\cite{uefi}は、OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。
|
|
88 UEFIは、インタフェース仕様であるため、特定のプロセッサに依存しない。
|
|
89 C言語などの高級言語で実装することができ、個人でも開発の難易度が低い。
|
|
90
|
|
91
|
|
92 UEFIにはApplicationがあり、UEFI Applicationは開発を行うマシンのOSやアーキテクチャに左右されることなく、
|
|
93 高級言語から直接生成することができる。
|
|
94 UEFI Applicationを自作することにより、xv6をUEFIでBootさせるBootLoaderを作ったり、xv6のデバイスドライバを作れる様になる。
|
|
95
|
|
96 \section{BootLoader}
|
|
97
|
9
|
98
|
|
99
|
|
100 \begin{thebibliography}{9}
|
17
|
101 \bibitem{IntelNews} Intel/Unified EFI Forum, https://www.uefi.org ,2017/11/3.
|
|
102 \bibitem{CbC} 清水隆博,河野慎治..xv6の構成要素の継続の分析.情報処理学会研究報告,2020.
|
|
103 \bibitem{singularity} https://sylabs.io/singularity
|
|
104 \bibitem{Gears} 東恩納 琢偉,河野真治.Gears OSでモデル検査を実現する手法について.情報処理学会研究報告2020
|
|
105 \bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012.
|
|
106 \bibitem{raspi} https://www.raspberrypi.org
|
|
107 \bibitem{uefi} https://wiki.osdev.org/UEFI
|
9
|
108 \end{thebibliography}
|
|
109
|
|
110
|
|
111
|
|
112 \nocite{*}
|
|
113 \bibliographystyle{junsrt}
|
|
114 \bibliography{reference}
|
|
115 \end{document}
|