20
|
1 title: Gears OS
|
|
2 author: Tatsuki IHA
|
|
3 profile:
|
|
4 lang: Japanese
|
|
5 code-engine: coderay
|
|
6
|
|
7 # 研究目的
|
|
8 - 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している
|
|
9 - Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う
|
|
10 - 現在のGears OS は 依存関係がある並列処理を行うことが出来ない。 今研究ではGears OS の依存関係の解決を目標とする
|
|
11
|
|
12 # 夏休みイベント
|
|
13 - ワークショップどうしよう
|
|
14
|
|
15 # ワークショップ
|
|
16 - M1 主催で研究計画書かしてよろしく!
|
|
17 - M1 が思ったより少ないので M2 もよろしく!
|
|
18
|
|
19 # Dependency は?
|
|
20 - 絶賛デバッグ中
|
|
21 - ``context->next`` を結構多用してるので直す
|
|
22 - 実行する CS
|
|
23
|
|
24 ``` c
|
|
25 __code add(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) {
|
|
26 output->value = input1->value + input2->value;
|
|
27 printf("%d + %d = %d\n", input1->value, input2->value, output->value);
|
|
28 goto meta(context, context->next);
|
|
29 }
|
|
30
|
|
31 __code add_stub(struct Context* context) {
|
|
32 goto add(context,
|
|
33 (struct Integer*)((struct Task*)(context->data[Element]->element.data))->iargs[0],
|
|
34 (struct Integer*)((struct Task*)(context->data[Element]->element.data))->iargs[1],
|
|
35 (struct Integer*)((struct Task*)(context->data[Element]->element.data))->oargs[0]);
|
|
36 }
|
|
37
|
|
38 // こう書きたい?
|
|
39 // input と output の区別を付けたい
|
|
40 //
|
|
41
|
|
42 __code add(struct Integer* input1, struct Integer* input2) {
|
|
43 output->value = input1->value + input2->value;
|
|
44 printf("%d + %d = %d\n", input1->value, input2->value, output->value);
|
|
45 goto next
|
|
46 }
|
|
47 ```
|
|
48
|
|
49 # 来週
|
|
50 - 東京にいます
|