diff paper/anatofuz-sigos.md @ 23:2be09c284a2e

add meta-cg-dg.pdf
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 04 May 2020 14:25:42 +0900
parents d933923009db
children d2a1d3d75484
line wrap: on
line diff
--- a/paper/anatofuz-sigos.md	Mon May 04 11:43:11 2020 +0900
+++ b/paper/anatofuz-sigos.md	Mon May 04 14:25:42 2020 +0900
@@ -84,8 +84,11 @@
 GearsOSでは、 CodeGearとDataGearを元にプログラミングを行う。
 遷移する各CodeGearの実行に必要なデータの整合性の確認などのメタ計算は、 MetaCodeGearと呼ばれる各CodeGearごと実装されたCodeGearで計算を行う。
 このMetaCodeGearの中で参照されるDataGearをMetaDataGearと呼ぶ。
-Contextそのものは、 DataGearの実行に必要なMetaDataGearである。
-プログラマがプログラミングする上では別のCodeGearに直接遷移している様に見えるが、 実際はMetaCodeGearを一度経由してからCodeGearに遷移する。
+
+各CodeGearの入出力や、各CodeGearそのものの関数ポインタなどは、関数型プログラミングの側面から見るとプログラマが直接操作するのを禁じる必要がある。
+このためにGearsOSには実行する処理に必要なCodeGear及びDataGearを管理する、 contextというMetaDataGearが存在する。
+コード上では別のCodeGearに直接遷移している様に見えるが、 実際はContext内の遷移先のCodeGearに対応するスロットから、対応するMetaCodeGearに遷移する。
+これらの変換はPerlスクリプトによって、 GearsOSのビルド時に静的に行われる。
 
 # xv6 kernel
 
@@ -111,3 +114,4 @@
 したがって特定の関数内の処理のBasicBlockを分析し、 BasicBlockに対応したCodeGearへ変換することで状態遷移系への変換を行った。
 
 
+![perf, perl](./fig/meta-cg-dg.pdf)