# HG changeset patch # User okud # Date 1612795471 -32400 # Node ID 63c082d08136a5724f7f1cc252be6d5ee7527802 # Parent 28a504cfdf34c43cb57f10d10c0f303b269b7b17 add a little diff -r 28a504cfdf34 -r 63c082d08136 hgrc diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/bibitem.tex --- a/paper/chapter/bibitem.tex Tue Jan 26 20:50:31 2021 +0900 +++ b/paper/chapter/bibitem.tex Mon Feb 08 23:44:31 2021 +0900 @@ -1,17 +1,9 @@ \begin{thebibliography}{99} - -\bibitem{kinjo} 金城篤史,城間政司,比嘉哲也,長田智和,玉城史郎,谷口祐治:``情報工学系学科における教育用計算機システムの自主構築に関する取り組み",教育システム情報学会論文誌,Vol.26,No.1,pp.79-88,2009/1 -\bibitem{kvm} KVM,https://www.linux-kvm.org/,2021/1/8. -\bibitem{docker} Docker,https://www.docker.com/,2021/1/8. -\bibitem{registry} Docker Registry,https://docs.docker.com/registry/,2021/1/8. -\bibitem{podman} Podman,https://podman.io/,2021/1/4. -\bibitem{singularity} Singularity,https://sylabs.io/singularity/,2021/1/8. -\bibitem{ceph} Ceph,https://docs.ceph.com/en/latest/,2021/1/12. -\bibitem{ansible} Ansible,https://www.ansible.com/,2021/1/12. -\bibitem{slurm} Slurm, https://slurm.schedmd.com/overview.html, 2021/1/14. -%\bibitem{gitlab} GitLab, https://about.gitlab.com/, 2021/1/14. -\bibitem{rsnapshot} rsnapshot, https://rsnapshot.org/, 2021/1/15. -\bibitem{ie-virsh} 平良 太貴 and 河野 真治,OS 授業向けマルチユーザ VM 環境の構築,研究報告システムソフトウェアとオペレーティング・システム(OS)(2014). -\bibitem{kido} 城戸翔太,安里悠矢,城間政司,長田智和,谷口祐治,"情報系学科における教育情報システムの構築及び運用管理に関する取り組み",研究報告インターネットと運用技術(IOT)(2016). - -\end{thebibliography} \ No newline at end of file +\bibitem{IntelNews} Intel/Unified EFI Forum, https://www.uefi.org ,2017/11/3. +\bibitem{Gears} 清水隆博,河野真治.GearsOSのメタ計算.琉球大学工学部情報工学科令和3年度学位論文(修士),2021. +\bibitem{CbC} 宮城光希,河野慎治.CbC言語によるOS記述.琉球大学工学部情報工学科平成29年度学位論文(学士),2017. +\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/ +\end{thebibliography} \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/chapter2.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/chapter2.tex Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,40 @@ +\chapter{Continuation based C(CbC)} + + +\section{Continuation based C(CbC)} +Continuation based C(CbC)\cite{CbC}は、当研究室で開発されているプログラミング言語である。 +CbCは、C言語の下位言語であり、関数呼び出しではなく継続を導入している。 +CbCでは、関数の代わりにCodeGearという単位でプログラミングを行う。 +CodeGearは入力と出力を持ち、CbCでは引数が入出力になっている。 +CodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。 +CbCには、GCC\cite{gcc}上に実装されたものとLLVM/Clang\cite{llvm}上に実装されたものがある。 +GCCとLLVM/Clangで実装されたCbCをARMでコンパイルするにはクロスコンパイラが必要になる。 +このクロスコンパイラ環境をSingularityで作成した。 + + +\subsection{GCC} +GCCは GNU Compiler Collectionの略でGNUプロジェクトが開発及び配布している、 +C/C++/Object-C などのプログラミング言語のコンパイラ集のことである。 + +\subsection{LLVM/Clang} +LLVMとは、モジュラー構成及び再利用可能なコンパイラとツールチェーン技術などを開発するプロジェクトの名称である。 +ClangはLLVMをバックエンドとして利用するC/C++/Object-Cのコンパイラである。 + +\subsection{Singularity} +Singularity\cite{singularity}とは、ユーザーが自身の計算環境を完全再現し、保持できる様にしたLinuxコンテナである。 +Singularityはマルチユーザーに対応していて、コンテナ内の権限は実行ユーザーの権限を引き継ぐ。 +そのため、ユーザーに特別な権限の設定が必要ない。 +また、複雑なアーキテクチャとワークフローをサポートできるよう設計されていて、ほぼ全ての環境に適応できる。 + + +\section{CbC on GCC} +あああ + +\section{CbC on GCC CrossCompile } +aaa + +\section{CbC on LLVM/Clang} +あああ + +\section{CbC on LLVM/Clang CrossCompile } +aaa diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/chapter3.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/chapter3.tex Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,36 @@ +\chapter{Raspberry Pi上のGearsOS} + + + +\section{GearsOS} +GearsOS\cite{Gears}は当研究室で信頼性と拡張性をテーマに開発されているOSである。 +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は、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と接続する。 +その時、Raspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。 +この時、HDMIでディスプレイに接続しておく。 +Mac側では、USBシリアルケーブルのドライバをインストールしてRaspberry Piと接続すると、 +devディレクトリ直下にtty.usbserialとして認識される。 +Mac側でscreenコマンドを使い、シリアル通信を行うと、Macのキーボードから入力を行える様になる。 +この時、screenコマンドを打ってから、Raspberry Piに電源を入れないと正常に起動しない。 + diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/chapter4.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/chapter4.tex Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,21 @@ +\chapter{UEFI} + + +\section{UEFI} +UEFIとは、Unified Extensible Firmware Interfaceの略で +OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。 +1990年代半ばにIntelによってBIOSに変わるEFI仕様が開発された。 +2005年にIntel、AMD、Apple、Microsoftなどの企業からなるUnified EFI Forumという業界団体のもとUEFIが開発された。 +UEFIは単なるインタフェースの仕様であるため、特定のプロセッサに依存しない。 +以前までのBIOSと異なり、近代的なソフトウェア開発手法を用いることが推奨されていて、C言語などで実装ができる。 + +\section{UEFI vs BIOS} +aaa +\section{Raspberry Pi UEFI} +Raspberry PiはARMプロセッサを搭載しているので、ARMで動くUEFIを用意する必要がある。 +UEFIはマルチプラットフォームであり、UEFIの仕様はハードウェアに依存しないため、異なるCPUアーキテクチャでも動作できる。 + + +\section{UEFI Hello World} +UEFIを開発する際に、 + diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/chapter5.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/chapter5.tex Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,6 @@ +\chapter{Boot Loader} + + +\section{bootloader} + +aaa \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/chapter6.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/chapter6.tex Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,5 @@ +\chapter{今後の課題} + + +\section{今後の課題} +aaaa \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/introduction.tex --- a/paper/chapter/introduction.tex Tue Jan 26 20:50:31 2021 +0900 +++ b/paper/chapter/introduction.tex Mon Feb 08 23:44:31 2021 +0900 @@ -1,3 +1,26 @@ -\chapter{はじめに} +\chapter{初めに} \pagenumbering{arabic} %ページ番号の表記方法 +\section{要旨} +2017年にIntel社が2020年までにLegacy BIOSとUEFIへの互換を非推奨とし、互換モジュールのCSMを削除すると発表した。\cite{IntelNews} +Legacy BIOSは長年に渡り16bitパソコンの時代からの資産を引き継いできたため、16bitモードでしか動作しない。 +そのためPCの進化に伴い、致命的な問題点が発生する。 +問題点として、拡張性がないことがあげられる。EthernetやUSBにつながるでディスクなど、新たにブートデバイスが追加されるたびに, +OSのブートローダを変更しなければならない。またマザーボードごとに、ファームウェアをアセンブラで開発する必要がある。 +また、1MBのメモリ制限により、セキュリティを含めたシステム機能の強化が困難であるためセキュリティにも問題がある。 +これらの問題を解決するためにUEFIが開発された。 +UEFIは、2TBを超える大きなディスクからブートでき、高速にブートできる。 +CPUに依存しないアーキテクチャとドライバを持ちネットワークも使用可能な柔軟なプレOS環境が利用できる。 +今後、Legacy BIOSからUEFIへの移行が急速に進むだろう。\\\ +当研究室では、信頼性と拡張性をテーマにGearsOSを開発している。 +GearsOSはContinuation based C(CbC)によってアプリケーションとOSそのものを記述している。 +現在、CbCで証明可能なOSを実装するために、xv6のCbCの書き換えを行っている。 +xv6はレガシーOSなため、UEFIから起動することができない。 +UEFIからxv6を起動させることができれば、拡張性が大きく広がる。 +本研究では、ARMで動くシングルコンピュータであるRaspberryPi上にUEFIからGearsOSをブートさせることを目指している。 + + + + +\section{論文の構成} + diff -r 28a504cfdf34 -r 63c082d08136 paper/chapter/thanks.tex --- a/paper/chapter/thanks.tex Tue Jan 26 20:50:31 2021 +0900 +++ b/paper/chapter/thanks.tex Mon Feb 08 23:44:31 2021 +0900 @@ -5,5 +5,5 @@ \thispagestyle{empty} \begin{flushright} -2021年 2月 \\宮平 賢 +2021年 2月 \\奥田 光希 \end{flushright} \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/fig/CbC.png Binary file paper/fig/CbC.png has changed diff -r 28a504cfdf34 -r 63c082d08136 paper/fig/UEFI.drawio --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/UEFI.drawio Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,1 @@ +7Vdtb9MwEP41+QhK4rZLP65duiGNsVFgwBdkEpMYpXFwnCbh1+PU57yZ0SBeViGkqrrn8d2599zpklpovasuOc7i5ywkieXaYWWhC8t158iW3w1RK2LmOYqIOA0V1SO29CsBEuKigoYkHzgKxhJBsyEZsDQlgRhwmHNWDt0+sWR4a4YjYhDbACcme09DESvWc886/orQKNY3O4ulOtlh7QyV5DEOWdmjkG+hNWdMKGtXrUnSaKd1UXGbB07bH8ZJKqYERO/p3fXLm5sv9x/5lf/mw+2r+u6Jq7LscVJAwZaPLE9+NmCs1ppZHgzXOl9o40wbkCYXtdaNsyINSXO1baFVGVNBthkOmtNSDorkYrFLJHKkaZYC1e0JF6TqUVDaJWE7IngtXeC0lRnmzJ0BLruuOZqLex3THIZBidrUnZbSADl/QlpkSPva3zw7OaGcxWMLNTOEerE9OZm8x1ZpaUhCQrmpADIuYhaxFCd+x66GonU+14xlINVnIkQNaxcXgg2FJBUVb5vwp3NA73onFxVkPoAawIPi56zgATm+jATmERHH/Zr6f9hKThIs6H64yX97Y/ST6n9nTq4z5mYxW5WG581rgkRBgvOcBlKoXBYqTPqo/PYfkh9NlH82Uf7eEpt/Z4dpbnKX4IZbRmVl7QpF9uiRvBjtRlU3RPXfXMaJ5qNEziiREsZIJDuI655b1jjkxli1wvzCpC1PatLkgPG6F9TAdj00oAs7oL+3INC/OaHucpTImzahx+dPwu4vgnLv/mch/xs= \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/fig/UEFI_element.drawio diff -r 28a504cfdf34 -r 63c082d08136 paper/fig/rasp_spec.png Binary file paper/fig/rasp_spec.png has changed diff -r 28a504cfdf34 -r 63c082d08136 paper/fig/名称未設定.drawio --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/名称未設定.drawio Mon Feb 08 23:44:31 2021 +0900 @@ -0,0 +1,1 @@ +zZZdb5swFIZ/jS87YZvwcQmEpJXWLS2qelk54AEaxMhxRrJfPxNsCHIrdVIluEGH1+eY4+c1YICj+rzlpCkeWUYrgKzsDPAaILTClrx2wkUJPu6FnJdZL8FRSMq/VImqLj+VGT1OEgVjlSibqZiyw4GmYqIRzlk7TfvFqulTG5JTQ0hSUpnqa5mJolc95I76PS3zQj8ZOn4/UhOdrFZyLEjG2hsJxwBHnDHRR/U5olXHTnPp6zYfjA6NcXoQnyl42ocJql7dt8I+Pv12mmcEL3erfpY/pDrpBW9D1a+4aAicnQ4Z7eaxAA7bohQ0aUjajbbSdakVoq7kHZShmpFyQc8ftgoHAHLjUFZTwS8yRRVgSzFTm2Zg2I4WQK0VN/gdpRHlej5MPYKRgWLzH5wcg1PKugXeBSu8OFzQmRuXa+CKdi+zc4Le0jh5BicQY+BhEEAdDEqwOH7zv5b+O/wc4MUgWIHYBaED/ODKD4EQK5DeWinBRg9tlofW+yTaofDL2eo/8A3clyRE36RsgQgD37UBcirZR7jnMsq76H79+GCqtqXY+7YKQrzdPfw0M+sy5SzRDoW+3vxrbd7gomcWd977EfD8q/eu9P578OOdtLnNNn5vCzAbGmY/k2Ozp/za+K6UF9ydatT5bn6IxsfcMiEi+2s+RvJ2PKddx24Ouzj+Bw== \ No newline at end of file diff -r 28a504cfdf34 -r 63c082d08136 paper/final_thesis.pdf Binary file paper/final_thesis.pdf has changed diff -r 28a504cfdf34 -r 63c082d08136 paper/final_thesis.tex --- a/paper/final_thesis.tex Tue Jan 26 20:50:31 2021 +0900 +++ b/paper/final_thesis.tex Mon Feb 08 23:44:31 2021 +0900 @@ -33,7 +33,7 @@ \def\lstlistlistingname{リスト目次} \setlength{\itemsep}{-1zh} -\title{Gears OS Devide Driver} +\title{Gears OS Device Driver} \icon{ \includegraphics[width=50mm]{fig/ryukyu.pdf} } @@ -61,10 +61,38 @@ \lstlistoflistings %%%%%%%%%%%% -% はじめに +% 要旨 +%%%%%%%%%%%% +\input{./chapter/introduction.tex} + +%%%%%%%%%%%% +% Raspberry Pi上のGearsOS +%%%%%%%%%%%% +\input{./chapter/chapter2.tex} + +%%%%%%%%%%%% +% CbC_GCC +%%%%%%%%%%%% +\input{./chapter/chapter3.tex} + %%%%%%%%%%%% +% UEFI +%%%%%%%%%%%% +\input{./chapter/chapter4.tex} -\input{./chapter/introduction.tex} +%%%%%%%%%%%% +% bootloader +%%%%%%%%%%%% +\input{./chapter/chapter5.tex} + +%%%%%%%%%%%% +% 今後の課題 +%%%%%%%%%%%% +\input{./chapter/chapter6.tex} + + + + %%%%%%%%%%%% % 参考文献 diff -r 28a504cfdf34 -r 63c082d08136 paper/mm/Gears OS Device Driver.xmind Binary file paper/mm/Gears OS Device Driver.xmind has changed