Mercurial > hg > Papers > 2011 > yuu-jssst
comparison jssst.html @ 59:72872a363e42 default tip
update html
author | Yu Taninari <you@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 26 Sep 2011 22:46:10 +0900 |
parents | ca7ae1dc95cc |
children |
comparison
equal
deleted
inserted
replaced
58:ca7ae1dc95cc | 59:72872a363e42 |
---|---|
14 text-align: center; | 14 text-align: center; |
15 } | 15 } |
16 .taninaritop { | 16 .taninaritop { |
17 margin: auto; | 17 margin: auto; |
18 width: 95%; | 18 width: 95%; |
19 font-weight: bold; | 19 // font-weight: bold; |
20 } | 20 } |
21 </style> | 21 </style> |
22 <title>2011/9/27</title> | 22 <title>2011/9/27</title> |
23 <!-- metadata --> | 23 <!-- metadata --> |
24 <meta name="generator" content="S5" /> | 24 <meta name="generator" content="S5" /> |
82 <div class="handout"></div> | 82 <div class="handout"></div> |
83 </div> | 83 </div> |
84 <!-- PAGE --> | 84 <!-- PAGE --> |
85 <div class="slide"> | 85 <div class="slide"> |
86 <h1>目的と背景</h1> | 86 <h1>目的と背景</h1> |
87 <li>大学の講義中、スクリーンに映されている画面は後ろの席程見えずらい。 </li> | 87 <li>大学の講義中、スクリーンに映されている画面は後ろの席ほど見えづらい。 </li> |
88 <li>その問題を手元のPCにも写せるようにすることで解決しようと考えた。</li> | 88 <li>その問題を手元のPCにも写せるようにすることで解決しようと考えた。</li> |
89 <li class="incremental">60人以上での画面共有を行うシステムを目標とする。</li> | 89 <li>60人以上で画面共有を行うシステムを目標とする。</li> |
90 </div> | 90 </div> |
91 <!-- PAGE --> | 91 <!-- PAGE --> |
92 <div class="slide"> | 92 <div class="slide"> |
93 <h1>VNCによる画面共有</h1> | 93 <h1>VNCによる画面共有</h1> |
94 <li>今回、VNCを用いて画面共有システムを作成する。</li> | |
95 <li>VNC: Virtual Network Computing </br>ネットワークを介してコンピュータを遠隔操作するプログラム </li> | 94 <li>VNC: Virtual Network Computing </br>ネットワークを介してコンピュータを遠隔操作するプログラム </li> |
96 <li class="incremental">VNC用いた授業用画面共有システムTreeVNCの設計と実装を行った。</li> | 95 <li>VNC用いた授業用画面共有システムTreeVNCの設計と実装を行った。</li> |
97 </div> | 96 </div> |
98 <!-- PAGE --> | 97 <!-- PAGE --> |
99 <div class="slide"> | 98 <div class="slide"> |
100 <h1>通常のVNCの問題点</h1> | 99 <h1>通常のVNCの問題点</h1> |
101 <table class="center"> | 100 <table class="center"> |
137 <td>48台</td> | 136 <td>48台</td> |
138 <td>4M(1台あたり)</td> | 137 <td>4M(1台あたり)</td> |
139 <td>100%</td> | 138 <td>100%</td> |
140 </tr> | 139 </tr> |
141 </table> | 140 </table> |
142 <li>VNCに使われるCPUの使用率が100%になり、スループットが5分の1まで下がっている。</li> | 141 <li>48台繋げる事によって、VNCに使われるCPUの使用率が100%になり、スループットが5分の1まで下がっている。</li> |
143 | 142 |
144 </div> | 143 </div> |
144 | |
145 | |
146 <!-- PAGE --> | |
147 <div class="slide"> | |
148 <h1>TreeVNCの設計</h1> | |
149 <table class="center" width=100% style="text-align: center;"> | |
150 <tr> | |
151 <td><small>通常のVNC</small></td> | |
152 <td><small>TreeVNC</small></td> | |
153 </tr> | |
154 <tr> | |
155 <td> | |
156 <img class="scale" src="./pix/NormalVNC3.png" width="300"> | |
157 </td> | |
158 <td> | |
159 <img src="./pix/TreeVNC3.png" width="300"> | |
160 </td> | |
161 </tr> | |
162 </p> | |
163 </table> | |
164 <li>クライアントが増えてもかかる負荷一定。</li> | |
165 <li>通信網1本に対する負荷が減り、安定した通信ができる(有線)。</li> | |
166 </div> | |
167 </div> | |
168 | |
169 <!-- PAGE --> | |
170 <div class="slide"> | |
171 <h1>TreeVNCの設計</h1> | |
172 <table class="center" width=100% style="text-align: center;"> | |
173 <tr> | |
174 <td><small>通常のVNC</small></td> | |
175 <td><small>TreeVNC</small></td> | |
176 </tr> | |
177 <tr> | |
178 <td> | |
179 <img class="scale" src="./pix/NormalVNC3.png" width="300"> | |
180 </td> | |
181 <td> | |
182 <img src="./pix/TreeVNC3.png" width="300"> | |
183 </td> | |
184 </tr> | |
185 </p> | |
186 </table> | |
187 <table class="center" border=1 cellspacing="0" width=100%> | |
188 <tr> | |
189 <td></td> | |
190 <td>通常のVNC</td> | |
191 <td>TreeVNC</td> | |
192 </tr> | |
193 <tr> | |
194 <td>通信量</td> | |
195 <td> N*データ量 (クライアントの数に比例) </td> | |
196 <td> (M+1) * データ量</td> | |
197 </tr> | |
198 </table> | |
199 <p style="text-align: center;"><small>クライアントの数をN、木構造の子供の数をMとする</small> </p> | |
200 </div> | |
201 </div> | |
202 | |
145 <!-- PAGE --> | 203 <!-- PAGE --> |
146 <div class="slide"> | 204 <div class="slide"> |
147 <h1>通常のVNCの問題点</h1> | 205 <h1>通常のVNCの問題点</h1> |
148 <li>サーバへのCPU負荷が高い</li> | 206 <li>サーバへのCPU負荷が高い</li> |
149 <li>1本の通信網への負荷が高い</li> | 207 <li>1本の通信網への負荷が高い</li> |
156 <small>クライアントを木構造で接続させるTreeVNC</samll><br> | 214 <small>クライアントを木構造で接続させるTreeVNC</samll><br> |
157 <img class="scale" src="./pix/TreeVNC0.png" width="500" heigth="500"><br> | 215 <img class="scale" src="./pix/TreeVNC0.png" width="500" heigth="500"><br> |
158 </p> | 216 </p> |
159 </div> | 217 </div> |
160 --> | 218 --> |
219 | |
220 <!-- PAGE --> | |
221 <div class="slide"> | |
222 <h1>今回の主な内容</h1> | |
223 <ul> | |
224 <li>木の構成</li> | |
225 <li>木の再構築</li> | |
226 <li>MulticastQueue</li> | |
227 <li>ZRLE Encodingの問題</li> | |
228 </ul> | |
229 </div> | |
230 | |
161 <!-- PAGE --> | 231 <!-- PAGE --> |
162 <div class="slide"> | 232 <div class="slide"> |
163 <h1>TreeVNCの設計</h1> | 233 <h1>TreeVNCの設計</h1> |
164 <table> | 234 <table> |
165 <tr> | 235 <tr> |
166 <td> | 236 <td> |
167 <li>木構造での接続</li> | 237 <li>木構造での接続</li> |
168 <li>クライアントの管理を行うTop Proxyを置く。</li> | 238 <li>クライアントの管理を行うTop Proxyを置く。</li> |
169 <li>データは木の下へと流していくようにする。</li> | 239 <li>データは木の上から下へと流していくようにする。</li> |
170 </td> | 240 </td> |
171 <td> | 241 <td> |
172 <!-- <li>tightVNC ViewerのJava版を元にTreeVNCの実装を行う。</li> --> | 242 <!-- <li>tightVNC ViewerのJava版を元にTreeVNCの実装を行う。</li> --> |
173 <p style="text-align: center;"> | 243 <p style="text-align: center;"> |
174 <img class="scale" src="./pix/TreeVNC0.png" width="500" heigth="500"> | 244 <img class="scale" src="./pix/TreeVNC0.png" width="500" heigth="500"> |
176 </td> | 246 </td> |
177 </tr> | 247 </tr> |
178 </table> | 248 </table> |
179 </div> | 249 </div> |
180 | 250 |
181 <!-- PAGE --> | 251 <!-- PAGE --> |
182 <div class="slide"> | 252 <div class="slide"> |
183 <div class="taninaritop"> | 253 <div class="taninaritop"> |
184 <h1>木の構成手順</h1> | 254 <h1>木の構成手順</h1> |
185 <table class="tanitable"> | 255 <table class="tanitable"> |
186 <tr> | 256 <tr> |
187 <td width=50%> | 257 <td> |
188 <center><img class="scale" style="display: block; width: 70%; margin: auto;" src="pix/tree1.png" alt=""></center> | 258 <center><img class="scale" src="pix/uml1.png" alt=""></center> |
189 </td> | 259 </td> |
190 <td valign="top"> | 260 <td valign="top"> |
191 <Font size="6"> | 261 <Font size="6"> |
192 2分木の場合の木の構成について説明する。<br> | 262 <Font color="red"> |
193 クライアントは一旦Top Proxyに接続して、自分の接続先をProxyから取得する。<br> | 263 requestHostName(); |
194 </td> | 264 </Font> |
195 </tr> | 265 <br> |
196 </table> | 266 プロキシに対してホストのアドレスを要求する関数。 |
197 </div> | 267 </Font> |
198 </div> | 268 </td> |
199 | 269 </tr> |
200 <!-- PAGE --> | 270 </table> |
201 <div class="slide"> | 271 </div> |
202 <div class="taninaritop"> | 272 </div> |
203 <h1>木の構成手順</h1> | 273 |
204 <table class="tanitable"> | 274 <!-- PAGE --> |
205 <tr> | 275 <div class="slide"> |
206 <td width=50%> | 276 <div class="taninaritop"> |
207 <center><img class="scale" style="display: block; width: 70%; margin: auto;" src="pix/tree2.png" alt=""></center> | 277 <h1>木の構成手順</h1> |
208 </td> | 278 <table class="tanitable"> |
209 <td valign="top" style="display: block; width: 100%; margin: auto;"> | 279 <tr> |
210 <Font size="6"> | 280 <td> |
211 親を決定する方法はTop Proxyで<br> | 281 <center><img class="scale" src="pix/uml2.png" alt=""></center> |
212 <Font color="red"> | 282 </td> |
213 parentNumber = (myNumber - 1) / treeBranch<br> | 283 <td valign="top"> |
214 </Font> | 284 <Font size="6"> |
215 を計算してクライアントにどの親に接続すればよいかを知らせる。 | 285 <Font color="red"> |
216 </td> | 286 transferParentAddress(); |
217 </tr> | 287 </Font> |
218 </table> | 288 <br> |
219 </div> | 289 クライアントに接続先を教える関数。 |
220 </div> | 290 <br> |
221 | 291 <br> |
222 <!-- PAGE --> | 292 実際にクライアントにおくっているデータは |
223 <div class="slide"> | 293 <br> |
224 <div class="taninaritop"> | 294 parentAddress |
225 <h1>木の構成手順</h1> | 295 <br> |
226 <table class="tanitable"> | 296 parentNum |
227 <tr> | 297 <br> |
228 <td width=50%> | 298 treeNum |
229 <center><img class="scale" style="display: block; width: 70%; margin: auto;" src="pix/tree3.png" alt=""></center> | 299 <br> |
230 </td> | 300 leaderFlag |
231 <td valign="top" style="display: block; width: 100%; margin: auto;"> | 301 <br> |
232 <Font size="6"> | 302 の4つである。 |
233 親を決定する方法はTop Proxyで<br> | 303 <br> |
234 <Font color="red"> | 304 リーダーは子供の中で一番若い番号の人がなる。 |
235 parentNumber = (myNumber - 1) / treeBranch<br> | 305 <br> |
236 </Font> | 306 リーダーフラグは木の再構成の際に使用する。 |
237 を計算してクライアントにどの親に接続すればよいかを知らせる。 | 307 </Font> |
238 </td> | 308 </td> |
239 </tr> | 309 </tr> |
240 </table> | 310 </table> |
241 </div> | 311 </div> |
242 </div> | 312 </div> |
243 | 313 |
244 <!-- PAGE --> | 314 |
245 <div class="slide"> | 315 <div class="slide"> |
246 <div class="taninaritop"> | 316 <div class="taninaritop"> |
247 <h1>木の構成手順</h1> | 317 <h1>木の構成手順</h1> |
248 <table class="tanitable"> | 318 <table class="tanitable"> |
249 <tr> | 319 <tr> |
250 <td width=50%> | 320 <td> |
251 <center><img class="scale" style="display: block; width: 70%; margin: auto;" src="pix/tree4.png" alt=""></center> | 321 <center><img class="scale" src="pix/uml3.png" alt=""></center> |
252 </td> | 322 </td> |
253 <td valign="top" style="display: block; width: 100%; margin: auto;"> | 323 <td valign="top"> |
254 <Font size="6"> | 324 <Font size="6"> |
255 親を決定する方法はTop Proxyで<br> | 325 <Font color="red"> |
256 <Font color="red"> | 326 connectAndAuthenticate(); |
257 parentNumber = (myNumber - 1) / treeBranch<br> | 327 </Font> |
258 </Font> | 328 <br> |
259 を計算してクライアントにどの親に接続すればよいかを知らせる。 | 329 プロキシから受け取ったデータをもとに接続を開始する関数。 |
260 </td> | 330 </Font> |
261 </tr> | 331 </td> |
262 </table> | 332 </tr> |
263 </div> | 333 </table> |
264 </div> | 334 </div> |
265 | 335 </div> |
266 <!--PAGE--> | 336 |
337 | |
338 <div class="slide"> | |
339 <div class="taninaritop"> | |
340 <h1>木の構成手順</h1> | |
341 <table class="tanitable"> | |
342 <tr> | |
343 <td> | |
344 <center><img class="scale" src="pix/uml4.png" alt=""></center> | |
345 </td> | |
346 <td valign="top"> | |
347 <Font size="6"> | |
348 新しいクライアントが来るたびに今まで説明した3つの関数を呼び出す。 | |
349 </Font> | |
350 </td> | |
351 </tr> | |
352 </table> | |
353 </div> | |
354 </div> | |
355 | |
356 | |
357 <div class="slide"> | |
358 <div class="taninaritop"> | |
359 <h1>木の構成手順</h1> | |
360 <table class="tanitable"> | |
361 <tr> | |
362 <td> | |
363 <center><img class="scale" src="pix/uml5.png" alt=""></center> | |
364 </td> | |
365 <td valign="top"> | |
366 <Font size="6"> | |
367 | |
368 </Font> | |
369 </td> | |
370 </tr> | |
371 </table> | |
372 </div> | |
373 </div> | |
374 | |
375 | |
376 <div class="slide"> | |
377 <div class="taninaritop"> | |
378 <h1>木の構成手順</h1> | |
379 <table class="tanitable"> | |
380 <tr> | |
381 <td> | |
382 <center><img class="scale" src="pix/uml6.png" alt=""></center> | |
383 </td> | |
384 <td valign="top"> | |
385 <Font size="6"> | |
386 | |
387 </Font> | |
388 </td> | |
389 </tr> | |
390 </table> | |
391 </div> | |
392 </div> | |
393 | |
394 | |
395 <div class="slide"> | |
396 <div class="taninaritop"> | |
397 <h1>木の構成手順</h1> | |
398 <table class="tanitable"> | |
399 <tr> | |
400 <td> | |
401 <center><img class="scale" src="pix/uml7.png" alt=""></center> | |
402 </td> | |
403 <td valign="top"> | |
404 <Font size="6"> | |
405 | |
406 </Font> | |
407 </td> | |
408 </tr> | |
409 </table> | |
410 </div> | |
411 </div> | |
412 | |
413 | |
414 <div class="slide"> | |
415 <div class="taninaritop"> | |
416 <h1>木の構成手順</h1> | |
417 <table class="tanitable"> | |
418 <tr> | |
419 <td> | |
420 <center><img class="scale" src="pix/uml8.png" alt=""></center> | |
421 </td> | |
422 <td valign="top"> | |
423 <Font size="6"> | |
424 | |
425 </Font> | |
426 </td> | |
427 </tr> | |
428 </table> | |
429 </div> | |
430 </div> | |
431 | |
432 | |
433 <div class="slide"> | |
434 <div class="taninaritop"> | |
435 <h1>木の構成手順</h1> | |
436 <table class="tanitable"> | |
437 <tr> | |
438 <td> | |
439 <center><img class="scale" src="pix/uml9.png" alt=""></center> | |
440 </td> | |
441 <td valign="top"> | |
442 <Font size="6"> | |
443 ここで接続先がクライアント1になっているがこれはプロキシ側で | |
444 <br> | |
445 <Font color="red"> | |
446 親の番号 = (自分の番号 - 1) / 親に対する子どもの数 | |
447 </Font> | |
448 <br> | |
449 を計算してどの親に接続させれば良いかを決めてクライアントに報告している。 | |
450 <br> | |
451 このように番号で木を管理している。 | |
452 </Font> | |
453 </td> | |
454 </tr> | |
455 </table> | |
456 </div> | |
457 </div> | |
458 | |
459 | |
267 <div class="slide"> | 460 <div class="slide"> |
268 <div class="taninaritop"> | 461 <div class="taninaritop"> |
269 <h1>木の再構成手順</h1> | 462 <h1>木の再構成手順</h1> |
270 <table class="tanitable"> | 463 <table class="tanitable"> |
271 <tr> | 464 <tr> |
272 <td> | 465 <td> |
273 <center><img class="scale" src="pix/reconnection1.png" alt=""></center> | 466 <center><img class="scale" src="pix/reuml1.png" alt=""></center> |
274 </td> | 467 </td> |
275 <td valign="top"> | 468 <td valign="top"> |
276 <Font size="6"> | 469 <Font size="6"> |
277 クライアント1が落ちたときの説明<br> | 470 クライアント1が落ちた時の再接続の処理についての説明。 |
278 クライアント1が落ちたとき子供のリーダー(クライアント3)がTop Proxyに親が落ちたことを報告する。<br> | 471 </Font> |
279 Top Proxyからラストノードに対して、落ちたノードの代わりをするように命令が行く。<br> | 472 </td> |
280 </Font> | 473 </tr> |
281 </Font> | 474 </table> |
282 </td> | 475 </div> |
283 </tr> | 476 </div> |
284 </table> | 477 |
285 </div> | 478 |
286 </div> | |
287 | |
288 <!--PAGE--> | |
289 <div class="slide"> | 479 <div class="slide"> |
290 <div class="taninaritop"> | 480 <div class="taninaritop"> |
291 <h1>木の再構成手順</h1> | 481 <h1>木の再構成手順</h1> |
292 <table class="tanitable"> | 482 <table class="tanitable"> |
293 <tr> | 483 <tr> |
294 <td> | 484 <td> |
295 <center><img class="scale" src="pix/reconnection2.png" alt=""></center> | 485 <center><img class="scale" src="pix/reuml2.png" alt=""></center> |
296 </td> | 486 </td> |
297 <td valign="top"> | 487 <td valign="top"> |
298 <Font size="6"> | 488 <Font size="6"> |
299 命令を受けたラストノードが落ちたノードの代わりとなる。<br> | 489 <Font color="red"> |
300 子供たちが新しい親に対して接続を行う。 | 490 lostHost(); |
301 </Font> | 491 </Font> |
302 </td> | 492 <br> |
303 </tr> | 493 木を構成する際にリーダを決めたが、そのリーダだけが呼び出す関数。 |
304 </table> | 494 <br> |
305 </div> | 495 プロキシに対し落ちた親(クライアント1)の情報を報告する。 |
306 </div> | 496 </Font> |
307 | 497 </td> |
308 <!-- PAGE --> | 498 </tr> |
309 <div class="slide"> | 499 </table> |
310 <h1>TreeVNCの設計</h1> | 500 </div> |
311 <table class="center" width=100% style="text-align: center;"> | 501 </div> |
312 <tr> | 502 |
313 <td><small>通常のVNC</small></td> | 503 |
314 <td><small>TreeVNC</small></td> | 504 <div class="slide"> |
315 </tr> | 505 <div class="taninaritop"> |
316 <tr> | 506 <h1>木の再構成手順</h1> |
317 <td> | 507 <table class="tanitable"> |
318 <img class="scale" src="./pix/NormalVNC3.png" width="300"> | 508 <tr> |
319 </td> | 509 <td> |
320 <td> | 510 <center><img class="scale" src="pix/reuml3.png" alt=""></center> |
321 <img src="./pix/TreeVNC3.png" width="300"> | 511 </td> |
322 </td> | 512 <td valign="top"> |
323 </tr> | 513 <Font size="6"> |
324 </p> | 514 <Font color="red"> |
325 </table> | 515 reportLastNode(); |
326 <li>クライアントが増えてもかかる負荷一定。</li> | 516 </Font> |
327 <li>通信網1本に対する負荷が減り、安定した通信ができる(有線)。</li> | 517 <br> |
328 </div> | 518 ラストノードに対し落ちたクライアントの代わりをするように命令を出す。 |
329 </div> | 519 </Font> |
330 <!-- PAGE --> | 520 </td> |
331 <div class="slide"> | 521 </tr> |
332 <h1>TreeVNCの設計</h1> | 522 </table> |
333 <table class="center" width=100% style="text-align: center;"> | 523 </div> |
334 <tr> | 524 </div> |
335 <td><small>通常のVNC</small></td> | 525 |
336 <td><small>TreeVNC</small></td> | 526 |
337 </tr> | 527 <div class="slide"> |
338 <tr> | 528 <div class="taninaritop"> |
339 <td> | 529 <h1>木の再構成手順</h1> |
340 <img class="scale" src="./pix/NormalVNC3.png" width="300"> | 530 <table class="tanitable"> |
341 </td> | 531 <tr> |
342 <td> | 532 <td> |
343 <img src="./pix/TreeVNC3.png" width="300"> | 533 <center><img class="scale" src="pix/reuml4.png" alt=""></center> |
344 </td> | 534 </td> |
345 </tr> | 535 <td valign="top"> |
346 </p> | 536 <Font size="6"> |
347 </table> | 537 <Font color="red"> |
348 <table class="center" border=1 cellspacing="0" width=100%> | 538 connectAndAuthenticate(); |
349 <tr> | 539 </Font> |
350 <td></td> | 540 <br> |
351 <td>通常のVNC</td> | 541 プロキシから受け取ったデータをもとに接続を開始する関数。 |
352 <td>TreeVNC</td> | 542 <br> |
353 </tr> | 543 この時クライアント6がクライアント1に変わる。 |
354 <tr> | 544 |
355 <td>通信量</td> | 545 </Font> |
356 <td> N*データ量 (クライアントの数に比例) </td> | 546 </td> |
357 <td> (M+1) * データ量</td> | 547 </tr> |
358 </tr> | 548 </table> |
359 </table> | 549 </div> |
360 <p style="text-align: center;"><small>クライアントの数をN、木構造の子供の数をMとする</small> </p> | 550 </div> |
361 </div> | 551 |
362 </div> | 552 |
363 | 553 <div class="slide"> |
554 <div class="taninaritop"> | |
555 <h1>木の再構成手順</h1> | |
556 <table class="tanitable"> | |
557 <tr> | |
558 <td> | |
559 <center><img class="scale" src="pix/reuml5.png" alt=""></center> | |
560 </td> | |
561 <td valign="top"> | |
562 <Font size="6"> | |
563 <Font color="red"> | |
564 transferParentAddress(); | |
565 </Font> | |
566 <br> | |
567 落ちた親の子供たちに対し新しい親のアドレスを報告する関数。 | |
568 </Font> | |
569 </td> | |
570 </tr> | |
571 </table> | |
572 </div> | |
573 </div> | |
574 | |
575 | |
576 <div class="slide"> | |
577 <div class="taninaritop"> | |
578 <h1>木の再構成手順</h1> | |
579 <table class="tanitable"> | |
580 <tr> | |
581 <td> | |
582 <center><img class="scale" src="pix/reuml6.png" alt=""></center> | |
583 </td> | |
584 <td valign="top"> | |
585 <Font size="6"> | |
586 <Font color="red"> | |
587 connectAndAuthenticate(); | |
588 </Font> | |
589 <br> | |
590 プロキシから受け取ったデータをもとに接続を開始する関数。 | |
591 | |
592 </Font> | |
593 </td> | |
594 </tr> | |
595 </table> | |
596 </div> | |
597 </div> | |
364 | 598 |
365 <!--RFBPROTOCOL説明--> | 599 <!--RFBPROTOCOL説明--> |
366 | 600 <!-- PAGE --> |
601 <div class="slide"> | |
602 <h1>RFB protocol</h1> | |
603 <li>Remote Frame Buffer Protocol : <br>GUI操作によるリモートアクセス用の通信プロトコル。VNCで用いられている。</li> | |
604 <li><font color=blue>1~5</font>まではinitial seaquenceとなる。</li> | |
605 <li><font color=orange>6</font>以降は繰り返し行われる処理。画面のデータが転送されてくる。</li> | |
606 </div> | |
367 | 607 |
368 <!-- PAGE --> | 608 <!-- PAGE --> |
369 <div class="slide"> | 609 <div class="slide"> |
370 <h1>画像の更新(FramebufferUpdate)</h1> | 610 <h1>画像の更新(FramebufferUpdate)</h1> |
371 <li>転送される画面(フレームバッファ)のデータは変更があった部分(差分)だけが矩形単位で送られる。</li> | 611 <li>転送される画面(フレームバッファ)のデータは変更があった部分(差分)だけが矩形単位で送られる。</li> |
392 <li>クライアントから接続されるとsenderスレッドが作られる。</li> | 632 <li>クライアントから接続されるとsenderスレッドが作られる。</li> |
393 <li>senderスレッドによりデータの転送は並列に行われる。</li> | 633 <li>senderスレッドによりデータの転送は並列に行われる。</li> |
394 <p class="textcenter"> | 634 <p class="textcenter"> |
395 <img src="./pix/MulticastQueue3.png"> | 635 <img src="./pix/MulticastQueue3.png"> |
396 </p> | 636 </p> |
397 <li class="incremental">MulticastQueueクラスを用いた並列な転送を行った。</li> | 637 <li>MulticastQueueクラスを用いた並列な転送を行った。</li> |
398 </div> | 638 </div> |
399 | 639 |
400 <!--MulticastQueueが必要になった経緯--> | 640 <!--MulticastQueueが必要になった経緯--> |
641 <!-- | |
401 <div class="slide"> | 642 <div class="slide"> |
402 <h1>MulticastQueue</h1> | 643 <h1>MulticastQueue</h1> |
403 <li>クライアントは、自分のペースでデータを読み込みたい。</li> | 644 <li>クライアントは、自分のペースでデータを読み込みたい。</li> |
404 <li></li> | 645 <li></li> |
405 <li class="incremental">TreeVNCではVNCサーバとの接続はこのZRLEを扱う。</li> | 646 <li class="incremental">TreeVNCではVNCサーバとの接続はこのZRLEを扱う。</li> |
406 </div> | 647 </div> |
648 --> | |
649 | |
650 <!--PAGE--> | |
651 <div class="slide"> | |
652 <h1>MulticastQueue</h1> | |
653 <li>MulticastQueue:データを順序よく読み込ませるクラス</li> | |
654 <table class="textcenter" border=1 cellspacing="0" width=100%> | |
655 <tr> | |
656 <td width=50%> | |
657 <img src="./pix/MulticastQueue2.png"> | |
658 </td> | |
659 <td> | |
660 <img src="./pix/MulticastQueue.png"> | |
661 </td> | |
662 </tr> | |
663 | |
664 <tr> | |
665 <td> | |
666 次のデータがなければwaitする | |
667 </td> | |
668 <td> | |
669 データがputされ次第読み込みを再開する | |
670 </td> | |
671 </tr> | |
672 </table> | |
673 <p><small> | |
674 MulticastQueueは、java.util.CountDownnLatchにより実装されている。 | |
675 </small></p> | |
676 </div> | |
677 | |
407 | 678 |
408 <!-- PAGE --> | 679 <!-- PAGE --> |
409 <div class="slide"> | 680 <div class="slide"> |
410 <h1>MulticastQueue</h1> | 681 <h1>MulticastQueue</h1> |
411 <table class="textcenter" style="margin-top: 50px" width=100% border=1 cellspacing="0"> | 682 <table class="textcenter" style="margin-top: 50px" width=100% border=1 cellspacing="0"> |
462 <li>どこからも参照されないデータはProxyのメモリから削除される。</li> | 733 <li>どこからも参照されないデータはProxyのメモリから削除される。</li> |
463 </div> | 734 </div> |
464 <!-- PAGE --> | 735 <!-- PAGE --> |
465 <div class="slide"> | 736 <div class="slide"> |
466 <h1>エンコード</h1> | 737 <h1>エンコード</h1> |
467 <li>MAC OS XではZRLEを使ってVNCを行うことができる</li> | 738 <li>Mac OS XではZRLEを使ってVNCを行うことができる</li> |
468 <li>ZRLEはデータ量がRAWデータの約4分の1ですむ。</li> | 739 <li>ZRLEはデータ量がRAWデータの約4分の1ですむ。</li> |
469 <li class="incremental">TreeVNCではVNCサーバとの接続はこのZRLEを扱う。</li> | 740 <li>TreeVNCではVNCサーバとの接続はこのZRLEを扱う。</li> |
470 </div> | 741 </div> |
471 <!-- PAGE --> | 742 <!-- PAGE --> |
472 <div class="slide"> | 743 <div class="slide"> |
473 <h1>ZRLE</h1> | 744 <h1>ZRLE</h1> |
474 <li>ZRLE : Zlib Run-Length Encoding </li> | 745 <li>ZRLE : Zlib Run-Length Encoding </li> |
493 <td>U8 array</td> | 764 <td>U8 array</td> |
494 <td>ZlibData</td> | 765 <td>ZlibData</td> |
495 </tr> | 766 </tr> |
496 </table> | 767 </table> |
497 </small> | 768 </small> |
498 <li class="incremental">Zlibデータは辞書を元にデータの解凍を行う</li> | 769 <li>Zlibデータは辞書を元にデータの解凍を行う</li> |
499 <li class="incremental">辞書がなければデータを正しく解凍できない</li> | 770 <li>辞書がなければデータを正しく解凍できない</li> |
500 </div> | 771 </div> |
772 <!--PAGE--> | |
773 <div class="slide"> | |
774 <h1>ZRLEの問題</h1> | |
775 <li>辞書はZlibデータの最初に送られてくる。</li> | |
776 <li>もしも、ZRLEのデータを最初から送っているのなら、辞書も送ることができる。</li> | |
777 <li>データの途中から送ると辞書は送られず、正しく解凍を行うことができない。</li> | |
778 <table class="textcenter" width=100%> | |
779 <tr> | |
780 <td> | |
781 <img src="./pix/ZRLE.png" width="600" > | |
782 </td> | |
783 <td> | |
784 <img src="./pix/ZRLE2.png" width="600" > | |
785 </td> | |
786 </tr> | |
787 </table> | |
788 </div> | |
789 | |
501 <!-- PAGE --> | 790 <!-- PAGE --> |
502 <div class="slide"> | 791 <div class="slide"> |
503 <h1>ZRLEE</h1> | 792 <h1>ZRLEE</h1> |
504 <li>そこで、ProxyがZRLEを使ってデータを受け取り圧縮し直して木の下へ流していくことにした。</li> | 793 <li>そこで、ProxyがZRLEを使ってデータを受け取り圧縮し直して木の下へ流していくことにした。</li> |
505 <li><small>この圧縮し直したデータはZRLEEと名付けた。</small></li> | 794 <li><small>この圧縮し直したデータはZRLEEと名付けた。</small></li> |
613 <div class="slide"> | 902 <div class="slide"> |
614 <h1>既存のプログラムとの比較</h1> | 903 <h1>既存のプログラムとの比較</h1> |
615 <li>VNC Reflector</li> | 904 <li>VNC Reflector</li> |
616 <ul> | 905 <ul> |
617 <li>tightVNCの作者が作成したプログラム</li> | 906 <li>tightVNCの作者が作成したプログラム</li> |
618 <li>VNC Reflecotrにクライアントが接続することでVNCを行うことができる</li> | 907 <li>VNC Reflector(Proxy)にクライアントが接続することでVNCを行うことができる</li> |
619 </ul> | 908 </ul> |
620 </div> | 909 </div> |
621 <!-- PAGE --> | 910 <!-- PAGE --> |
622 <!-- PAGE --> | 911 <!-- PAGE --> |
623 <div class="slide"> | 912 <div class="slide"> |
624 <h1>質問タイム</h1> | 913 <h1>質問</h1> |
625 </div> | 914 </div> |
626 </body> | 915 </body> |
627 </html> | 916 </html> |