Mercurial > hg > Papers > 2018 > tobaru-sigos
diff Slide/prosym.pdf.html @ 9:5790bdc1d515
add gears_structure
author | tobaru |
---|---|
date | Mon, 21 May 2018 17:18:19 +0900 |
parents | f275411f458d |
children | d4e58a38aae7 |
line wrap: on
line diff
--- a/Slide/prosym.pdf.html Sun May 20 21:28:30 2018 +0900 +++ b/Slide/prosym.pdf.html Mon May 21 17:18:19 2018 +0900 @@ -70,7 +70,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] - on 2018-05-20 21:27:27 +0900 with Markdown engine kramdown (1.13.2) + on 2018-05-21 16:36:00 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -80,10 +80,10 @@ <li>現代のOS では拡張性と信頼性を両立させることが要求されている。 <ul> <li>時代と共にハードウェア、サービスが進歩していき、その度に OS を検証できる必要があるため、拡張性が必要。</li> - <li>OS は非決定的な実行を持ち、従来の OS ではテストしきれない部分が残ってしまうため、信頼性が欠けてしまう。</li> + <li>OS は非決定的な実行を持ち、従来の OS ではテストしきれない部分が残ってしまうため、信頼性が欠けてしまうので信頼性のある OS が必要。</li> </ul> </li> - <li>本研究室では、それらを実現することを目標に Gears OS の開発を行なっている。</li> + <li>本研究室では、拡張性と信頼性を実現することを目標に Gears OS の開発を行なっている。</li> </ul> @@ -105,7 +105,7 @@ <ul> <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> - <li>Logic としては、依存型関数言語である Agda を使う(前の発表)</li> + <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li> <li>証明とモデル検査を使って、信頼性を確保する</li> </ul> @@ -131,7 +131,7 @@ <!-- _S9SLIDE_ --> <h2 id="api">並列API</h2> <ul> - <li>Geas OS 信頼性を保証するために、形式化されたモジュールシステムが必要である。</li> + <li>Geas OS 信頼性を保証するために、モジュールシステムが必要である。</li> <li>本研究では、モジュールシステムとその応用である並列APIについて考察する。</li> <li>並列APIは継続を基本とした関数型プログラミングと両立する必要があり、ここでは CbC の goto 文を拡張した par goto を導入する。</li> </ul> @@ -240,8 +240,19 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h2 id="gears-os-">Gears OS の構造</h2> +<ul> + <li>Gears OS は以下の要素で構成されている + <ul> + <li>Context</li> + <li>TaskQueue</li> + <li>TaskManager</li> + <li>Worker</li> + </ul> + </li> +</ul> + <div style="text-align: center;"> - <img src="./image/gearsos.svg" alt="Gears OS の構造" width="600" /> + <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> </div> @@ -301,6 +312,45 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h2 id="perl--meta-data-gear-">Perl スクリプトによる Meta Data Gear の生成</h2> + +<pre lang="c"><code>__code code1(struct Context *context, Integer *integer1, Integer *integer2, Integer *output) { + // create context + context->task = NEW(struct Context); + initContext(context->task); + + // set task parameter + context->task->next = C_add; + context->task->idgCount = 2; + context->task->idg = context->task->dataNum; + context->task->maxIdg = context->task->idg + 2; + context->task->odg = context->task->maxIdg; + context->task->maxOdg = context->task->odg + 1; + + // create Data Gear Queue + GET_META(integer1)->wait = createSynchronizedQueue(context); + GET_META(integer2)->wait = createSynchronizedQueue(context); + GET_META(integer3)->wait = createSynchronizedQueue(context); + + // set Input Data Gear + context->task->data[context->task->idg+0] = (union Data*)integer1; + context->task->data[context->task->idg+1] = (union Data*)integer2; + + // set Output Data Gear + context->task->data[context->task->odg+0] = (union Data*)integer3; + + + // set TaskManager->spawns parameter + Gearef(context, TaskManager)->taskList = context->taskList; + Gearef(context, TaskManager)->next1 = C_code2; + goto parGotoMeta(context, C_code2); +} +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h2 id="section-2">スライドの流れ</h2> <ul> <li>CbC</li>