changeset 32:6f5ce3e82fbf

fix
author ikkun
date Tue, 16 May 2017 12:52:40 +0900
parents e7780283d3ee
children c326110b6079
files presen/s6/themes/blank.css presen/scripts/prettify.css presen/slide.html presen/slide.md
diffstat 4 files changed, 114 insertions(+), 113 deletions(-) [+]
line wrap: on
line diff
--- a/presen/s6/themes/blank.css	Tue May 16 09:53:12 2017 +0900
+++ b/presen/s6/themes/blank.css	Tue May 16 12:52:40 2017 +0900
@@ -72,7 +72,6 @@
   font-size: 160%;
 }
 li {
-  margin-top: 15px;
   margin-bottom: 15px;
 }
 p,
--- a/presen/scripts/prettify.css	Tue May 16 09:53:12 2017 +0900
+++ b/presen/scripts/prettify.css	Tue May 16 12:52:40 2017 +0900
@@ -1,18 +1,14 @@
 /* CSS from google html5slides(https://code.google.com/p/html5slides/) */
 
-code {
-  display: inline-block;
-}
-
 pre > code {
-  display: block;
-
   font-family: 'Droid Sans Mono', 'Courier New', monospace;
 
   font-size: 20px;
   line-height: 28px;
   padding: 5px 10px;
 
+  letter-spacing: -1px;
+
   margin-top: 40px;
   margin-bottom: 40px;
 
--- a/presen/slide.html	Tue May 16 09:53:12 2017 +0900
+++ b/presen/slide.html	Tue May 16 12:52:40 2017 +0900
@@ -4,7 +4,7 @@
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>Gears OS における並列処理</title>
 
-<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin16]">
+<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10]">
 <meta name="author"    content="東恩納 琢偉" >
 
 <!-- style sheet links -->
@@ -32,6 +32,7 @@
     $('code').each(function(_, el) {
       if (!el.classList.contains('noprettyprint')) {
         el.classList.add('prettyprint');
+        el.style.display = 'block';
       }
     });
     prettyPrint();
@@ -85,8 +86,8 @@
 <div class='slide '>
 <!-- === begin markdown block ===
 
-      generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin16]
-                on 2017-05-16 09:45:10 +0900 with Markdown engine kramdown (1.13.2)
+      generated by markdown/1.2.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10]
+                on 2017-05-16 12:21:56 +0900 with Markdown engine kramdown (1.9.0)
                   using options {}
   -->
 
@@ -191,35 +192,44 @@
   <li>Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。</li>
   <li>Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。</li>
   <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li>
-  <li>
-    <p>stub
-# Gears OS の並列性</p>
-  </li>
-  <li>Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。</li>
+  <li>stub</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os-">Gears OS の並列性</h1>
+
+<ul>
+  <li>Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Output Data Gear の組を Task と呼ぶ。</li>
   <li>Code Gear は Task 以外とは依存関係がない</li>
   <li>依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。</li>
 </ul>
 
 <div style="text-align: center;">
-    <img src="./fig/codeGear_dataGear.svg" alt="message" width="600" />
+    <img src="./fig/codeGear_dataGear.svg" alt="message" width="550" />
 </div>
 
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="gears-os-">Gears OS の構成</h1>
+<h1 id="gears-os--1">Gears OS の構成</h1>
 
 <ul>
   <li>Gears OS は以下の要素で構成される。
     <ul>
-      <li>Context - TaskQueue - TaskManager - Worker</li>
+      <li>Context</li>
+      <li>TaskQueue</li>
+      <li>TaskManager</li>
+      <li>Worker</li>
     </ul>
   </li>
 </ul>
 
 <div style="text-align: center;">
-    <img src="./fig/gears_structure.svg" alt="message" width="800" />
+    <img src="./fig/gears_structure.svg" alt="message" width="600" />
 </div>
 
 
@@ -229,14 +239,14 @@
 <h1 id="context">Context</h1>
 
 <ul>
-  <li>Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。</li>
-  <li>Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。</li>
-  <li>Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。
+  <li>Context は接続可能な Code Gear、Data Gear のリスト等を持っている Meta Data Gear である</li>
+  <li>Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある</li>
+  <li>Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、実行に必要な Input Data Gear のカウンタ等をもっている
 <!-- context のこーど?  --></li>
 </ul>
 
 <div style="text-align: center;">
