annotate presen/sigOS/sample.markdown @ 18:20c9082b212d

change2
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2015 18:03:58 +0900
parents a26eacfb4922
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 title: 分散フレームワークAliceの圧縮機能
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 author: 照屋のぞみ
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 profile:琉球大学 工学部 情報工学科 4年
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
5 # 研究目的
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
6 * 当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
7 * Aliceのメタ計算として、通信が切断した際の処理やデータを圧縮する処理等を提供することで、プログラマがコードを大きく変更することなくプログラムの振る舞いを変えることを可能にする。
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
9 # Data Segment と Code Segment
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
10 * Aliceではデータを **Data Segment(DS)** 、タスクを **Code Segment(CS)** という単位に分割してプログラミングを行う。
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
11 * AliceはJavaで実装されており、CS をユーザーが記述する際には CodeSegment.class を継承することで CS で使用する API を利用する事ができる。
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
12 * DSはAliceが内部にもつデータベースにより管理されており、CSはDSに対応する一意のkeyを使ってDSを操作する。
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
14 # Data Segment と Code Segment
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
15 * CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
16 * CSはkeyで指定されたDSが揃うと実行されるという性質を持つ。
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
17 ![opt](./images/dsandcs.svg)
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
19 # CodeSegmentの依存関係
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
20 * データの依存関係にないCSは並列実行される
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
21 * データの依存関係がある場合は Input DS が揃うと順に実行される
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
22 ![opt](./images/dsandcs2.svg)
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
24 # Data Segment
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
25 * 整数や文字列などの基本的なデータの集まり
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
26 * Aliceの場合はJavaオブジェクトに対応
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
27
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
28 # Data Segment Manager
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
29 * DS の集合体であるデータベースを Alice では DS Manager(DSM) と呼ぶ。
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
30 * DSM 内の DS には対になる String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
31 * DS の追加
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
32 put(String managerKey, String key, Object val)
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
33 * DS の取得
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
34 take(String managerKey, String key)
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
36 <!--![opt](./images/dsm.svg)-->
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
37
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
38 # Data Segment Manager
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 * Local DSM … 各ノード固有のデータベース。
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
40 * Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
41 ![opt](./images/remote_datasegment.svg){:width="450px"}
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
42
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
44 # Data Segment の表現
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
45 * DSは複数の表現を同時に持っており、現在は3種類の表現がある。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
46 1. 一般的な Java のクラスオブジェクト
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
47 2. MessagePack for Java でシリアライズ化されたバイナリオブジェクト。Remoteとの通信の際に用いる。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
48 3. 2 を圧縮したバイナリオブジェクト。圧縮機能の一部として今回追加。
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
49
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
50 # MessagePackとは
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
51 * Sadayuki Furuhashiが開発したシリアライズのための機能をまとめたオープンソースライブラリ。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
52 * シリアライズ/デシリアライズを高速に行うことができ、整数、浮動小数点数、Boolean、文字列、配列、連想配列、nilをバイト列にシリアライズできる。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
53 * JSONのようにプログラミング言語に依存しないデータの表現形式として使用できる。
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
55 # CS と Input DS の対応付け
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
56 * setKey()にtakeコマンドをセットすることで Input DS を指定する
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
57 * 実際にtakeしたデータを参照するときには、asClass()を用いて任意のJavaのオブジェクトとして扱えるようにする
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
59 # CS の 例
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
60 RemoteDSM から DSをtakeし、LocalDSM に put を10回繰り返す
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
61 ```java
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
62 public class RemoteIncrement extends CodeSegment {
14
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
63
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
64 public Receiver num = ids.create(CommandType.TAKE);
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
65
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
66 @Override
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
67 public void run() {
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
68 int num = this.num.asClass(Integer.class);
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
69 if (num == 10) System.exit(0);
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
71 RemoteIncrement cs = new RemoteIncrement();
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
72 cs.num.setKey("remote", "num");
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
73
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
74 ods.put("local", "num", num);
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
75 }
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
77 }
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
78 ```
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
80 # TreeVNC
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
81 * Aliceを用いて実装する実用的な分散プログラムの例題
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
82 * 当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
83 * TightVNCがもとになっている
14
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
84 ![opt](./images/treeVNC.svg)
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
86 # Computation
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
87 * Aliceでは、計算の本質的な処理をComputatin、Computationとは直接関係ないが別のレベルでそれを支える処理をMeta Computationとして分けて考える。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
88 * Alice の Computationは、keyによりDSを待ち合わせ、DSが揃ったCSを並列に実行する処理。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
89 * TreeVNC の Computationは、VNCサーバからデータを受け取って表示する処理。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
90
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
91 # Meta Computation
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
92 * 通信の切断・再接続時の処理や分散トポロジーの構成、データの表現形式の選択など、Computationを支えている処理。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
93 * TreeVNCの場合、VNCサーバのデータを各VNCノードにコピーする処理。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
94 * Aliceの機能を追加するということは Meta Computation を追加すると言い換えられる
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
95
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
96 # TreeVNCで用いるAliceのMeta Computation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
97 * TreeTopologyの構成
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
98 * ノード間通信の切断時・再接続時の処理
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
99 * データの圧縮
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
100 * 子ノードへのデータの複製
13
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
c0fe42a8808d add slides
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
103 # データの転送 - DSMとAPIの追加
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
104 * Local と Remote それぞれに圧縮表現を扱う Compressed DSM を追加。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
105 * 指定する DSM を Compressed DSM に変えるだけで扱うデータ表現を変更できる
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
106 put(String **"compressed"** + managerKey, String key, Object val)
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
107 take(String **"compressed"** + managerKey, String key)
14
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
108
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
109 # データの転送 - データ表現の自動生成
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
110 * DS が圧縮表現を持っていれはそれをそのまま子ノードにputする
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
111 * 持っていなければその時点でCompressed DSM内部で圧縮表現を生成してputする
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
112 * DS はオブジェクト表現と圧縮表現を同時にもつため、TreeVNCでは受け取った画面データを伸長をした後、転送のために再圧縮することはない。
16
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
113
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
114 # データの受け取り - 任意の形式での取得
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
115 * 圧縮表現で画面データ受け取り、Compressed DSM 内に格納。
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
116 * TightVNCが画面表示のためにデータを必要としたときに、 asClass() を用いて任意の形式でデータを取り出す。
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
117 * asClass() は DS のcastメソッドであり、内部で伸長と MessagePack での変換を行う。
16
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
118
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
119 # データの受け取り - Aliceの通信パケット変更
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
120 * 通信ヘッダにデータの状態を表すフラグを追加したことで、受け取ったデータを適切な形式でDSM内に格納できる。
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
121 * 圧縮前と圧縮後のデータサイズを入れたことにより、受け取ったデータの適切な伸長が可能。
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
122
16
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
123 <table style="border-collapse: collapse;border:1px solid #000000;">
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
124 <td style="border:1px solid #000000;"> serialized </td>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
125 <td style="border:1px solid #000000;">データ本体のシリアライズ状態を示す</td>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
126 </tr>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
127 <tr>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
128 <td style="border:1px solid #000000;"> compressed </td>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
129 <td style="border:1px solid #000000;">データ本体の圧縮状態を示す</td>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
130 </tr>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
131 <tr>
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
132 <td style="border:1px solid #000000;"> objectDataSize </td>
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
133 <td style="border:1px solid #000000;">圧縮前のオブジェクトのデータサイズを表す</td>
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
134 </tr>
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
135 <tr>
16
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
136 <td style="border:1px solid #000000;"> dataSize </td>
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
137 <td style="border:1px solid #000000;">送信するDSのデータサイズを表す</td>
16
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
138 </tr>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
139 </table>
1ac38e2b7572 before review
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
140
18
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
141 # Aliceと他言語等との比較(1) - Erlang
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
142 * ネットワークに依存しない通信が可能
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
143
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
144 * Topologyは自分で管理
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
145
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
146 # Aliceと他言語等との比較(1) - Linda
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
147 * keyでタプルというデータの集合を管理している
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
148 * in/outでAliceのput/takeに対応する操作を行う
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
149
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
150 * タスクはinで単一のタプルを待つ
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
151 * MetaComputationがない
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
152
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
153 # Aliceと他言語等との比較(1) - Corba
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
154 * オブジェクト間のRPC
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
155
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
156 * DSがない。keyという概念がない。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
157 * データの待ち合わせがない
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
158
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
159 # Aliceと他言語等との比較(1) - HTTP
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
160 * get/putで通信を行う
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
161 * URLがデータベースのkeyとなる
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
162
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
163 * MIME形式で送信。複数の表現を持つMeta Computationがない。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
164 * セッション管理はクライアント自身がやる
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
165 * 並列処理できない
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
166 * get/putをRPC的に扱わない
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
167
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
168
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
169 # TreeVNCとAliceを用いたTreeVNCの比較
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
170 * TreeVNC
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
171 通信プロトコルを定義や圧縮を自前で行う
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
172 通信スレッドを複数作成
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
173 様々な部分で通信APIを呼び出す
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
174
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
175 * Aliceを用いたTreeVNC
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
176 Aliceと接続する最小限の変更
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
177 木の構成部分や圧縮形式での通信はMeta Computation
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
178
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
179 # TreeVNCとAliceを用いたTreeVNCの比較
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
180 * TightVNCからのコードの増加量
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
181 * Aliceを用いれば通常の TreeVNC の 20% の行数で記述できる。
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
182
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
183 <table style="border-collapse: collapse;border:1px solid #000000;">
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
184 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"></th>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
185 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"> 行数 </th>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
186 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">単語数</th>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
187 <tr>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
188 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> TreeVNC </td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
189 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">5049</td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
190 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">14191</td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
191 </tr>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
192 <tr>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
193 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> Aliceを用いたTreeVNC </td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
194 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">989</td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
195 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">2355</td>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
196 </tr>
20c9082b212d change2
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
197 </table>
14
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
198
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
199 # まとめ
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
200 * Alice が実用的なアプリケーションを記述するための Meta Computation として、データに多態性を持たせ、指定するDSMによってデータ表現を変える機能を実装した。
14
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
201 * これによりユーザが記述する Computation 部分を大きく変えずに自由度の高い通信を行うことが可能になった。
99e5104997b7 add compress part
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
202 * 同様の手法により、暗号形式・JSON 形式など複数のデータ表現を扱えるように拡張できる。
17
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
203 * 今後の課題としては、圧縮機能を TreeVNC で用 いることで有効性を測る必要がある。