comparison 2017/2017_01_10/slide.md @ 22:bf593e6958b1

Update
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 21 Mar 2017 23:58:48 +0900
parents
children
comparison
equal deleted inserted replaced
21:585dd2901c9e 22:bf593e6958b1
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 - 依存関係の解決やモデル検査等の本論の計算を行うためのメタな計算を Meta Code Gear で行う.
11 - 現在の Gears では Stack や Queue の operatation の API が存在しなため, 記述が困難になっている. そのため, この研究では Gears OS における API の記述方法を設計し, 実装する
12
13
14 ## 冬休み
15 - 寝正月
16 - Gears の Queue と Stack のテストコードを動かす
17 - module 別のcontext の生成はうまく動いてます
18 - 動いた
19 - Gears Task 生成 & inqueue までは動いた
20 - next Worker 実装
21
22 ## Worker実装
23 - Worker 毎に Synchronized Queueをもたせる
24 - TaskManager から Worker の Queue にTask を入れる
25
26 ```
27 __code taskSend(struct Context* context, TaskManager* taskManger, LoopCounter* loopCounter) {
28 if(loopCounter->i < taskManager->numWorker) {
29 taskManager->workers[i]->taskSend;
30 loopCounter->i++;
31 goto meta(context, taskManager->taskSend);
32 }
33 goto meta(context, TaskManager->next);
34 }
35 ```
36
37 ## Worker 実装
38 - Worker側のtaskReceive
39 - task を receive するとQueue に task が入っているので, とりだして task を execute する
40
41 ```
42 __code taskReceive(struct Context* context) {
43 queue->queue = (union Data*)worker->worker->Worker.tasks;
44 queue->next = worker->execute;
45 goto meta(context, queue->queue->Queue.take);
46 }
47 ```
48
49 ##