-    <img src="./fig/gears_structure.svg" alt="message" width="800" />
+    <img src="./fig/gears_structure.svg" alt="message" width="600" />
 </div>
 
 
@@ -251,7 +261,7 @@
 </ul>
 
 <div style="text-align: center;">
-    <img src="./fig/gears_structure.svg" alt="message" width="800" />
+    <img src="./fig/gears_structure.svg" alt="message" width="600" />
 </div>
 
 
@@ -260,13 +270,13 @@
 <!-- _S9SLIDE_ -->
 <h1 id="worker">Worker</h1>
 <ul>
-  <li>Worker は thread と実行する Task が入っている Queue を持っている。</li>
-  <li>Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。</li>
-  <li>Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。</li>
-  <li>Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。</li>
+  <li>Worker は thread と実行する Task が入っている Queue を持っている</li>
+  <li>TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する</li>
+  <li>Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される</li>
+  <li>Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する</li>
 </ul>
 <div style="text-align: center;">
-    <img src="./fig/gears_structure.svg" alt="message" width="800" />
+    <img src="./fig/gears_structure.svg" alt="message" width="600" />
 </div>
 
 
@@ -275,8 +285,8 @@
 <!-- _S9SLIDE_ -->
 <h1 id="gpgpu">GPGPU</h1>
 <ul>
-  <li>もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。</li>
-  <li>GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる。</li>
+  <li>もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと</li>
+  <li>GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる</li>
   <li>CPUに比べ複雑な計算ができない、GPU単体に直接命令を書き込むこともできないなど、問題点も存在する。</li>
 </ul>
 
@@ -303,18 +313,18 @@
   <li>GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。</li>
 </ul>
 
-<!--  
+<!--
 # CbC による Gears OS 記述の問題
 
 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
-- これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。  
+- これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
 -->
 
-<!-- 順番まだ考えてない 
+<!-- 順番まだ考えてない
 
 # interface の記述
 
-- interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。  
+- interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。
 - 呼び出される Code Gear の引数となる Data Gear はここで全て定義される。
 - Code Gear、Data Gear に参照するために Context を通す必要があるが、interface を記述することでデータ構造の API と Data Gear を結びつけることが出来、 呼び出しが容易になった。
 
@@ -349,7 +359,7 @@
 - stub を生成するために generate_stub は指定された cbc ファイルの __code型である Code Gear を取得し、引数から必要な Data Gear を選択する。
 - generate_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
 - また、この時既に stub Code Gear が記述されている Code Gear は無視される。
-- cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。 
+- cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。
 
 # Context の生成
 
@@ -370,33 +380,47 @@
 </ul>
 
 <div style="text-align: center;">
-    <img src="./fig/dependency.svg" alt="message" width="800" />
+    <img src="./fig/dependency.svg" alt="message" width="700" />
 </div>
 
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="task-">Task の設定におけるメタ計算の問題</h1>
+<h1 id="gears-ostask">Gears OSにおけるTask生成構文</h1>
 <ul>
