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 # data segmentを参照するsyntax
|
|
14
|
|
15 ```
|
|
16 __code code1(struct Context* context, enum Code next) {
|
|
17 context->data[Allocate]->allocate.size = .....;
|
|
18 }
|
|
19 ```
|
|
20
|
|
21 # data segmentを参照するsyntax
|
|
22 ```
|
|
23 __code code1(struct Context* context, enum Code next) {
|
|
24 union Data *ds1;
|
|
25 ds1 = get_data_segment(context, Allocate);
|
|
26 ds1->allocate.size = .....;
|
|
27 }
|
|
28
|
|
29 union Data* get_data_segment(struct Context* context, int key) {
|
|
30 return context->data[key];
|
|
31 }
|
|
32 ```
|
|
33
|
|
34 # data segmentを参照するsyntax
|
|
35 ```
|
|
36 __code code1(struct Allocate allocate) {
|
|
37 allocate.size = .....;
|
|
38 }
|
|
39 ```
|
|
40
|
|
41 # Cerium on Gears
|
|
42
|
|
43
|
|
44 <style scoped>
|
|
45 pre {
|
|
46 font-size: 20px;
|
|
47 }
|
|
48 </style>
|