1
|
1 title: Monadに基づくMeta計算を基本とするGears OSの設計
|
|
2 author: Tatsuki IHA
|
|
3 profile:
|
|
4 lang: Japanese
|
|
5 code-engine: coderay
|
|
6
|
|
7 # 研究目的
|
|
8 - 当研究室では, プログラムをコードセグメント, データセグメントを用いた並列フレームワークの開発を行っている.
|
|
9 - Gears OSでは, 並列実行に必要なMetaな機能を関数型言語におけるMonadの原理に基づいて実現する.
|
|
10 - また, Code Segment, Data SegmentそれぞれにMeta Code Segment, Meta Data Segmentを付属させ,Many CoreやGPGPU環境でも信頼性の高い並列処理を実現する.
|
|
11 - この研究ではGears OSの機能をCbC(Continuation based C)で実装、評価することを目的とする.
|
|
12
|
|
13
|
|
14 # 近況
|
|
15 - GearsによるCeriumの実装
|
|
16 - あんまり進んでないです
|
|
17
|
|
18 # 動かしたい例題
|
|
19 - temporaryなDS同士の計算
|
|
20 - 最初はInt型の足し算などをscheduleringして演算をする
|
|
21
|
|
22 # TaskManager
|
|
23
|
|
24 # Create Task
|
|
25 - 新しいcontextを作成してinputのQueueにいれる
|
|
26
|
|
27 ```
|
|
28 __code code1(Context *context) {
|
|
29 goto create_task();
|
|
30 }
|
|
31
|
|
32 __code create_task(Context *context) {
|
|
33 init_context(context);
|
|
34 goto put(context);
|
|
35 }
|
|
36 ```
|
|
37
|
|
38 # scheduler
|
|
39 - 他のDSを用意している間に他のDSを実行する
|
|
40 - taskのpoolからschedulerがtaskをとる
|
|
41 - schedulerが待ちtaskを取り合う
|
|
42
|
|
43 # set input
|
|
44 -
|
|
45
|
|
46 # set output
|
|
47
|
|
48
|
|
49 # wait for
|
|
50 <style scoped>
|
|
51 pre {
|
|
52 font-size: 20px;
|
|
53 }
|
|
54 </style>
|