Monadに基づくMeta計算を基本とするGears OSの設計
Tatsuki IHA
Monadに基づくMeta計算を基本とするGears OSの設計
Tatsuki IHA
研究目的
当研究室では, プログラムをコードセグメント, データセグメントを用いた並列フレームワークの開発を行っている.
Gears OSでは, 並列実行に必要なMetaな機能を関数型言語におけるMonadの原理に基づいて実現する.
また, Code Segment, Data SegmentそれぞれにMeta Code Segment, Meta Data Segmentを付属させる.
この研究ではGears OSの機能をCbC(Continuation based C)で実装、評価することを目的とする.
Gear Box
基本はState Diagramで記述
State DiagramのStateをCode Gear(Code Segment)
Code Gear間にData Gear(Data Segment)を記述
Gear Box
Gear Box
Synchronized Queue
Synchronized Queue
Synchronized Queue
各Threadに共通のData Gearをもたせる
Meta Code Segmentでsynchronizedを表現する
つまり, Meta Code Segmentを書き換えることで実装を変更できる
Synchronized Queue
CASでの実装
Meta Put, Meta GetでCasを行い, Data Gearを更新
pthread_mutex_lockでの実装
Meta Sender, Meta ReciverでData Gearをlock
Meta Put, Meta Getでunlock
Semphoreでの実装
読み込み用, 書き込み用のSemphoreを用意
Meta Put, Meta Getでsem_p, sem_vを行う