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

GearBoxExample

Gear Box

MetaGearBoxExample

Synchronized Queue

GearBoxExample

Synchronized Queue

GearBoxExample

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を行う