Mercurial > hg > Papers > 2018 > mitsuki-sigos
changeset 6:dc0aa4a22e32
add mindmap
author | mir3636 |
---|---|
date | Wed, 20 Dec 2017 18:44:34 +0900 |
parents | 4f9b33ddd8ba |
children | f57143305847 |
files | Paper/main.pdf Paper/main.tex mindmap.mm |
diffstat | 3 files changed, 171 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/main.tex Wed Dec 20 17:24:23 2017 +0900 +++ b/Paper/main.tex Wed Dec 20 18:44:34 2017 +0900 @@ -43,21 +43,21 @@ % はじめに \begin{abstract} - 現代の OS では拡張性と信頼性を両立させることが要求されている。 +現代の OS では拡張性と信頼性を両立させることが要求されている。 信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。 - Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。 - OS の下ではプログラムの記述は通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等の記述しなければならない処理が存在する。 - これらの計算をメタ計算と呼ぶ。 - メタ計算を通常の計算から切り離して記述するために、Code Gear、Data Gear という単位を提案している。 - CbC はこの Code Gear と Data Gear の単位でプログラムを記述する。 - Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在する。 - Code Gear 間の接続は次の Code Gear の番号と thread structure に相当する Context によって行われる。 - ユーザーレベルではメタ構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。 - メタレベルから見た Data Gear をユーザーレベルの Code Gear に接続するには stub という Meta Code Gear を用いる。 - stub と Meta はユーザーレベル Code Gear と Data Gear からスクリプトにより作成される。 - 変換に必要な情報はプログラムを構成する Code Gear と Data Gear の集まりから得る。 - この集まりを Interface として定義している。 - 本論文では、Interfaceを用いたプログラミングと、メタ計算の実例を示す。 +Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。 +OS の下ではプログラムの記述は通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等の記述しなければならない処理が存在する。 +これらの計算をメタ計算と呼ぶ。 +メタ計算を通常の計算から切り離して記述するために、Code Gear、Data Gear という単位を提案している。 +CbC はこの Code Gear と Data Gear の単位でプログラムを記述する。 +Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在する。 +Code Gear 間の接続は次の Code Gear の番号と thread structure に相当する Context によって行われる。 +ユーザーレベルではメタ構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。 +メタレベルから見た Data Gear をユーザーレベルの Code Gear に接続するには stub という Meta Code Gear を用いる。 +stub と Meta はユーザーレベル Code Gear と Data Gear からスクリプトにより作成される。 +変換に必要な情報はプログラムを構成する Code Gear と Data Gear の集まりから得る。 +この集まりを Interface として定義している。 +本論文では、Interfaceを用いたプログラミングと、メタ計算の実例を示す。 \end{abstract} \begin{jkeyword}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mindmap.mm Wed Dec 20 18:44:34 2017 +0900 @@ -0,0 +1,157 @@ +<map version="1.0.1"> +<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> +<node CREATED="1513759933655" ID="ID_1168102505" MODIFIED="1513760030124" TEXT="Code Gear と Data Gear を持つ Gears OS の設計"> +<font NAME="SansSerif" SIZE="13"/> +<node CREATED="1513760000390" ID="ID_1625648361" MODIFIED="1513760085629" POSITION="right" TEXT="研究目的"> +<node CREATED="1513760034116" ID="ID_499932315" MODIFIED="1513760055809" TEXT="OSの拡張性"> +<node CREATED="1513760350704" ID="ID_1274406363" MODIFIED="1513760363619" TEXT="通常計算とメタ計算の分離"/> +</node> +<node CREATED="1513760058670" ID="ID_1355477640" MODIFIED="1513760071840" TEXT="OSの信頼性"/> +</node> +<node CREATED="1513760087022" ID="ID_857848362" MODIFIED="1513760093612" POSITION="right" TEXT="軽量継続"/> +<node CREATED="1513760094654" ID="ID_949226374" MODIFIED="1513760101989" POSITION="right" TEXT="メタ計算"> +<node CREATED="1513760705804" ID="ID_1984843423" MODIFIED="1513760711659" TEXT="メモリ管理"/> +</node> +<node CREATED="1513760103900" ID="ID_468911821" MODIFIED="1513760113547" POSITION="right" TEXT="Context"> +<node CREATED="1513760191140" ID="ID_728593308" MODIFIED="1513760198195" TEXT="Data Gear"/> +<node CREATED="1513760204385" ID="ID_1993481553" MODIFIED="1513760212491" TEXT="Code Gear number"/> +<node CREATED="1513760221528" ID="ID_757603655" MODIFIED="1513760233424" TEXT="Code Gear refarence table"/> +<node CREATED="1513760238531" ID="ID_834744506" MODIFIED="1513760244114" TEXT="Data Gear number"/> +<node CREATED="1513760260632" ID="ID_1467226180" MODIFIED="1513760263514" TEXT="Task"/> +</node> +<node CREATED="1513760114290" ID="ID_463257841" MODIFIED="1513760118403" POSITION="right" TEXT="Interface"/> +<node CREATED="1513760119556" ID="ID_352808512" MODIFIED="1513760130604" POSITION="right" TEXT="生成スクリプト"/> +<node CREATED="1513760132579" ID="ID_452090203" MODIFIED="1513760160532" POSITION="right" TEXT="Stub"/> +<node CREATED="1513760160773" ID="ID_1574335740" MODIFIED="1513760178912" POSITION="right" TEXT="goto meta"/> +<node CREATED="1513760277419" ID="ID_1532139870" MODIFIED="1513760291499" POSITION="right" TEXT="比較"/> +<node CREATED="1513760291805" ID="ID_648740425" MODIFIED="1513760297425" POSITION="right" TEXT="結論"/> +<node CREATED="1513760433849" ID="ID_1885184321" MODIFIED="1513762848016" POSITION="left" TEXT="OSの拡張性とメタ計算の関係"> +<node CREATED="1513760881706" ID="ID_1909915129" MODIFIED="1513760890818" TEXT="テクノロジートランスファー"> +<node CREATED="1513760967299" ID="ID_832179108" MODIFIED="1513760983274" TEXT="アーキテクチャの変更"/> +</node> +<node CREATED="1513761005939" ID="ID_1324770157" MODIFIED="1513761017754" TEXT="コールスタックとメタ計算の衝突"> +<node CREATED="1513761034811" ID="ID_1819778725" MODIFIED="1513761052210" TEXT="軽量継続を使えばメタ計算と衝突しない"> +<node CREATED="1513762871331" ID="ID_1845422349" MODIFIED="1513762887774" TEXT="メタ計算との衝突の例"/> +</node> +</node> +</node> +<node CREATED="1513760468164" ID="ID_1964491227" MODIFIED="1513762849528" POSITION="left" TEXT="信頼性とメタ計算の関係"> +<node CREATED="1513760902250" ID="ID_1975872565" MODIFIED="1513760915018" TEXT="通常計算の検証"/> +<node CREATED="1513760925723" ID="ID_394329807" MODIFIED="1513760936714" TEXT="メタ計算を使ったモデル検査"> +<node CREATED="1513760939699" ID="ID_265631848" MODIFIED="1513760945290" TEXT="抽象"/> +</node> +<node CREATED="1513760957591" ID="ID_1884859940" MODIFIED="1513760963282" TEXT="デバッグ"/> +</node> +<node CREATED="1513760485780" ID="ID_1601229706" MODIFIED="1513762851147" POSITION="left" TEXT="Gearsでのメタ計算"> +<node CREATED="1513761059179" ID="ID_1783544646" MODIFIED="1513761615522" TEXT="stub"> +<node CREATED="1513761064415" ID="ID_598888032" MODIFIED="1513761099128" TEXT="一般的なData Gear"> +<node CREATED="1513761100328" ID="ID_708282593" MODIFIED="1513761125578" TEXT="union data から C の構造体へ変換"/> +<node CREATED="1513761144330" ID="ID_1914736492" MODIFIED="1513761169602" TEXT="関数呼出し時のコールフレームに相当する"/> +</node> +<node CREATED="1513761176818" ID="ID_828563080" MODIFIED="1513761194570" TEXT="引数の型を決めてCode Gearを送り出す"/> +</node> +<node CREATED="1513761616656" ID="ID_1147781164" MODIFIED="1513761620591" TEXT="goto meta"> +<node CREATED="1513761622813" ID="ID_106634878" MODIFIED="1513761649697" TEXT="次のCode Gearに行く途中で挿入されるメタ計算"> +<node CREATED="1513761681466" ID="ID_1232236363" MODIFIED="1513761692984" TEXT="タスク切り替え"/> +<node CREATED="1513761693690" ID="ID_1712332518" MODIFIED="1513761700625" TEXT="モデル検査"/> +<node CREATED="1513761701401" ID="ID_1464555281" MODIFIED="1513761705041" TEXT="デバッグ"/> +<node CREATED="1513761706178" ID="ID_126955738" MODIFIED="1513761718843" TEXT="GPUの処理"/> +</node> +<node CREATED="1513761654926" ID="ID_535636992" MODIFIED="1513761671697" TEXT="実際には次のstubを呼び出す"/> +</node> +</node> +<node CREATED="1513760503884" ID="ID_1687180152" MODIFIED="1513762853601" POSITION="left" TEXT="Contextの必要性"> +<node CREATED="1513761218851" ID="ID_933471793" MODIFIED="1513761225560" TEXT="Task"> +<node CREATED="1513761230329" ID="ID_206220729" MODIFIED="1513761245634" TEXT="通常のOSのスレッドに対応する"/> +<node CREATED="1513761252022" ID="ID_1925811247" MODIFIED="1513761272641" TEXT="実行するCode Gear と Data Gear をすべて持っている"/> +<node CREATED="1513761283705" ID="ID_1110011992" MODIFIED="1513761305969" TEXT="Context自体は通常計算からアクセスしない"> +<node CREATED="1513761306330" ID="ID_847787492" MODIFIED="1513761313785" TEXT="例えばポインタは出てこない"/> +<node CREATED="1513761318679" ID="ID_1073600385" MODIFIED="1513761328625" TEXT="メタレベルではポインタは出てくる"/> +</node> +</node> +<node CREATED="1513761344906" ID="ID_42801685" MODIFIED="1513761361136" TEXT="Code Gear"> +<node CREATED="1513761362241" ID="ID_1664184284" MODIFIED="1513762441701" TEXT="入力引数の型"> +<icon BUILTIN="full-2"/> +</node> +<node CREATED="1513761381991" ID="ID_1321956089" MODIFIED="1513761392657" TEXT="引数への処理"/> +<node CREATED="1513761397553" ID="ID_147785556" MODIFIED="1513761423673" TEXT="次のCode Gearに決まった引数で移行する"/> +<node CREATED="1513761429079" ID="ID_1630285576" MODIFIED="1513761441041" TEXT="Code Gear のメタ情報"> +<node CREATED="1513761448097" ID="ID_416876863" MODIFIED="1513761456529" TEXT="Code Gear のアドレス"/> +<node CREATED="1513761457298" ID="ID_951936619" MODIFIED="1513761464857" TEXT="Code Gearの実行コード"/> +<node CREATED="1513761480714" ID="ID_1686012684" MODIFIED="1513762427877" TEXT="入力の型"> +<icon BUILTIN="full-2"/> +</node> +<node CREATED="1513761495502" ID="ID_1855825436" MODIFIED="1513762431813" TEXT="出力の型"> +<icon BUILTIN="full-2"/> +</node> +<node CREATED="1513761559610" ID="ID_1631298528" MODIFIED="1513762372845" TEXT="Code Gearの番号"> +<icon BUILTIN="full-1"/> +</node> +<node CREATED="1513761594418" ID="ID_1035048411" MODIFIED="1513761600271" TEXT="Stub"/> +<node CREATED="1513761601030" ID="ID_439800382" MODIFIED="1513761604399" TEXT="goto meta"/> +</node> +</node> +<node CREATED="1513761519658" ID="ID_1032169357" MODIFIED="1513761526778" TEXT="Data Gear"> +<node CREATED="1513761526779" ID="ID_1540589097" MODIFIED="1513761767481" TEXT="Data Gear のメタ情報"> +<node CREATED="1513761540242" ID="ID_1640042783" MODIFIED="1513762436533" TEXT="格納する引数の型"> +<icon BUILTIN="full-2"/> +</node> +<node CREATED="1513761552346" ID="ID_1449646410" MODIFIED="1513761558700" TEXT="番号"/> +<node CREATED="1513761578738" ID="ID_1026576907" MODIFIED="1513761591929" TEXT="Meta Data Gear へのポインタ"/> +</node> +</node> +<node CREATED="1513761828725" ID="ID_61367354" MODIFIED="1513761836385" TEXT="Meta Data Gear"> +<node CREATED="1513761839728" ID="ID_1213178012" MODIFIED="1513761850033" TEXT="メモリのリニアアロケーション用のポインタ"/> +<node CREATED="1513761851125" ID="ID_1792364876" MODIFIED="1513761862327" TEXT="Task Queue"/> +<node CREATED="1513761874624" ID="ID_152362819" MODIFIED="1513761882688" TEXT="Code Gear table"/> +<node CREATED="1513761883521" ID="ID_678500932" MODIFIED="1513761892936" TEXT="Data Gear table"/> +</node> +</node> +<node CREATED="1513760513028" ID="ID_480632406" MODIFIED="1513760522259" POSITION="left" TEXT="Interfaceの必要性"> +<node CREATED="1513761940353" ID="ID_248016039" MODIFIED="1513761995064" TEXT="CodeとDataの集合を表すData Gear"/> +<node CREATED="1513761997774" ID="ID_1365760236" MODIFIED="1513762013592" TEXT="モジュールとかオブジェクトに対応する"/> +<node CREATED="1513762028726" ID="ID_1773732250" MODIFIED="1513762044376" TEXT="決まった引数を持つメソッドのスロット"> +<node CREATED="1513762049377" ID="ID_123153703" MODIFIED="1513762072304" TEXT="Code Gear の番号が入る"> +<node CREATED="1513762206633" ID="ID_887586608" MODIFIED="1513762217919" TEXT="interface の実装"/> +</node> +</node> +<node CREATED="1513762086838" ID="ID_1683727777" MODIFIED="1513762095576" TEXT="引数を格納するData Gear"> +<node CREATED="1513762149149" ID="ID_672075127" MODIFIED="1513762157416" TEXT="特に戻り先がある"/> +</node> +<node CREATED="1513762165943" ID="ID_1780428913" MODIFIED="1513762175488" TEXT="一段のサブルーチンコール"/> +<node CREATED="1513762184705" ID="ID_1142267610" MODIFIED="1513762197176" TEXT="これによってGearsをモジュール化する"/> +</node> +<node CREATED="1513762235885" ID="ID_1364001043" MODIFIED="1513762257184" POSITION="left" TEXT="stub と Context の生成"> +<node CREATED="1513762311768" ID="ID_1756076963" MODIFIED="1513762361198" TEXT="code gear の番号"> +<icon BUILTIN="full-1"/> +</node> +<node CREATED="1513762378721" ID="ID_1309128215" MODIFIED="1513762419478" TEXT="Data Gear の型"> +<icon BUILTIN="full-2"/> +</node> +<node CREATED="1513762489861" ID="ID_756579895" MODIFIED="1513762505055" TEXT="Data Gear の番号"/> +<node CREATED="1513762507680" ID="ID_1732211810" MODIFIED="1513762516959" TEXT="Stubの生成"/> +</node> +<node CREATED="1513760532728" ID="ID_1228592616" MODIFIED="1513760568243" POSITION="left" TEXT="比較"> +<node CREATED="1513760568243" ID="ID_1608348636" MODIFIED="1513760578857" TEXT="既存のOS"> +<node CREATED="1513762542024" ID="ID_1566570822" MODIFIED="1513762563471" TEXT="ユーザーレベルとシステムレベルを持っている"/> +<node CREATED="1513762567376" ID="ID_739022857" MODIFIED="1513762583431" TEXT="システムレベルではメタ計算の分離はない"/> +<node CREATED="1513762584728" ID="ID_159373267" MODIFIED="1513762595967" TEXT="Gearsではメタ計算を階層化できる"/> +<node CREATED="1513762601944" ID="ID_1769391569" MODIFIED="1513762638905" TEXT="プロセスやファイルが型を持っていない"/> +<node CREATED="1513762620744" ID="ID_661511565" MODIFIED="1513762630063" TEXT="Gearsは型を持っている"/> +<node CREATED="1513762731812" ID="ID_1655164257" MODIFIED="1513762782265" TEXT="既存のOSでメタ計算を使おうとするとOSを書き換える必要がある"/> +</node> +<node CREATED="1513760580640" ID="ID_908909110" MODIFIED="1513760591843" TEXT="リアルタイムモニタ"> +<node CREATED="1513762640016" ID="ID_1575024579" MODIFIED="1513762653991" TEXT="OSの一種の簡略バージョン"/> +<node CREATED="1513762658144" ID="ID_1543870637" MODIFIED="1513762664463" TEXT="Gearsに近い"/> +<node CREATED="1513762665184" ID="ID_23077089" MODIFIED="1513762681727" TEXT="APIを使って資源管理を行う"/> +<node CREATED="1513762682128" ID="ID_1943328902" MODIFIED="1513762717704" TEXT="Gears OSの場合はメタ計算を使って行う "/> +</node> +<node CREATED="1513760592628" ID="ID_214777962" MODIFIED="1513760600505" TEXT="GPGPU"/> +</node> +<node CREATED="1513760606198" ID="ID_396827059" MODIFIED="1513760780939" POSITION="left" TEXT="結論"> +<node CREATED="1513760623051" ID="ID_755908511" MODIFIED="1513760643914" TEXT="GearsOSのメタ計算部分の実装例を示した"/> +<node CREATED="1513760815807" ID="ID_434575356" MODIFIED="1513760822266" TEXT="メタ計算の有効性"/> +<node CREATED="1513760823196" ID="ID_704467311" MODIFIED="1513760836410" TEXT="Interfaceの有用性"/> +</node> +</node> +</map>