Mercurial > hg > Papers > 2023 > nana-sigos
changeset 11:63d535445937
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 16 May 2023 17:57:27 +0900 |
parents | cd9a64cadfc0 |
children | df5949e879e7 |
files | presen.ind |
diffstat | 1 files changed, 135 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/presen.ind Sat May 13 18:30:07 2023 +0900 +++ b/presen.ind Tue May 16 17:57:27 2023 +0900 @@ -1,6 +1,34 @@ -title: Gears OSの CodeGear Management --author: 仲吉菜々子, 河野真治 \n 琉球大学工学部 +-author: 仲吉菜々子, 河野真治 琉球大学工学部 + +--版管理は信頼性に直結する + + 簡単なアプリでも数十のライブラリに依存 + + これらを放置して信頼性の管理は不可能 + + OSがそれをやらないのは怠慢 + + 例えば Ruby のGemfile (moduleのversionの一覧) + +--システム全体の信頼性には code をOSが管理するべき + + code pool があって、正しい組み合わせだけが許される + + 実際に簡易な Model 検査を走らせても良い (Coverageのみとか) + + code の組み合わせの記述は例えば Ruby の Gemfile のようなもの + + ちゃんと動くかどうかの検証は外部で行う + +--codeGear は管理の単位によい + + 入出力のdataGearで型が決まる + + 動作は pure functional + + Model 検査などが可能 --3種類のGears OS @@ -12,7 +40,7 @@ single a.out no code loading - all startic linked + all static linked converting .cbc to .c context (process を表す dataGear ) @@ -35,19 +63,11 @@ 次の継続の引数を Context に書き込む部分 stub がある -stab は番号付けられていて Context の code table に格納される +stub は番号付けられていて Context の code table に格納される goto meta で番号で行き先を指定する ---システム全体の信頼性には code をOSが管理するべき -code pool があって、正しい組み合わせだけが許される - -実際に簡易な Model 検査を走らせても良い (Coverageのみとか) - -code の組み合わせの記述は例えば Ruby の Gemfile のようなもの - -ちゃんと動くかどうかの検証は外部で行う --codeGear の dynamic loading @@ -55,6 +75,8 @@ それがつじつまがあっていれば表に登録するだけで良い + input/output のdataGear のoffset + Context 上の interface の位置はシステム内では codeGear load 時に決まる つまり link は簡単 @@ -69,8 +91,109 @@ 前もって複数のcodeをまとめてコンパイルすることで余計な書き込みを避けられる +--Context の互換性 (引数 + +codeGearの引数は context の決まった場所に格納されて取り出される + +context切り替えが起きないなら、registerに置いてよい (実際、最適化される + +この時のoffsetがずれると codeGear の互換性はない + +--Context の互換性 (継続 + +次の codeGear は番号で指定される + +番号から code table を引いて stub を呼び出す + +これも static link で最適化される + +番号は codeGear を load した時に決まる + +--Meta 計算 + +Meta 計算はコンパイル時と実行時の両方で起きる + +goto meta の行き先を変更することで Meta 計算を変更する + +static link されたものの行き先を変更することも可能 + +--codeGear Library + +変数の名前や順序を無視した同一性 + +Turing complete な固定単位 + +変換して同一な場合 + +検索方法 + +有限なもので十分? + +メタ計算の同一性 + --validity ---x.v6 implementatiion +プログラム全体の正しさ + +ライブラリとしての正しさ + +if だけからみた codeGearの実行可能性 + malloc error とか + +check したものとしてないものを区別する + +--x.v6 implementation + +x.v6 では exec で a.out を load する + +codeGear の kernel / user space への load + +実行時に context の code table を設定する + +kernel も codeGear で実装されている + +<center><img src="fig/codetable.svg"></center> + +--x.v6 implementation boot + +UEFI で最小限の codeGear と linker / scheduler をload + +codeGear library server + +<center><img src="fig/gears_structure.svg"></center> +--x.v6 implementation paging + +検証されてるなら、paging でメモリ空間をわける必要はない + +検証されないものを動かす場合には必要 + +使用しない codeGear や dataGear を仮想メモリに設定する必要はない + +--それでもエラーが起きる場合 + +検証ミス (万能じゃない + +隔離された実行から外に出る場合 + +ハードウェアエラー + +メモリエラー + +--まとめ + +codeGear を OSで管理する方法について考察した + +codeGear 自体は自身に閉じている + +実行時に code table で link される + +stub と goto meta で Context から読み書きする + +static link で最適化される + + + + +