-  <li>現在のGears OS では並列実行するTask の設定を以下の用に行っている。</li>
-  <li>実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。</li>
+  <li>この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。</li>
+  <li>そこで以下のような記述を新たに考案した。</li>
+  <li>par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。</li>
+  <li>この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。</li>
+</ul>
+
+<pre lang="c"><code>    par goto add(integer1, integer2, output, __exit);
+</code></pre>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="task">Task生成のメタレベルでの実装</h1>
+<ul>
+  <li>Task生成では新しくContextを生成し引数となるData Segmentの設定を行う</li>
+  <li>Context をactive Task Queue に挿入する</li>
 </ul>
 
 <pre lang="c"><code>__code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) {
-    task-&gt;next = C_add; // set Code Gear                                                                                                                          
-    task-&gt;idgCount = 2; // set Input Data Gear Counter                                                                                                            
-    task-&gt;data[task-&gt;idg] = (union Data*)integer1; // set Input Data Gear reference                                                                               
-    task-&gt;data[task-&gt;idg+1] = (union Data*)integer2;
+    task-&gt;next = C_add; // set Code Gear
+    task-&gt;idgCount = 2; // set Input Data Gear Counter
+    task-&gt;data[task-&gt;idg] = (union Data*)integer1; // set Input Data Gear reference                                                                                   task-&gt;data[task-&gt;idg+1] = (union Data*)integer2;
     task-&gt;maxIdg = task-&gt;idg + 2;
-    task-&gt;odg = task-&gt;maxIdg; // Output Data Gear index                                                                                                           
-    task-&gt;data[task-&gt;odg] = (union Data*)output; // set Output Data Gear reference                                                                                
+    task-&gt;odg = task-&gt;maxIdg; // Output Data Gear index
+    task-&gt;data[task-&gt;odg] = (union Data*)output; // set Output Data Gear reference
     task-&gt;maxOdg = task-&gt;odg + 1;
     taskManager-&gt;next = C_createTask1;
-    goto meta(context, taskManager-&gt;taskManager-&gt;TaskManager.spawn); // spawn task                                                                                
+    goto meta(context, taskManager-&gt;taskManager-&gt;TaskManager.spawn); // spawn task
 }
 
-// code gear                                                                                                                                                      
+// code gear
 __code add(Integer *integer1, Integer *integer2, Integer *output) {
     ....
 }
@@ -408,31 +432,13 @@
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="task--1">Task の設定におけるメタ計算の問題</h1>
-<ul lang="c">
-  <li>この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。</li>
-  <li>そこで以下のような記述を新たに考案した。</li>
-  <li>par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。</li>
-  <li>この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
-- ここに論文で使っていたcode2をいれる</li>
-</ul>
-<pre><code>__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) {
-    par goto add(integer1, integer2, output, __exit);
-    goto next(...);
-}
-</code></pre>
-
-
-</div>
-<div class='slide '>
-<!-- _S9SLIDE_ -->
 <h1 id="section-4">従来のシステムとの比較</h1>
 <ul>
+  <li>以下のシステムと比較していきます</li>
   <li>Microware OS/9 モジュール単位で実装されたりreal-time OS</li>
   <li>compiler directve を使用する HPC</li>
   <li>CUDA</li>
   <li>golang</li>
-  <li>Unix</li>
   <li>Aspect J</li>
 </ul>
 
--- a/presen/slide.md	Tue May 16 09:53:12 2017 +0900
+++ b/presen/slide.md	Tue May 16 12:52:40 2017 +0900
@@ -1,4 +1,4 @@
-title: Gears OS における並列処理 
+title: Gears OS における並列処理
 author: 東恩納 琢偉
 profile:琉球大学工学部
 lang: Japanese
@@ -68,22 +68,26 @@
 - Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。
 - Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。
 - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
-- stub
+- stub によってMeta Code Gear から
+
 # Gears OS の並列性
 
-- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。
+- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Output Data Gear の組を Task と呼ぶ。
 - Code Gear は Task 以外とは依存関係がない
 - 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
 
 <div style="text-align: center;">
-    <img src="./fig/codeGear_dataGear.svg" alt="message" width="600">
+    <img src="./fig/codeGear_dataGear.svg" alt="message" width="550">
 </div>
 
 
 # Gears OS の構成
 
 - Gears OS は以下の要素で構成される。
-    - Context - TaskQueue - TaskManager - Worker
+    - Context
+    - TaskQueue
+    - TaskManager
+    - Worker
 
 <div style="text-align: center;">
     <img src="./fig/gears_structure.svg" alt="message" width="600">
@@ -91,9 +95,9 @@
 
 # Context
 
-- Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
-- Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
-- Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。
+- Context は接続可能な Code Gear、Data Gear のリスト等を持っている Meta Data Gear である
+- Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある
+- Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、実行に必要な Input Data Gear のカウンタ等をもっている
 <!-- context のこーど?  -->
 
 <div style="text-align: center;">
@@ -110,17 +114,17 @@
 </div>
 
 # Worker
-- Worker は thread と実行する Task が入っている Queue を持っている。
-- Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。
-- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。
-- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。
+- Worker は thread と実行する Task が入っている Queue を持っている
+- TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する
+- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される
+- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する
 <div style="text-align: center;">
