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-&gt;task = NEW(struct Context);
+    initContext(context-&gt;task);
+
+    // set task parameter
+    context-&gt;task-&gt;next = C_add;
+    context-&gt;task-&gt;idgCount = 2;
+    context-&gt;task-&gt;idg = context-&gt;task-&gt;dataNum;
+    context-&gt;task-&gt;maxIdg = context-&gt;task-&gt;idg + 2;
+    context-&gt;task-&gt;odg = context-&gt;task-&gt;maxIdg;
+    context-&gt;task-&gt;maxOdg = context-&gt;task-&gt;odg + 1;
+
+    // create Data Gear Queue
+    GET_META(integer1)-&gt;wait = createSynchronizedQueue(context);
+    GET_META(integer2)-&gt;wait = createSynchronizedQueue(context);
+    GET_META(integer3)-&gt;wait = createSynchronizedQueue(context);
+
+    // set Input Data Gear
+    context-&gt;task-&gt;data[context-&gt;task-&gt;idg+0] = (union Data*)integer1;
+    context-&gt;task-&gt;data[context-&gt;task-&gt;idg+1] = (union Data*)integer2;
+
+    // set Output Data Gear
+    context-&gt;task-&gt;data[context-&gt;task-&gt;odg+0] = (union Data*)integer3;
+
+   
+    // set TaskManager-&gt;spawns parameter
+    Gearef(context, TaskManager)-&gt;taskList = context-&gt;taskList;
+    Gearef(context, TaskManager)-&gt;next1 = C_code2;
+    goto parGotoMeta(context, C_code2);
+}
+</code></pre>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
 <h2 id="section-2">スライドの流れ</h2>
 <ul>
   <li>CbC</li>