Mercurial > hg > Papers > 2019 > menikon-sigos
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 によるシステムコールの書き換え # まとめと今後の方針