Mercurial > hg > Papers > 2016 > nozomi-sigos
changeset 22:1f1b1f962ff1
add source
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 May 2015 10:06:28 +0900 |
parents | bc4cd6053122 |
children | 7de82f13512b |
files | presen/sigOS/sample.html |
diffstat | 1 files changed, 232 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/sigOS/sample.html Mon May 25 23:11:52 2015 +0900 +++ b/presen/sigOS/sample.html Tue May 26 10:06:28 2015 +0900 @@ -209,7 +209,7 @@ <!-- _S9SLIDE_ --> <ul> - <li>setKey()にtakeコマンドをセットすることで Input DS を指定する</li> + <li>setKey()にtakeコマンドを待ち合わせすることで Input DS を指定する</li> <li>実際にtakeしたデータを参照するときには、asClass()を用いて任意のJavaのオブジェクトとして扱えるようにする </li> </ul> @@ -218,23 +218,106 @@ </section> </div></div> + <div class="slide" id="12"><div> <section> <header> <h1 id="cs--">Code Segment の 例</h1> </header> -<span>RemoteDSMからデータをtakeし、インクリメントしてLocalDSMにputを10回繰り返す</span> +<span>2つのノード間で、RemoteDSMからデータをtakeしインクリメントしてLocalDSMにputを10回繰り返す</span> +<img src="./pictures/remoteTest.svg" alt="opt" align="center"/> +</div></div> + +<div class="slide" id="13"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>2つのノード間で、RemoteDSMからデータをtakeしインクリメントしてLocalDSMにputを10回繰り返す</span> +<img src="./pictures/remoteTest2.svg" alt="opt" align="center"/> +</div></div> + + +<div class="slide" id="14"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>Start CS で 最初の DS をputする</span> <pre><code style="font-size:13pt" lang="java"> -public class RemoteIncrement extends CodeSegment { - public Receiver num = ids.create(CommandType.TAKE); +public class StartCodeSegment extends CodeSegment { + @Override + public void run() { + <span style="color:red;">ods.put("local", "num", 0);</span> + + Increment nextCS = new Increment(); + nextCS.receiver.setKey("remote", "num"); + } +} +</code></pre> + </section> +</div></div> + + +<div class="slide" id="15"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>次に実行するインクリメントのCSを作成する</span> +<pre><code style="font-size:13pt" lang="java"> +public class StartCodeSegment extends CodeSegment { @Override public void run() { - int num = this.num.asClass(Integer.class); - System.out.println(num++); - if (num == 10) System.exit(0); - RemoteIncrement cs = new RemoteIncrement(); - cs.num.setKey("remote", "num"); - ods.put("local", "num", num); + ods.put("local", "num", 0); + + <span style="color:red;">Increment nextCS = new Increment();</span> + nextCS.receiver.setKey("remote", "num"); + } +} +</code></pre> + </section> +</div></div> + + +<div class="slide" id="17"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>作成したnextCSに対してsetKey()でDSM名とkeyを指定し、内部でtakeを行う。</span> +<pre><code style="font-size:13pt" lang="java"> +public class StartCodeSegment extends CodeSegment { + @Override + public void run() { + ods.put("local", "num", 0); + + Increment nextCS = new Increment(); + <span style="color:red;">nextCS.receiver.setKey("remote", "num");</span> + } +} +</code></pre> + </section> +</div></div> + + +<div class="slide" id="18"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>takeでCSにInput DSを対応づけ、DSを格納するReceiverを用意がされる。</span> +<pre><code style="font-size:13pt" lang="java"> +public class Increment extends CodeSegment { + <span style="color:red;">public Receiver receiver = ids.create(CommandType.TAKE);</span> + @Override + public void run() { + int num = this.r.asClass(Integer.class); + num++; + if (num == 10) System.exit(0); + ods.put("local", "num", num); + Increment nextCS = new RemoteIncrement(); + nextCS.receiver.setKey("remote", "num"); } } </code></pre> @@ -242,52 +325,149 @@ </div></div> -<div class="slide" id="13"><div> +<div class="slide" id="19"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>受け取ったDSをasClass()でInt型として取り出す</span> +<pre><code style="font-size:13pt" lang="java"> +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); + @Override + public void run() { + <span style="color:red;">int num = this.r.asClass(Integer.class);</span> + num++; + if (num == 10) System.exit(0); + ods.put("local", "num", num); + Increment nextCS = new RemoteIncrement(); + nextCS.receiver.setKey("remote", "num"); + } +} +</code></pre> + </section> +</div></div> + + +<div class="slide" id="20"><div> <section> <header> <h1 id="cs--">Code Segment の 例</h1> </header> -<span>Input DSの用意。DSを格納する受け皿(Receiver)が作られる。</span> +<span>インクリメントする</span> <pre><code style="font-size:13pt" lang="java"> -public class RemoteIncrement extends CodeSegment { - <span style="color:red;">public Receiver num = ids.create(CommandType.TAKE);</span> +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); @Override public void run() { - int num = this.num.asClass(Integer.class); - System.out.println(num++); - if (num == 10) System.exit(0); - RemoteIncrement cs = new RemoteIncrement(); - cs.num.setKey("remote", "num"); - ods.put("local", "num", num); + int num = this.r.asClass(Integer.class); + <span style="color:red;">num++;</span> + if (num == 10) System.exit(0); + ods.put("local", "num", num); + Increment nextCS = new RemoteIncrement(); + nextCS.receiver.setKey("remote", "num"); + } +} +</code></pre> + </section> +</div></div> + + + +<div class="slide" id="21"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>numが10であれば終了する</span> +<pre><code style="font-size:13pt" lang="java"> +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); + @Override + public void run() { + int num = this.r.asClass(Integer.class); + num++; + <span style="color:red;">if (num == 10) System.exit(0);</span> + ods.put("local", "num", num); + Increment nextCS = new RemoteIncrement(); + nextCS.receiver.setKey("remote", "num"); } } </code></pre> </section> </div></div> -<div class="slide" id="14"><div> +<div class="slide" id="22"><div> <section> <header> <h1 id="cs--">Code Segment の 例</h1> </header> +<span>インクリメントした結果をLocal DSMにputする</span> <pre><code style="font-size:13pt" lang="java"> -public class RemoteIncrement extends CodeSegment { - public Receiver num = ids.create(CommandType.TAKE); +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); @Override public void run() { - int num = this.num.asClass(Integer.class); - System.out.println(num++); - if (num == 10) System.exit(0); - RemoteIncrement cs = new RemoteIncrement(); - <span style="color:red;">cs.num.setKey("remote", "num");</span> - ods.put("local", "num", num); + int num = this.r.asClass(Integer.class); + num++; + if (num == 10) System.exit(0); + <span style="color:red;">ods.put("local", "num", num);</span> + Increment nextCS = new RemoteIncrement(); + nextCS.receiver.setKey("remote", "num"); } } </code></pre> </section> </div></div> -<div class="slide" id="13"><div> + +<div class="slide" id="23"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>次に実行するインクリメントCSを作成する</span> +<pre><code style="font-size:13pt" lang="java"> +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); + @Override + public void run() { + int num = this.r.asClass(Integer.class); + num++; + if (num == 10) System.exit(0); + ods.put("local", "num", num); + <span style="color:red;">Increment nextCS = new RemoteIncrement();</span> + nextCS.receiver.setKey("remote", "num"); + } +} +</code></pre> + </section> +</div></div> + +<div class="slide" id="24"><div> + <section> + <header> + <h1 id="cs--">Code Segment の 例</h1> + </header> +<span>作成したnextCSにkeyを指定してtakeを行わせる。以下繰り返し。</span> +<pre><code style="font-size:13pt" lang="java"> +public class Increment extends CodeSegment { + public Receiver receiver = ids.create(CommandType.TAKE); + @Override + public void run() { + int num = this.r.asClass(Integer.class); + num++; + if (num == 10) System.exit(0); + ods.put("local", "num", num); + Increment nextCS = new RemoteIncrement(); + <span style="color:red;">nextCS.receiver.setKey("remote", "num");</span> + } +} +</code></pre> + </section> +</div></div> + +<div class="slide" id="25"><div> <section> <header> <h1 id="treevnc">TreeVNC</h1> @@ -305,7 +485,7 @@ </section> </div></div> -<div class="slide" id="14"><div> +<div class="slide" id="26"><div> <section> <header> <h1 id="computation">Computation</h1> @@ -323,7 +503,7 @@ </section> </div></div> -<div class="slide" id="15"><div> +<div class="slide" id="27"><div> <section> <header> <h1 id="meta-computation">Meta Computation</h1> @@ -341,7 +521,7 @@ </section> </div></div> -<div class="slide" id="16"><div> +<div class="slide" id="28"><div> <section> <header> <h1 id="treevncalicemeta-computation">TreeVNCで用いるAliceのMeta Computation</h1> @@ -360,7 +540,7 @@ </section> </div></div> -<div class="slide" id="17"><div> +<div class="slide" id="29"><div> <section> <header> <h1 id="dsmapi">データの転送 - DSMとAPIの追加</h1> @@ -379,7 +559,7 @@ </section> </div></div> -<div class="slide" id="18"><div> +<div class="slide" id="30"><div> <section> <header> <h1 id="section-1">データの転送 - データ表現の自動生成</h1> @@ -397,7 +577,7 @@ </section> </div></div> -<div class="slide" id="19"><div> +<div class="slide" id="31"><div> <section> <header> <h1 id="section-2">データの受け取り - 任意の形式での取得</h1> @@ -415,7 +595,7 @@ </section> </div></div> -<div class="slide" id="20"><div> +<div class="slide" id="32"><div> <section> <header> <h1 id="alice">データの受け取り - Aliceの通信パケット変更</h1> @@ -448,7 +628,7 @@ </section> </div></div> -<div class="slide" id="21"><div> +<div class="slide" id="33"><div> <section> <header> <h1 id="alice1---erlang">Aliceと他言語等との比較(1) - Erlang</h1> @@ -456,8 +636,9 @@ <!-- _S9SLIDE_ --> <ul> - <li> タスクをプロセスというスレッドで分割する </li> - <li>ネットワークに依存しない通信が可能</li> + <li> タスクをプロセスと呼ばれるメモリを共有しないスレッドに分割 </li> +<li> 共有メモリにアクセスするためのメモリロックの仕組みを必要としない </li> + <li>ネットワークに依存しない通信が可能</li><!--Erlangはフォールトレランスと呼ばれる障害耐性を備え、システムを稼働させたまま部分停止・修復ができる--> </br> <li><p>Topologyの構成等は自分で管理</p></li> @@ -468,10 +649,10 @@ </section> </div></div> -<div class="slide" id="22"><div> +<div class="slide" id="34"><div> <section> <header> - <h1 id="alice1---linda">Aliceと他言語等との比較(1) - Linda</h1> + <h1 id="alice1---linda">Aliceと他言語等との比較(2) - Linda</h1> </header> <!-- _S9SLIDE_ --> @@ -489,16 +670,16 @@ </section> </div></div> -<div class="slide" id="23"><div> +<div class="slide" id="35"><div> <section> <header> - <h1 id="alice1---corba">Aliceと他言語等との比較(1) - Corba</h1> + <h1 id="alice1---corba">Aliceと他言語等との比較(3) - Corba</h1> </header> <!-- _S9SLIDE_ --> <ul> <li> - <p>オブジェクト間のRPC</p> + <p>オブジェクト間のRPC仕様</p> </li> <li>DSがない。keyという概念がない。</li> <li>同期呼び出し・非同期呼び出しが選択できるが、データの待ち合わせがない</li> @@ -509,15 +690,15 @@ </section> </div></div> -<div class="slide" id="24"><div> +<div class="slide" id="36"><div> <section> <header> - <h1 id="alice1---http">Aliceと他言語等との比較(1) - HTTP</h1> + <h1 id="alice1---http">Aliceと他言語等との比較(4) - HTTP</h1> </header> <!-- _S9SLIDE_ --> <ul> - <li>get/putで通信を行う。get/putをRPC的に扱わず、getで取得しputで保存するRESTfulアーキテクチャ</li> + <li>get/putで通信を行う。get/putをRPC的に扱わず、getで取得しputで保存するRESTfulアーキテクチャ。</li> <li> <p>URLがデータベースのkeyとなる</p> </li> @@ -531,7 +712,7 @@ </section> </div></div> -<div class="slide" id="25"><div> +<div class="slide" id="37"><div> <section> <header> <h1 id="treevncalicetreevnc">TreeVNCとAliceを用いたTreeVNCの比較</h1> @@ -557,7 +738,7 @@ </section> </div></div> -<div class="slide" id="26"><div> +<div class="slide" id="38"><div> <section> <header> <h1 id="treevncalicetreevnc-1">TreeVNCとAliceを用いたTreeVNCの比較</h1> @@ -590,7 +771,7 @@ </section> </div></div> -<div class="slide" id="27"><div> +<div class="slide" id="39"><div> <section> <header> <h1 id="section-3">まとめ</h1>