view slide/sigos.md @ 16:22deadcd8653

add slide
author e165723 <e165723@ie.u-ryukyu.ac.jp>
date Thu, 23 May 2019 18:29:30 +0900
parents
children 8b0d4a70ef47
line wrap: on
line source

title: 継続を用いたxv6 kernelの書き換え
author: Takahiro Sakamoto, Yu Tobaru, Shinji Kono

profile: 琉球大学工学部情報工学科並列信頼研

<!-- ## 本発表の流れ -->
<!-- * 研究目的 -->
<!-- * CbC の説明 -->
<!-- * -->
<!-- * Interface の説明 -->
<!-- * -->
<!-- * 実際に行なった書き換え-->
<!-- * まとめ -->

# xv6 を継続で書き換える意味


# Continuatuin based C
* Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。
* Code Gear は 関数呼び出し時の環境を使わずに次の Code Gear へと goto 文によって遷移する。
* この goto 文による遷移を軽量継続と呼ぶ。
* CbC は軽量継続を持ち、C と互換性のある言語である

# CbC のコード例
* CbC では Code Gear は *__code* という型を持つ関数の構文で定義される。
* Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。
* goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。
* この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。

*__code* cg0(int a, int b){
  goto cg1(a+b);
}

*__code* cg1(int c){
  goto cg2(c);
}

# Gears におけるメタ計算
* Gears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。
* Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。
* Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。

# Interface
* Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。
* Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。
* Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。

# xv6 の CbC への書き換え

# xv6-rpi の CbC 対応

# CbC によるシステムコールの書き換え

# まとめと今後の方針