Mercurial > hg > Members > innparusu > slides
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 %>