Mercurial > hg > Members > innparusu > slides
comparison 2016/2016_04_26/slide.md @ 16:216de41a6219
Update
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 May 2016 01:53:06 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:374be92a8d73 | 16:216de41a6219 |
---|---|
1 title: Gears OS の依存関係の解決 | |
2 author: Tatsuki IHA | |
3 profile: | |
4 lang: Japanese | |
5 code-engine: coderay | |
6 # 研究目的 | |
7 - 当研究室では 処理の単位を Code Segment、 データの単位を Data Segment を用いて 信頼性が高い並列処理を行う Gears OS を開発している | |
8 - Gears OS では Task を Code Segment と実行するときに必要な Input Data Segment と出力するための Output Data Segment の組で表現される。 Input Data Segment/Output Data Segment によって依存関係が決定し、それにそって並列実行を行う | |
9 - 現在のGears OS は 依存関係がある並列処理を行うことが出来ない。 この研究ではGears OS の依存関係の解決を目標とする | |
10 | |
11 # 今週 | |
12 - dependency を書いてます | |
13 | |
14 # Cerium の wait_for | |
15 - Cerium は依存関係を解決するためにwait_me, wait_i という2つのQueueInfo<TaskQueue>をtaskが持っている | |
16 - task a を実行してから task bを実行する場合 | |
17 - task a の wait_me に slave の task を add する | |
18 - task b の wait_i に master の task を add する | |
19 | |
20 # Cerium の spawn_task | |
21 - spawn_task 時にwait_i にtaskが入ってないかチェック | |
22 - empty の場合 activeTaskQueueにtaskを入れる | |
23 - empty ではない場合 waitTaskQueueにtaskを入れる | |
24 | |
25 # Cerium の例 | |
26 - つまり a -> b -> c という依存の場合 | |
27 - b の wait_i には a がaddされる | |
28 - b wait_me には c がaddされる | |
29 | |
30 # Gears で実装する場合 | |
31 - wait_me, wait_i 的なものを用意する | |
32 - wait_me , wait_i に task を入れる | |
33 - しかし、Gears では ds も考慮しなければならない | |
34 - ds は llrb にputされる | |
35 - 木のkeyでも入れる用のlistをTaskに持たせるか | |
36 - IDS の数を保持して wait_i に 終わった task の ODS のstruct を入れる | |
37 - 展開して ods を取る | |
38 - schedulerがsingle thread で走らせ、 依存関係を監視する(wait task と active task) | |
39 - task cs が終わったthread は scheduler に終了を伝える |