-    <img src="./fig/gears_structure.svg" alt="message" width="800">
+    <img src="./fig/gears_structure.svg" alt="message" width="600">
 </div>
 
 # GPGPU
-- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。
-- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる。
+- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと
+- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる
 - CPUに比べ複雑な計算ができない、GPU単体に直接命令を書き込むこともできないなど、問題点も存在する。
 
 # CPUWoker
@@ -134,18 +138,18 @@
 - CUDA ライブラリの初期化を行う以外の動作はCPUWoker と全く同じとなる。
 - GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。
 
-<!--  
+<!--
 # CbC による Gears OS 記述の問題
 
 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
-- これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。  
+- これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
 -->
 
-<!-- 順番まだ考えてない 
+<!-- 順番まだ考えてない
 
 # interface の記述
 
-- interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。  
+- interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。
 - 呼び出される Code Gear の引数となる Data Gear はここで全て定義される。
 - Code Gear、Data Gear に参照するために Context を通す必要があるが、interface を記述することでデータ構造の API と Data Gear を結びつけることが出来、 呼び出しが容易になった。
 
@@ -179,7 +183,7 @@
 - stub を生成するために generate_stub は指定された cbc ファイルの __code型である Code Gear を取得し、引数から必要な Data Gear を選択する。
 - generate_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
 - また、この時既に stub Code Gear が記述されている Code Gear は無視される。
-- cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。 
+- cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。
 
 # Context の生成
 
@@ -192,30 +196,39 @@
 - Queue には その Data Gear を待っている Task が入っている
 - Task は実行に必要な Input Data Gear のカウンタを持っており, Data Gear は書き出されると、依存関係にある Taskのカウンタをデクリメントする
 - 全ての Input Data Gear が揃ったら, Taskを Worker に送信する
- 
+
 <div style="text-align: center;">
     <img src="./fig/dependency.svg" alt="message" width="700">
 </div>
 
-# Task の設定におけるメタ計算の問題
-- 現在のGears OS では並列実行するTask の設定を以下の用に行っている。
-- 実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。
+# Gears OSにおけるTask生成構文
+- この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。
+- そこで以下のような記述を新たに考案した。
+- par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。
+- この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
+
+```c
+    par goto add(integer1, integer2, output, __exit);
+```
+
+# Task生成のメタレベルでの実装
+- Task生成では新しくContextを生成し引数となるData Segmentの設定を行う
+- Context をactive Task Queue に挿入する
 
 ```c
 __code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) {
-    task->next = C_add; // set Code Gear                                                                                                                          
-    task->idgCount = 2; // set Input Data Gear Counter                                                                                                            
-    task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference                                                                               
-    task->data[task->idg+1] = (union Data*)integer2;
+    task->next = C_add; // set Code Gear
+    task->idgCount = 2; // set Input Data Gear Counter
+    task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference                                                                                   task->data[task->idg+1] = (union Data*)integer2;
     task->maxIdg = task->idg + 2;
-    task->odg = task->maxIdg; // Output Data Gear index                                                                                                           
-    task->data[task->odg] = (union Data*)output; // set Output Data Gear reference                                                                                
+    task->odg = task->maxIdg; // Output Data Gear index
+    task->data[task->odg] = (union Data*)output; // set Output Data Gear reference
     task->maxOdg = task->odg + 1;
     taskManager->next = C_createTask1;
-    goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task                                                                                
+    goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task
 }
 
-// code gear                                                                                                                                                      
+// code gear
 __code add(Integer *integer1, Integer *integer2, Integer *output) {
     ....
 }
@@ -223,25 +236,12 @@
 
 ```
 
-# Task の設定におけるメタ計算の問題
-- この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。
-- そこで以下のような記述を新たに考案した。
-- par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。
-- この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
-- ここに論文で使っていたcode2をいれる
-```c
-__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) {
-    par goto add(integer1, integer2, output, __exit);
-    goto next(...);
-}
-```
-
 # 従来のシステムとの比較
+- 以下のシステムと比較していきます
 - Microware OS/9 モジュール単位で実装されたりreal-time OS
 - compiler directve を使用する HPC
 - CUDA
 - golang
-- Unix
 - Aspect J
 
 # Microware OS/9