Mercurial > hg > Members > innparusu > slides
diff 2015/2015_05_19/slide.md @ 1:3b7da0b661cc
Add slide.md
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 Aug 2015 18:12:46 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2015/2015_05_19/slide.md Tue Aug 04 18:12:46 2015 +0900 @@ -0,0 +1,42 @@ +title: Monadに基づくMeta計算を基本とするGears OSの設計 +author: Tatsuki IHA +profile: +lang: Japanese + +# 研究目的 +- 当研究室では, プログラムをコードセグメント, データセグメントを用いた並列フレームワークの開発を行っている. +- 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](./pictures/GearBoxExample.svg) + +# Gear Box +![MetaGearBoxExample](./pictures/MetaGearBoxExample.svg) + +# Synchronized Queue +![GearBoxExample](./pictures/synchronizedQueueSender.svg) + +# Synchronized Queue +![GearBoxExample](./pictures/synchronizedQueueReceiver.svg) + +# 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を行う