comparison Slide/prosym.html @ 9:5790bdc1d515

add gears_structure
author tobaru
date Mon, 21 May 2018 17:18:19 +0900
parents f275411f458d
children d4e58a38aae7
comparison
equal deleted inserted replaced
8:f275411f458d 9:5790bdc1d515
84 84
85 <div class='slide '> 85 <div class='slide '>
86 <!-- === begin markdown block === 86 <!-- === begin markdown block ===
87 87
88 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] 88 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15]
89 on 2018-05-20 21:27:27 +0900 with Markdown engine kramdown (1.13.2) 89 on 2018-05-21 16:36:00 +0900 with Markdown engine kramdown (1.13.2)
90 using options {} 90 using options {}
91 --> 91 -->
92 92
93 <!-- _S9SLIDE_ --> 93 <!-- _S9SLIDE_ -->
94 <h2 id="gears-os">Gears OS</h2> 94 <h2 id="gears-os">Gears OS</h2>
95 <ul> 95 <ul>
96 <li>現代のOS では拡張性と信頼性を両立させることが要求されている。 96 <li>現代のOS では拡張性と信頼性を両立させることが要求されている。
97 <ul> 97 <ul>
98 <li>時代と共にハードウェア、サービスが進歩していき、その度に OS を検証できる必要があるため、拡張性が必要。</li> 98 <li>時代と共にハードウェア、サービスが進歩していき、その度に OS を検証できる必要があるため、拡張性が必要。</li>
99 <li>OS は非決定的な実行を持ち、従来の OS ではテストしきれない部分が残ってしまうため、信頼性が欠けてしまう。</li> 99 <li>OS は非決定的な実行を持ち、従来の OS ではテストしきれない部分が残ってしまうため、信頼性が欠けてしまうので信頼性のある OS が必要。</li>
100 </ul> 100 </ul>
101 </li> 101 </li>
102 <li>本研究室では、それらを実現することを目標に Gears OS の開発を行なっている。</li> 102 <li>本研究室では、拡張性と信頼性を実現することを目標に Gears OS の開発を行なっている。</li>
103 </ul> 103 </ul>
104 104
105 105
106 </div> 106 </div>
107 <div class='slide '> 107 <div class='slide '>
119 <!-- _S9SLIDE_ --> 119 <!-- _S9SLIDE_ -->
120 <h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2> 120 <h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2>
121 <ul> 121 <ul>
122 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> 122 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li>
123 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> 123 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li>
124 <li>Logic としては、依存型関数言語である Agda を使う(前の発表)</li> 124 <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li>
125 <li>証明とモデル検査を使って、信頼性を確保する</li> 125 <li>証明とモデル検査を使って、信頼性を確保する</li>
126 </ul> 126 </ul>
127 127
128 128
129 </div> 129 </div>
145 </div> 145 </div>
146 <div class='slide '> 146 <div class='slide '>
147 <!-- _S9SLIDE_ --> 147 <!-- _S9SLIDE_ -->
148 <h2 id="api">並列API</h2> 148 <h2 id="api">並列API</h2>
149 <ul> 149 <ul>
150 <li>Geas OS 信頼性を保証するために、形式化されたモジュールシステムが必要である。</li> 150 <li>Geas OS 信頼性を保証するために、モジュールシステムが必要である。</li>
151 <li>本研究では、モジュールシステムとその応用である並列APIについて考察する。</li> 151 <li>本研究では、モジュールシステムとその応用である並列APIについて考察する。</li>
152 <li>並列APIは継続を基本とした関数型プログラミングと両立する必要があり、ここでは CbC の goto 文を拡張した par goto を導入する。</li> 152 <li>並列APIは継続を基本とした関数型プログラミングと両立する必要があり、ここでは CbC の goto 文を拡張した par goto を導入する。</li>
153 </ul> 153 </ul>
154 154
155 155
254 254
255 </div> 255 </div>
256 <div class='slide '> 256 <div class='slide '>
257 <!-- _S9SLIDE_ --> 257 <!-- _S9SLIDE_ -->
258 <h2 id="gears-os-">Gears OS の構造</h2> 258 <h2 id="gears-os-">Gears OS の構造</h2>
259 <ul>
260 <li>Gears OS は以下の要素で構成されている
261 <ul>
262 <li>Context</li>
263 <li>TaskQueue</li>
264 <li>TaskManager</li>
265 <li>Worker</li>
266 </ul>
267 </li>
268 </ul>
269
259 <div style="text-align: center;"> 270 <div style="text-align: center;">
260 <img src="./image/gearsos.svg" alt="Gears OS の構造" width="600" /> 271 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" />
261 </div> 272 </div>
262 273
263 274
264 </div> 275 </div>
265 <div class='slide '> 276 <div class='slide '>
308 <li>Code Gear と Data Gear の依存関係をノーマルレベルで記述できるようになる。</li> 319 <li>Code Gear と Data Gear の依存関係をノーマルレベルで記述できるようになる。</li>
309 </ul> 320 </ul>
310 <pre><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { 321 <pre><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) {
311 par goto add(integer1, integer2, output, __exit); 322 par goto add(integer1, integer2, output, __exit);
312 goto code2(); 323 goto code2();
324 }
325 </code></pre>
326
327
328 </div>
329 <div class='slide '>
330 <!-- _S9SLIDE_ -->
331 <h2 id="perl--meta-data-gear-">Perl スクリプトによる Meta Data Gear の生成</h2>
332
333 <pre lang="c"><code>__code code1(struct Context *context, Integer *integer1, Integer *integer2, Integer *output) {
334 // create context
335 context-&gt;task = NEW(struct Context);
336 initContext(context-&gt;task);
337
338 // set task parameter
339 context-&gt;task-&gt;next = C_add;
340 context-&gt;task-&gt;idgCount = 2;
341 context-&gt;task-&gt;idg = context-&gt;task-&gt;dataNum;
342 context-&gt;task-&gt;maxIdg = context-&gt;task-&gt;idg + 2;
343 context-&gt;task-&gt;odg = context-&gt;task-&gt;maxIdg;
344 context-&gt;task-&gt;maxOdg = context-&gt;task-&gt;odg + 1;
345
346 // create Data Gear Queue
347 GET_META(integer1)-&gt;wait = createSynchronizedQueue(context);
348 GET_META(integer2)-&gt;wait = createSynchronizedQueue(context);
349 GET_META(integer3)-&gt;wait = createSynchronizedQueue(context);
350
351 // set Input Data Gear
352 context-&gt;task-&gt;data[context-&gt;task-&gt;idg+0] = (union Data*)integer1;
353 context-&gt;task-&gt;data[context-&gt;task-&gt;idg+1] = (union Data*)integer2;
354
355 // set Output Data Gear
356 context-&gt;task-&gt;data[context-&gt;task-&gt;odg+0] = (union Data*)integer3;
357
358
359 // set TaskManager-&gt;spawns parameter
360 Gearef(context, TaskManager)-&gt;taskList = context-&gt;taskList;
361 Gearef(context, TaskManager)-&gt;next1 = C_code2;
362 goto parGotoMeta(context, C_code2);
313 } 363 }
314 </code></pre> 364 </code></pre>
315 365
316 366
317 </div> 367 </div>