0
|
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 - Data SegmentへのアクセスのsyntaxをList, Synchronized Queueに適応
|
|
16
|
|
17 # 従来のDSへのアクセス
|
|
18 - contextからDataの配列にアクセスする
|
|
19
|
|
20 # 従来のDSへのアクセス
|
|
21 ```
|
|
22 __code code1(struct Context* context) {
|
|
23 context->data[Allocate]->allocate.size = .....;
|
|
24 context->data[Allocate]->allocate.next = .....;
|
|
25 goto meta(context, Allocator);
|
|
26 }
|
|
27 ```
|
|
28
|
|
29 # stubを経由したDSへのアクセス
|
|
30 - Code Segmentは必要なDSを引数として取る
|
|
31 - 全てのCSに対してstubを用意し, 必要なDSをstubで指定してCSを呼ぶ
|
|
32 - stubは現在は直接書いているが, Compile時に生成されて欲しい
|
|
33
|
|
34 # stubを経由したDSへのアクセス
|
|
35 ```
|
|
36 __code code1(struct Context* context, struct Allocate* allocate) {
|
|
37 allocate->size = .....;
|
|
38 allocate->next = .....;
|
|
39 goto meta(context, Allocator);
|
|
40 }
|
|
41 __code code1_stub(struct Context* context) {
|
|
42 goto code1(context, &context->data[Allocate]->allocate);
|
|
43 }
|
|
44 ```
|
|
45
|
|
46
|
|
47
|
|
48 <style scoped>
|
|
49 pre {
|
|
50 font-size: 20px;
|
|
51 }
|
|
52 </style>
|