Mercurial > hg > Papers > 2018 > tobaru-thesis
changeset 6:3a99fc0296ce
mindmap slide 修正
author | tobaru |
---|---|
date | Thu, 22 Feb 2018 02:31:50 +0900 |
parents | 0aabd94a0126 |
children | 79fb933328ec |
files | MindMap/GearsOS on Raspberry Pi.mm proceeding/last-proceeding.log proceeding/last-proceeding.pdf proceeding/last-proceeding.synctex.gz proceeding/last-proceeding.tex slide/images/maketime.pdf slide/thesis.html slide/thesis.md slide/thesis.pdf.html |
diffstat | 9 files changed, 561 insertions(+), 129 deletions(-) [+] |
line wrap: on
line diff
--- a/MindMap/GearsOS on Raspberry Pi.mm Wed Feb 21 15:39:20 2018 +0900 +++ b/MindMap/GearsOS on Raspberry Pi.mm Thu Feb 22 02:31:50 2018 +0900 @@ -1,16 +1,18 @@ <map version="1.0.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> -<node CREATED="1516701429407" ID="ID_1051195830" MODIFIED="1516701442043" TEXT="GearsOS on Raspberry Pi"> +<node CREATED="1516701429407" ID="ID_1051195830" MODIFIED="1519218677526" TEXT="GearsOS on Raspberry Pi"> <node CREATED="1516701522709" ID="ID_256489663" MODIFIED="1516701571126" POSITION="right" TEXT="Gears"> <node CREATED="1516702085792" ID="ID_1258099700" MODIFIED="1516702089918" TEXT="CodeGear"/> <node CREATED="1516702092813" ID="ID_1153789198" MODIFIED="1516702095936" TEXT="DataGear"/> </node> <node CREATED="1516702165765" ID="ID_888886344" MODIFIED="1516702167854" POSITION="right" TEXT="CbC"> <node CREATED="1516702170043" ID="ID_1790210342" MODIFIED="1516702175339" TEXT="LLVM/Clang"/> +<node CREATED="1519201380682" ID="ID_528093321" MODIFIED="1519201383498" TEXT="GCC"/> </node> <node CREATED="1516701621433" ID="ID_661863984" MODIFIED="1516702308395" POSITION="right" TEXT="Compile"> <node CREATED="1516701719057" ID="ID_1783094022" MODIFIED="1516702316557" TEXT="RaspberryPi"> -<node CREATED="1516702179199" ID="ID_659553141" MODIFIED="1516702208394" TEXT="メモリが小さく時間がかかる"/> +<node CREATED="1519201555155" ID="ID_308623708" MODIFIED="1519201693982" TEXT="RaspberryPi1だとメモリが小さくmakeできない"/> +<node CREATED="1516702179199" ID="ID_659553141" MODIFIED="1519201680819" TEXT="RaspberryPi3だとmakeできるが時間がかかる"/> </node> <node CREATED="1516701806352" ID="ID_165282088" MODIFIED="1516702328038" TEXT="CrossCompile"> <node CREATED="1516702331294" ID="ID_1401511924" MODIFIED="1516702347472" TEXT="Linux(DALMORE)"> @@ -20,8 +22,34 @@ <node CREATED="1516706062006" ID="ID_351150592" MODIFIED="1516706065815" TEXT="Debug"/> </node> <node CREATED="1516703067278" ID="ID_1712024870" MODIFIED="1516703071125" TEXT="実装"> -<node CREATED="1516703073464" ID="ID_469950594" MODIFIED="1516703076454" TEXT="LLVM"/> -<node CREATED="1516703078125" ID="ID_1889485002" MODIFIED="1516703089129" TEXT="GCC"/> +<node CREATED="1516703073464" ID="ID_469950594" MODIFIED="1516703076454" TEXT="LLVM"> +<node CREATED="1519201486274" ID="ID_942220002" MODIFIED="1519201491722" TEXT="アップデート前"/> +<node CREATED="1519204894402" ID="ID_1955077216" MODIFIED="1519204905833" TEXT="アップデート後"> +<node CREATED="1519217348045" ID="ID_1512901642" MODIFIED="1519217350834" TEXT="CC"> +<node CREATED="1519217357486" ID="ID_1320969120" MODIFIED="1519217359198" TEXT="/usr/local/cbclang/bin/clang"/> +</node> +<node CREATED="1519216654142" ID="ID_1784953507" MODIFIED="1519216662815" TEXT="指定したFLAG"> +<node CREATED="1519216860817" ID="ID_1783527206" MODIFIED="1519217207074" TEXT="CFLAGS"> +<node CREATED="1519216843803" ID="ID_1145090203" MODIFIED="1519216856644" TEXT="target arm-linux-gnueabihf"> +<node CREATED="1519216864941" ID="ID_86655404" MODIFIED="1519216879234" TEXT="ARMのコードを生成できるようにする"/> +</node> +</node> +<node CREATED="1519217208524" ID="ID_1325609764" MODIFIED="1519217215478" TEXT="ASFLAGS"> +<node CREATED="1519217230789" ID="ID_777338329" MODIFIED="1519217239923" TEXT="target arm-linux-gnueabihf"/> +</node> +</node> +<node CREATED="1519216670662" ID="ID_435858814" MODIFIED="1519216674072" TEXT="include"> +<node CREATED="1519217283215" ID="ID_561538771" MODIFIED="1519217294192" TEXT="./cbclang/arm"/> +</node> +</node> +</node> +<node CREATED="1516703078125" ID="ID_1889485002" MODIFIED="1516703089129" TEXT="GCC"> +<node CREATED="1519204906492" ID="ID_1439315852" MODIFIED="1519204911106" TEXT="アップデート前"> +<node CREATED="1519216713687" ID="ID_1044831750" MODIFIED="1519216720265" TEXT="指定したFLAG"/> +<node CREATED="1519216722013" ID="ID_1547090102" MODIFIED="1519216724891" TEXT="include"/> +</node> +<node CREATED="1519201492301" ID="ID_366075830" MODIFIED="1519201497340" TEXT="アップデート後"/> +</node> </node> </node> <node CREATED="1516702351534" ID="ID_1085435937" MODIFIED="1516702360335" TEXT="OSX(firefly)"> @@ -33,6 +61,17 @@ </node> </node> </node> +<node CREATED="1519214364991" ID="ID_1079402126" MODIFIED="1519214367859" TEXT="KVM"> +<node CREATED="1519215746095" ID="ID_55092643" MODIFIED="1519215762678" TEXT="armエミュレータ動いた"> +<node CREATED="1519215923238" ID="ID_831712465" MODIFIED="1519217852639" TEXT="xmlファイルにarch='armv7l'を入れてあげる"/> +<node CREATED="1519217866287" ID="ID_1588005944" MODIFIED="1519217868129" TEXT="machine='versatileab'"/> +<node CREATED="1519216075752" ID="ID_1140917264" MODIFIED="1519216119264" TEXT="起動して確認するだけなのでnetworkの取る"/> +<node CREATED="1519216235497" ID="ID_1588534752" MODIFIED="1519216248355" TEXT="vi /etc/libvirt/qemu.confのusr = “root” のチェックアウトを外す "/> +</node> +<node CREATED="1519215790700" ID="ID_915035928" MODIFIED="1519215794522" TEXT="苦労した事"> +<node CREATED="1519215796643" ID="ID_1957992612" MODIFIED="1519215827244" TEXT="qemu-system-armがRaspberryPiサポートしてなかった"/> +</node> +</node> </node> <node CREATED="1516703243528" ID="ID_1207201532" MODIFIED="1516703360764" POSITION="right" TEXT="速度検証"> <node CREATED="1516703252007" ID="ID_61806467" MODIFIED="1516703260348" TEXT="RaspberryPi"/> @@ -42,5 +81,33 @@ <node CREATED="1516704649203" HGAP="14" ID="ID_1897135035" MODIFIED="1516704980644" POSITION="right" TEXT="研究目的" VSHIFT="-50"> <node CREATED="1516704656572" ID="ID_5944722" MODIFIED="1516704775914" TEXT="RaspberryPi上でも信頼性があり、並列実行できるプログラムを動かせるようになりたい"/> </node> +<node CREATED="1519218674336" ID="ID_1762980506" MODIFIED="1519218677390" POSITION="left" TEXT="発表"> +<node CREATED="1519218680427" ID="ID_710739079" MODIFIED="1519218685442" TEXT="研究目的"> +<node CREATED="1519218887321" ID="ID_248457998" MODIFIED="1519221453162" TEXT="ラズパイ上にGearsOSを構築する"/> +<node CREATED="1519218903730" ID="ID_280978204" MODIFIED="1519221420237" TEXT="そのためにはCbCコンパイラをラズパイ(ARM)用に作成する"/> +<node CREATED="1519218933529" ID="ID_1798553517" MODIFIED="1519219587353" TEXT="まずはxv6を参考にGearsOSを作りたい"/> +</node> +<node CREATED="1519218938945" ID="ID_928132530" MODIFIED="1519218943366" TEXT="問題点"> +<node CREATED="1519218945634" ID="ID_1226364392" MODIFIED="1519218967443" TEXT="ラズパイ上でLLVMまたはGCCを作成することが困難"/> +<node CREATED="1519219003981" ID="ID_1337125187" MODIFIED="1519219018865" TEXT="OSX上のCrossCompilerはmach-Oを生成するので"/> +<node CREATED="1519219020689" ID="ID_1500825251" MODIFIED="1519219036198" TEXT="xv6をリンクするのが困難"/> +<node CREATED="1519219048351" ID="ID_1578190789" MODIFIED="1519219064249" TEXT="CentOS上でCrossCompilerを作成する"/> +<node CREATED="1519219067915" ID="ID_665422766" MODIFIED="1519224259038" TEXT="ところが、LLVMでコンパイルしたARMのCrossCompileは動作しない"/> +<node CREATED="1519219093829" ID="ID_1854812298" MODIFIED="1519219108298" TEXT="原因は不明"/> +<node CREATED="1519219109747" ID="ID_1027428172" MODIFIED="1519219130710" TEXT="GCC版のCbCコンパイラをversionをあげることで対応"/> +<node CREATED="1519219135070" ID="ID_785760811" MODIFIED="1519219170728" TEXT="CentOS上でARM版xv6をdebugするためにKVMを使用する"/> +<node CREATED="1519219175855" ID="ID_1949091971" MODIFIED="1519219187741" TEXT="KVMにqemu-system-armを取り込んだ"/> +<node CREATED="1519219190256" ID="ID_1322964696" MODIFIED="1519227440333" TEXT="従来のGCC arm-linux-gnu-gccを使ったxv6をKVM上で動作させることに成功した"/> +<node CREATED="1519219234645" ID="ID_1393620002" MODIFIED="1519219287612" TEXT="CbC版のLLVM7で作成したxv6ARMは動作してないのでdebuggerを用いて調査中"/> +</node> +<node CREATED="1519219299473" ID="ID_1225626750" MODIFIED="1519219311184" TEXT="将来の課題"> +<node CREATED="1519219312546" ID="ID_1516101982" MODIFIED="1519219344835" TEXT="xv6kernelの構成に沿ってCbCを使って、書き換える部分を考察する"/> +<node CREATED="1519219346311" ID="ID_1969372049" MODIFIED="1519219365695" TEXT="CbC版LLVM7でxv6が動作しない原因を調べる"/> +<node CREATED="1519219368179" ID="ID_500043449" MODIFIED="1519219384285" TEXT="必要ならばxv6またはllvmを修正する"/> +<node CREATED="1519219387168" ID="ID_1343091702" MODIFIED="1519219397311" TEXT="GCCについても考察する"/> +</node> +<node CREATED="1519219044372" ID="ID_121070266" MODIFIED="1519219044372" TEXT=""/> +<node CREATED="1519218868656" ID="ID_618561588" MODIFIED="1519218879568" TEXT="CrossCompileの説明"/> +</node> </node> </map>
--- a/proceeding/last-proceeding.log Wed Feb 21 15:39:20 2018 +0900 +++ b/proceeding/last-proceeding.log Thu Feb 22 02:31:50 2018 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 21 FEB 2018 11:03 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 22 FEB 2018 02:23 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -247,4 +247,4 @@ 929 hyphenation exceptions out of 8191 27i,15n,43p,451b,369s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on last-proceeding.dvi (2 pages, 12280 bytes). +Output written on last-proceeding.dvi (2 pages, 12288 bytes).
--- a/proceeding/last-proceeding.tex Wed Feb 21 15:39:20 2018 +0900 +++ b/proceeding/last-proceeding.tex Thu Feb 22 02:31:50 2018 +0900 @@ -119,7 +119,7 @@ メモリ& コア & 時間 & 速度比較 \\ \hline \hline 1GB & 4Core & 15時間11分06秒 & 1.00倍 \\ \hline 16GB & 12Core& 2時間16分06秒 & 6.69倍 \\ \hline - 756GB & 72Core & 2分26秒 & 374.42倍 \\ \hline + 756GB & 36Core & 2分26秒 & 374.42倍 \\ \hline \end{tabular} } \caption{make時間の比較}
--- a/slide/thesis.html Wed Feb 21 15:39:20 2018 +0900 +++ b/slide/thesis.html Thu Feb 22 02:31:50 2018 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] - on 2018-02-21 15:36:39 +0900 with Markdown engine kramdown (1.13.2) + on 2018-02-22 02:27:48 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -103,6 +103,17 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="section">実装までの流れ</h1> +<ul> + <li>RaspberryPi上にGearsOSを実装するために、まずはCbCコンパイラをRaspberryPi(ARM)用に作成する</li> + <li>その後に、CbCをを使ってxv6というOSを参考にRaspberryPiで動くGearsOSを作る</li> + <li>xv6 とは ANIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した OS である。xv6 は Raspberry Pi で動かす事ができる。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="raspberrypicbcmake">RaspberryPi上でCbCのmake</h1> <ul> <li>Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC を make することができない。</li> @@ -117,7 +128,7 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="make-">make 時間の比較</h1> -<div align="center"><img src="./images/maketime.png" width="700" height="250" style="center" /></div> +<div align="center"><img src="./images/maketime.pdf" width="700" height="250" style="center" /></div> </div> @@ -135,17 +146,80 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="osx-crosscompile">OSX CrossCompile</h1> +<ul> + <li>OSX上でCbCを実装を試みた</li> + <li>OSX上でCrossCompileを行うとMach-Oのバイナリが生成される。</li> + <li>Mach-oのローダーを作らなければならず、実装は困難である。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="linux-crosscompile">Linux CrossCompile</h1> <ul> <li>Linux環境でCbCを動かす際にCrossCompileを行なう方法がある。</li> - <li>RaspberryPiはARMのコードを生成するので、LinuxでもCrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。</li> - <li>C言語で書かれた簡単なファイルをCrossCompileしたコマンドを示す。</li> + <li>RaspberryPiはARMのコードを生成するので、CrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="llvmclang">LLVM/Clang</h1> +<ul> + <li>CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。</li> + <li>LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な コンパイラ とツールチェーン技術の集まりである。</li> + <li>Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の コンパイラ である。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="llvm-crosscompile">LLVM CrossCompile</h1> +<ul> + <li>Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できる ARM の コードを生成できるようにCrossCompilerを作ったが、動作していない</li> + <li>LLVMかxv6のどちらに修正が必要なのか分かってないのでデバッガを使って調査していく</li> </ul> -<pre lang="c"><code>./bin/clang -target arm-linux-gnueabi -mfpu=neon-fp16 -marm --I /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include/ - hello.c -c -mfloat-abi=hard -</code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="kvm">KVM</h1> +<ul> + <li>ARM版のxv6をデバッグするためにKVMを使用する。</li> + <li>KVMとは完全仮想化を実現できる機能の事である。</li> + <li>完全仮想化なので、kernelに変更を加えなくても別のOSを動かせるメリットがある。</li> + <li>KVMはqemuによって操作を行う。</li> + <li>qemu-system-armはRaspberryPiをサポートしていなかったが、KVMを立ち上げるために使うxmlファイルにarch=’armv7l’ machine=’versatileab’を指定する事で、解決した。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gcc-crosscompile">GCC CrossCompile</h1> +<ul> + <li>GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。</li> + <li> + <p>GCCで実装されたCbCについてはARMのコードを生成するようにMakefileを作成した。</p> + </li> + <li>Linux上でARMのコードを生成するためのツールチェーンであるgcc-linux-gnuを使う事でxv6をKVM上で動作させる事に成功した。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-1">今後の課題</h1> +<ul> + <li>LLVMで実装されたLLVMで作成したxv6が動作しない原因をKVMを用いて調べる。</li> + <li>必要であれば、xv6またはLLVMを修正していく。</li> + <li>xv6kernelの構文に沿ってCbCで書き換える部分を考察する。</li> +</ul> </div> @@ -176,29 +250,8 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="xv6">xv6</h1> -<ul> - <li>マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した Xv6 OS である。Xv6 は Raspberry Pi に 移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、Raspberry Pi で CbC を動かせるようになる。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="llvmclang">LLVM/Clang</h1> +<h1 id="llvm-crosscompile-makefile">LLVM CrossCompile Makefile</h1> <ul> - <li>CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。</li> - <li>LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な compiler とツールチェーン技術の集まりである。</li> - <li>Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の compiler である。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="llvm-crosscompile">LLVM CrossCompile</h1> -<ul> - <li>Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できるような ARM の コードを生成できるように実装した。</li> <li>makefileの一部を下に示す。</li> <li>CCはコンパイラで、すでにmakeしたCbCのコンパイラを指定している。</li> <li>AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。</li> @@ -229,15 +282,98 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gcc-crosscompile">GCC CrossCompile</h1> -<ul> - <li>GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。</li> - <li>GCCで実装されたCbCについてもARMのコードを生成するようにMakefileを実装した。</li> +<h1 id="linuxcpu">LinuxのCPUコア</h1> +<ul lang="c"> + <li>CPUごとのコア数 18</li> + <li>論理プロセッサー 72</li> +</ul> +<pre><code>+dalmore+one grep cpu.cores /proc/cpuinfo | sort -u +cpu cores : 18 ++dalmore+one grep processor /proc/cpuinfo | wc -l +72 +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="c" id="osx">OSXコア数</h1> +<pre><code>+firefly+one system_profiler SPHardwareDataType +Hardware: + + Hardware Overview: + + Model Name: Mac Pro + Model Identifier: MacPro5,1 + Processor Name: 6-Core Intel Xeon + Processor Speed: 2.66 GHz + Number of Processors: 2 + Total Number of Cores: 12 + L2 Cache (per Core): 256 KB + L3 Cache (per Processor): 12 MB + Memory: 16 GB + Processor Interconnect Speed: 6.4 GT/s + Boot ROM Version: MP51.007F.B03 + SMC Version (system): 1.39f11 + SMC Version (processor tray): 1.39f11 + Serial Number (system): YM20300FGWR + Serial Number (processor tray): J515201PEBH8C + Hardware UUID: F6CA8AEA-6A98-53A9-826F-B3A3D465F23B +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="c" id="arm1xml">arm1.xml</h1> +<pre><code><domain type='qemu' id='22'> + <name>arm1</name> + <uuid>8028f71a-1db8-40a4-94fa-5a4a42014273</uuid> + <memory>131072</memory> + <currentMemory>131072</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='armv7l' machine='versatileab'>hvm</type> + <kernel>/var/lib/libvirt/images/zImage-versatile-2.6.24-rc7.armv5tel</kernel> + <cmdline>&quot;root=0800&quot;</cmdline> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/bin/qemu-system-arm</emulator> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='/var/lib/libvirt/images/arm1.img'/> + <target dev='hdc' bus='scsi'/> + </disk> + <input type='mouse' bus='ps2'/> + <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='43u@khii'> + <listen type='address' address='0.0.0.0'/> + </graphics> + <video> + <model type='cirrus' vram='16384' heads='1' primary='yes'/> + </video> + </devices> +</domain> + +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gcc-crosscompile-makefile">GCC CrossCompile makefile</h1> +<ul lang="c"> <li>CC にarm-linux-gnu-gccを指定することでARMのコードを生成できるようになる</li> <li>AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。</li> </ul> - -<pre lang="c"><code>QEMU = qemu-system-arm +<pre><code>QEMU = qemu-system-arm include makefile.inc CC = arm-linux-gnu-gcc @@ -261,14 +397,6 @@ -S -O binary --prefix-symbols="_binary_$@" $@.out $@, " OBJCOPY $(TARGET_DIR)$@") </code></pre> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section">今後の課題</h1> - -<p>Xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易に なるので、Linux 上での実装を目指して研究を進めていく。xv6 で CbC が動けば、続け て Linux 上で Gears OS の実装も行なっていく。</p> - <!-- === end markdown block === --> </div>
--- a/slide/thesis.md Wed Feb 21 15:39:20 2018 +0900 +++ b/slide/thesis.md Thu Feb 22 02:31:50 2018 +0900 @@ -8,6 +8,11 @@ - メタレベルの処理では、メモリ管理、スレッド管理、CPU や GPU の資源管理を記述 することができる。 - 本研究では、ARM で動くシングルボードコンピュータである Raspberry Pi で Gears OS を動かせるようになる事で、ハードウェア上でもメタレベルの処理、並列実行ができるプログラミングを記述できるようになる事を目指している。 +# 実装までの流れ +- RaspberryPi上にGearsOSを実装するために、まずはCbCコンパイラをRaspberryPi(ARM)用に作成する +- その後に、CbCをを使ってxv6というOSを参考にRaspberryPiで動くGearsOSを作る +- xv6 とは ANIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した OS である。xv6 は Raspberry Pi で動かす事ができる。 + # RaspberryPi上でCbCのmake - Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC を make することができない。 @@ -17,7 +22,7 @@ - ninja-buildはコア数を調べて実行するので使わない場合と比べてmakeが高速になる。 # make 時間の比較 -<div align="center"><img src="./images/maketime.png" width="700" height="250" style="center"></div> +<div align="center"><img src="./images/maketime.pdf" width="700" height="250" style="center"></div> # CrossCompile - CrossCompile を行うことで make 時間の問題を解決する方法がある。 @@ -25,23 +30,72 @@ - Raspbian 以外の OS 環境であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、その コードを Raspberry Pi に移す事で、実行できるようになる。 - Raspberry Pi の OS である Rasbian は qemu によるメモリの拡張もできないので、別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 + +# OSX CrossCompile +- OSX上でCbCを実装を試みた +- OSX上でCrossCompileを行うとMach-Oのバイナリが生成される。 +- Mach-oのローダーを作らなければならず、実装は困難である。 + + # Linux CrossCompile - Linux環境でCbCを動かす際にCrossCompileを行なう方法がある。 -- RaspberryPiはARMのコードを生成するので、LinuxでもCrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。 -- C言語で書かれた簡単なファイルをCrossCompileしたコマンドを示す。 +- RaspberryPiはARMのコードを生成するので、CrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。 + + +%# T図形 +% - CbC を Raspberry Pi で動かすためのアプローチの手法をを、I と T の形をした図の組み合わせによって説明を行う。 +% - I の上部分に cbclang や Xv6 などのソースコード名を、下部分にその機能の記述言語を記してある +% - T の上部分は左に入力されるファイル、右に出力されるその機能によって出力されるファイルが記され、下部分にその機能の記述言語が記されている。 +% +% <div align="center"><img src="./images/examples_2.pdf" style="center"></div> + +% # Linux上でのCbCの実装 +% - OSX上に立ち上げられたLinux で CbC のCrossCompileを行う過程を図に示す。 +% - CbCは C によって記述されているため、CからARM形式の.oファイルを生成し、.oからARMのa.outを出力する。 +% - これらはARM形式なのでRaspberryPiで実行できるファイルである。 +% <div align="center"><img src="./images/OSX_Linux_VM.pdf" style="center"></div> + + + +# LLVM/Clang +- CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。 +- LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な コンパイラ とツールチェーン技術の集まりである。 +- Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の コンパイラ である。 -```c -./bin/clang -target arm-linux-gnueabi -mfpu=neon-fp16 -marm --I /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include/ - hello.c -c -mfloat-abi=hard -``` +# LLVM CrossCompile +- Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できる ARM の コードを生成できるようにCrossCompilerを作ったが、動作していない +- LLVMかxv6のどちらに修正が必要なのか分かってないのでデバッガを使って調査していく + + +# KVM +- ARM版のxv6をデバッグするためにKVMを使用する。 +- KVMとは完全仮想化を実現できる機能の事である。 +- 完全仮想化なので、kernelに変更を加えなくても別のOSを動かせるメリットがある。 +- KVMはqemuによって操作を行う。 +- qemu-system-armはRaspberryPiをサポートしていなかったが、KVMを立ち上げるために使うxmlファイルにarch='armv7l' machine='versatileab'を指定する事で、解決した。 + + +# GCC CrossCompile +- GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。 +- GCCで実装されたCbCについてはARMのコードを生成するようにMakefileを作成した。 +% - LLVMと同様に動作していなかったが、GCCで実装されたCbCコンパイラのバージョンをあげる事で、 動作させる事に成功した。 +- Linux上でARMのコードを生成するためのツールチェーンであるgcc-linux-gnuを使う事でxv6をKVM上で動作させる事に成功した。 + + + +# 今後の課題 +- LLVMで実装されたLLVMで作成したxv6が動作しない原因をKVMを用いて調べる。 +- 必要であれば、xv6またはLLVMを修正していく。 +- xv6kernelの構文に沿ってCbCで書き換える部分を考察する。 + # T図形 -- CbC を Raspberry Pi で動かすためのアプローチの手法をを、I と T の形をした図の組み合わせによって説明を行う。 -- I の上部分に cbclang や Xv6 などのソースコード名を、下部分にその機能の記述言語を記してある -- T の上部分は左に入力されるファイル、右に出力されるその機能によって出力されるファイルが記され、下部分にその機能の記述言語が記されている。 + - CbC を Raspberry Pi で動かすためのアプローチの手法をを、I と T の形をした図の組み合わせによって説明を行う。 + - I の上部分に cbclang や Xv6 などのソースコード名を、下部分にその機能の記述言語を記してある + - T の上部分は左に入力されるファイル、右に出力されるその機能によって出力されるファイルが記され、下部分にその機能の記述言語が記されている。 + + <div align="center"><img src="./images/examples_2.pdf" style="center"></div> -<div align="center"><img src="./images/examples_2.pdf" style="center"></div> # Linux上でのCbCの実装 - OSX上に立ち上げられたLinux で CbC のCrossCompileを行う過程を図に示す。 @@ -49,24 +103,14 @@ - これらはARM形式なのでRaspberryPiで実行できるファイルである。 <div align="center"><img src="./images/OSX_Linux_VM.pdf" style="center"></div> - - -# xv6 -- マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した Xv6 OS である。Xv6 は Raspberry Pi に 移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、Raspberry Pi で CbC を動かせるようになる。 - -# LLVM/Clang -- CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。 -- LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な compiler とツールチェーン技術の集まりである。 -- Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の compiler である。 - -# LLVM CrossCompile -- Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できるような ARM の コードを生成できるように実装した。 +# LLVM CrossCompile Makefile - makefileの一部を下に示す。 - CCはコンパイラで、すでにmakeしたCbCのコンパイラを指定している。 - AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。 - CFLAGS にターゲットオプションで arm-linux-gnueabihfを指定することで、ARMのコードを生成することができる。 - libgcc + ```c QEMU = qemu-system-arm @@ -87,13 +131,84 @@ LIBS =/net/open/RaspberryPi/rasbian-img/usr/lib/gcc/arm-linux-gnueabihf/6/libgcc.a ``` +# LinuxのCPUコア +- CPUごとのコア数 18 +- 論理プロセッサー 72 +```c ++dalmore+one grep cpu.cores /proc/cpuinfo | sort -u +cpu cores : 18 ++dalmore+one grep processor /proc/cpuinfo | wc -l +72 +``` -# GCC CrossCompile -- GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。 -- GCCで実装されたCbCについてもARMのコードを生成するようにMakefileを実装した。 +# OSXコア数 +```c ++firefly+one system_profiler SPHardwareDataType +Hardware: + + Hardware Overview: + + Model Name: Mac Pro + Model Identifier: MacPro5,1 + Processor Name: 6-Core Intel Xeon + Processor Speed: 2.66 GHz + Number of Processors: 2 + Total Number of Cores: 12 + L2 Cache (per Core): 256 KB + L3 Cache (per Processor): 12 MB + Memory: 16 GB + Processor Interconnect Speed: 6.4 GT/s + Boot ROM Version: MP51.007F.B03 + SMC Version (system): 1.39f11 + SMC Version (processor tray): 1.39f11 + Serial Number (system): YM20300FGWR + Serial Number (processor tray): J515201PEBH8C + Hardware UUID: F6CA8AEA-6A98-53A9-826F-B3A3D465F23B +``` + +# arm1.xml +```c +<domain type='qemu' id='22'> + <name>arm1</name> + <uuid>8028f71a-1db8-40a4-94fa-5a4a42014273</uuid> + <memory>131072</memory> + <currentMemory>131072</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='armv7l' machine='versatileab'>hvm</type> + <kernel>/var/lib/libvirt/images/zImage-versatile-2.6.24-rc7.armv5tel</kernel> + <cmdline>"root=0800"</cmdline> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/bin/qemu-system-arm</emulator> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='/var/lib/libvirt/images/arm1.img'/> + <target dev='hdc' bus='scsi'/> + </disk> + <input type='mouse' bus='ps2'/> + <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='43u@khii'> + <listen type='address' address='0.0.0.0'/> + </graphics> + <video> + <model type='cirrus' vram='16384' heads='1' primary='yes'/> + </video> + </devices> +</domain> + +``` + +# GCC CrossCompile makefile - CC にarm-linux-gnu-gccを指定することでARMのコードを生成できるようになる - AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。 - ```c QEMU = qemu-system-arm @@ -120,10 +235,4 @@ ``` -# 今後の課題 -Xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易に なるので、Linux 上での実装を目指して研究を進めていく。xv6 で CbC が動けば、続け て Linux 上で Gears OS の実装も行なっていく。 - - - -
--- a/slide/thesis.pdf.html Wed Feb 21 15:39:20 2018 +0900 +++ b/slide/thesis.pdf.html Thu Feb 22 02:31:50 2018 +0900 @@ -70,7 +70,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] - on 2018-02-21 15:36:39 +0900 with Markdown engine kramdown (1.13.2) + on 2018-02-22 02:27:48 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -87,6 +87,17 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="section">実装までの流れ</h1> +<ul> + <li>RaspberryPi上にGearsOSを実装するために、まずはCbCコンパイラをRaspberryPi(ARM)用に作成する</li> + <li>その後に、CbCをを使ってxv6というOSを参考にRaspberryPiで動くGearsOSを作る</li> + <li>xv6 とは ANIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した OS である。xv6 は Raspberry Pi で動かす事ができる。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="raspberrypicbcmake">RaspberryPi上でCbCのmake</h1> <ul> <li>Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC を make することができない。</li> @@ -101,7 +112,7 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="make-">make 時間の比較</h1> -<div align="center"><img src="./images/maketime.png" width="700" height="250" style="center" /></div> +<div align="center"><img src="./images/maketime.pdf" width="700" height="250" style="center" /></div> </div> @@ -119,17 +130,80 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="osx-crosscompile">OSX CrossCompile</h1> +<ul> + <li>OSX上でCbCを実装を試みた</li> + <li>OSX上でCrossCompileを行うとMach-Oのバイナリが生成される。</li> + <li>Mach-oのローダーを作らなければならず、実装は困難である。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="linux-crosscompile">Linux CrossCompile</h1> <ul> <li>Linux環境でCbCを動かす際にCrossCompileを行なう方法がある。</li> - <li>RaspberryPiはARMのコードを生成するので、LinuxでもCrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。</li> - <li>C言語で書かれた簡単なファイルをCrossCompileしたコマンドを示す。</li> + <li>RaspberryPiはARMのコードを生成するので、CrossCompileによってARMのコードを生成すればRaspberry Pi でも実行可能なファイルを作ることができる。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="llvmclang">LLVM/Clang</h1> +<ul> + <li>CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。</li> + <li>LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な コンパイラ とツールチェーン技術の集まりである。</li> + <li>Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の コンパイラ である。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="llvm-crosscompile">LLVM CrossCompile</h1> +<ul> + <li>Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できる ARM の コードを生成できるようにCrossCompilerを作ったが、動作していない</li> + <li>LLVMかxv6のどちらに修正が必要なのか分かってないのでデバッガを使って調査していく</li> </ul> -<pre lang="c"><code>./bin/clang -target arm-linux-gnueabi -mfpu=neon-fp16 -marm --I /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include/ - hello.c -c -mfloat-abi=hard -</code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="kvm">KVM</h1> +<ul> + <li>ARM版のxv6をデバッグするためにKVMを使用する。</li> + <li>KVMとは完全仮想化を実現できる機能の事である。</li> + <li>完全仮想化なので、kernelに変更を加えなくても別のOSを動かせるメリットがある。</li> + <li>KVMはqemuによって操作を行う。</li> + <li>qemu-system-armはRaspberryPiをサポートしていなかったが、KVMを立ち上げるために使うxmlファイルにarch=’armv7l’ machine=’versatileab’を指定する事で、解決した。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gcc-crosscompile">GCC CrossCompile</h1> +<ul> + <li>GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。</li> + <li> + <p>GCCで実装されたCbCについてはARMのコードを生成するようにMakefileを作成した。</p> + </li> + <li>Linux上でARMのコードを生成するためのツールチェーンであるgcc-linux-gnuを使う事でxv6をKVM上で動作させる事に成功した。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-1">今後の課題</h1> +<ul> + <li>LLVMで実装されたLLVMで作成したxv6が動作しない原因をKVMを用いて調べる。</li> + <li>必要であれば、xv6またはLLVMを修正していく。</li> + <li>xv6kernelの構文に沿ってCbCで書き換える部分を考察する。</li> +</ul> </div> @@ -160,29 +234,8 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="xv6">xv6</h1> -<ul> - <li>マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 とい う OS を ANSI-C に書き換え、x86 に移植した Xv6 OS である。Xv6 は Raspberry Pi に 移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、Raspberry Pi で CbC を動かせるようになる。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="llvmclang">LLVM/Clang</h1> +<h1 id="llvm-crosscompile-makefile">LLVM CrossCompile Makefile</h1> <ul> - <li>CbC には、LLVM/Clang 上に実装したものと、GCC で実装したものがある。</li> - <li>LLVM とは任意のプログラミング言語の静的コンパイルと 動的コンパイルの両方をサポートできる事を目的としたプロ ジェクトから始まった、モジューラと再利用可能な compiler とツールチェーン技術の集まりである。</li> - <li>Clang は高速なコンパイルを目的とした LLVM をバック エンドとした、C/C++/Objective-C の compiler である。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="llvm-crosscompile">LLVM CrossCompile</h1> -<ul> - <li>Makefile に変更を加えることで LLVM/Clang 上に実装 された CbC で Raspberry Pi で実行できるような ARM の コードを生成できるように実装した。</li> <li>makefileの一部を下に示す。</li> <li>CCはコンパイラで、すでにmakeしたCbCのコンパイラを指定している。</li> <li>AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。</li> @@ -213,15 +266,98 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gcc-crosscompile">GCC CrossCompile</h1> -<ul> - <li>GCC は C/C++/Objective-C などを様々な言語をコンパイルすることのできるコンパイラである。</li> - <li>GCCで実装されたCbCについてもARMのコードを生成するようにMakefileを実装した。</li> +<h1 id="linuxcpu">LinuxのCPUコア</h1> +<ul lang="c"> + <li>CPUごとのコア数 18</li> + <li>論理プロセッサー 72</li> +</ul> +<pre><code>+dalmore+one grep cpu.cores /proc/cpuinfo | sort -u +cpu cores : 18 ++dalmore+one grep processor /proc/cpuinfo | wc -l +72 +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="c" id="osx">OSXコア数</h1> +<pre><code>+firefly+one system_profiler SPHardwareDataType +Hardware: + + Hardware Overview: + + Model Name: Mac Pro + Model Identifier: MacPro5,1 + Processor Name: 6-Core Intel Xeon + Processor Speed: 2.66 GHz + Number of Processors: 2 + Total Number of Cores: 12 + L2 Cache (per Core): 256 KB + L3 Cache (per Processor): 12 MB + Memory: 16 GB + Processor Interconnect Speed: 6.4 GT/s + Boot ROM Version: MP51.007F.B03 + SMC Version (system): 1.39f11 + SMC Version (processor tray): 1.39f11 + Serial Number (system): YM20300FGWR + Serial Number (processor tray): J515201PEBH8C + Hardware UUID: F6CA8AEA-6A98-53A9-826F-B3A3D465F23B +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 lang="c" id="arm1xml">arm1.xml</h1> +<pre><code><domain type='qemu' id='22'> + <name>arm1</name> + <uuid>8028f71a-1db8-40a4-94fa-5a4a42014273</uuid> + <memory>131072</memory> + <currentMemory>131072</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='armv7l' machine='versatileab'>hvm</type> + <kernel>/var/lib/libvirt/images/zImage-versatile-2.6.24-rc7.armv5tel</kernel> + <cmdline>&quot;root=0800&quot;</cmdline> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/bin/qemu-system-arm</emulator> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='/var/lib/libvirt/images/arm1.img'/> + <target dev='hdc' bus='scsi'/> + </disk> + <input type='mouse' bus='ps2'/> + <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='43u@khii'> + <listen type='address' address='0.0.0.0'/> + </graphics> + <video> + <model type='cirrus' vram='16384' heads='1' primary='yes'/> + </video> + </devices> +</domain> + +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="gcc-crosscompile-makefile">GCC CrossCompile makefile</h1> +<ul lang="c"> <li>CC にarm-linux-gnu-gccを指定することでARMのコードを生成できるようになる</li> <li>AS(アセンブラ)やLD(リンカー)はarm-linux-gnuに続くコマンドを指定する。</li> </ul> - -<pre lang="c"><code>QEMU = qemu-system-arm +<pre><code>QEMU = qemu-system-arm include makefile.inc CC = arm-linux-gnu-gcc @@ -245,14 +381,6 @@ -S -O binary --prefix-symbols="_binary_$@" $@.out $@, " OBJCOPY $(TARGET_DIR)$@") </code></pre> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section">今後の課題</h1> - -<p>Xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易に なるので、Linux 上での実装を目指して研究を進めていく。xv6 で CbC が動けば、続け て Linux 上で Gears OS の実装も行なっていく。</p> - <!-- === end markdown block === --> </div>