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 で最適化される
+
+
+
+
+