view 2015/2015_05_25/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 source

title: Monadに基づくMeta計算を基本とするGears OSの設計
author: Tatsuki IHA
profile:
lang: Japanese
code-engine: coderay

# 研究目的
- 当研究室では, プログラムをコードセグメント, データセグメントを用いた並列フレームワークの開発を行っている.
- 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を行う

# hoge
<% coderay do %>
def hello
  puts "hoge"
end
<% end %>