Mercurial > hg > Papers > 2011 > yuu-jssst
changeset 12:71096d59d9eb
update yuu-jssst.pdf
author | Yu Taninari <you@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Aug 2011 20:05:55 +0900 |
parents | 8adf2865dee4 |
children | 1fe7a2bfc190 |
files | yuu-jssst.pdf yuu-jssst.tex |
diffstat | 2 files changed, 88 insertions(+), 92 deletions(-) [+] |
line wrap: on
line diff
--- a/yuu-jssst.tex Mon Aug 08 19:46:59 2011 +0900 +++ b/yuu-jssst.tex Mon Aug 08 20:05:55 2011 +0900 @@ -1,79 +1,75 @@ % Sample file for the use of compsoft style file. % -%\documentclass[T]{compsoft} -\documentclass[K,L]{compsoft} -% -% その他の optional argument については,compsoft.sty の旧版を -% 参照のこと. +\documentclass[T]{compsoft} % Preamble % -% 「コンピュータソフトウェア」誌に掲載される論文の場合,次で -% 巻数,号数,開始ページ,終了ページを指定する. -\volNoPp{27}{0}{1}{5} +% $B!V%3%s%T%e!<%?%=%U%H%&%'%"!W;o$K7G:\$5$l$kO@J8$N>l9g!$<!$G(B +% $B4,?t!$9f?t!$3+;O%Z!<%8!$=*N;%Z!<%8$r;XDj$9$k!%(B +%\volNoPp{16}{5}{78}{83} -% ワークショップによる推薦論文の場合,ワークショップ名を指定する. -% \suisen{ワークショップ名} +% $B%o!<%/%7%g%C%W$K$h$k?dA&O@J8$N>l9g!$%o!<%/%7%g%C%WL>$r;XDj$9$k!%(B +% \suisen{$B%o!<%/%7%g%C%WL>(B} -% 特集の場合,特集のタイトルを与える. -% \tokushu{特集のタイトル} +% $BFC=8$N>l9g!$FC=8$N%?%$%H%k$rM?$($k!%(B +% \tokushu{$BFC=8$N%?%$%H%k(B} -% 大会論文の場合,\taikai で開催年を指定する.ここで指定した年から -% 大会の回数は計算される. -% \taikai{2009} +% $BBg2qO@J8$N>l9g!$(B\taikai $B$G3+:EG/$r;XDj$9$k!%$3$3$G;XDj$7$?G/$+$i(B +% $BBg2q$N2s?t$O7W;;$5$l$k!%(B +\taikai{2011} -% ここに,使用するパッケージを列挙する. +% $B$3$3$K!$;HMQ$9$k%Q%C%1!<%8$rNs5s$9$k!%(B \usepackage[dvips]{graphics} -% ユーザが定義したマクロなどはここに置く.ただし学会誌のスタイルの -% 再定義は原則として避けること. +% $B%f!<%6$,Dj5A$7$?%^%/%m$J$I$O$3$3$KCV$/!%$?$@$73X2q;o$N%9%?%$%k$N(B +% $B:FDj5A$O86B'$H$7$FHr$1$k$3$H!%(B \begin{document} -% 論文のタイトル -\title{VNCを用いた授業用画面共有システムの設計と実装} +% $BO@J8$N%?%$%H%k(B +\title{VNC$B$rMQ$$$?<x6HMQ2hLL6&M-%7%9%F%`$N@_7W$H<BAu(B} -% 著者 -% 和文論文の場合,姓と名の間には半角スペースを入れ, -% 複数の著者の間は全角スペースで区切る +% $BCx<T(B +% $BOBJ8O@J8$N>l9g!$@+$HL>$N4V$K$OH>3Q%9%Z!<%9$rF~$l!$(B +% $BJ#?t$NCx<T$N4V$OA43Q%9%Z!<%9$G6h@Z$k(B % -\author{河野 真治 谷成 雄 大城 信康 +\author{$B2OLn(B $B??<#!!C+@.(B $BM:!!Bg>k(B $B?.9/(B % -% ここにタイトルの英訳を書く +% $B$3$3$K%?%$%H%k$N1QLu$r=q$/(B % \ejtitle{Design and implementation of Screen Sharing System with VNC for lecture} % -% ここに著者英文表記 (英文の場合は和文表記) および -% 所属 (和文および英文) を書く. -% 複数著者の所属はまとめてよい. +% $B$3$3$KCx<T1QJ8I=5-(B ($B1QJ8$N>l9g$OOBJ8I=5-(B) $B$*$h$S(B +% $B=jB0(B ($BOBJ8$*$h$S1QJ8(B) $B$r=q$/!%(B +% $BJ#?tCx<T$N=jB0$O$^$H$a$F$h$$!%(B % -\shozoku{Shinji Kono, Yu Taninari, Nobuyasu Oshiro}{琉球大学 工学部情報工学科 並列信頼研究室}% +\shozoku{Shinji Kono, Yu Taninari, Nobuyasu Oshiro}{$BN05eBg3X(B $B9)3XIt>pJs9)3X2J(B $BJBNs?.Mj8&5f<<(B}% {Dept.\ of The Department of Information Engineering, University of Ryukyus Concurrency Reliance Laboratory} -%\shozoku{Kazunori Ueda}{早稲田大学理工学部情報学科}% +%\shozoku{Kazunori Ueda}{$BAa0pEDBg3XM}9)3XIt>pJs3X2J(B}% %{Dept.\ of Information and Computer Science, Waseda University} % -% 出典情報は \shutten とすれば出力される. +% $B=PE5>pJs$O(B \shutten $B$H$9$l$P=PNO$5$l$k!%(B \shutten % -% 受付年月日,記事カテゴリなどは自動的に生成される. +% $B<uIUG/7nF|!$5-;v%+%F%4%j$J$I$O<+F0E*$K@8@.$5$l$k!%(B \uketsuke{2010}{1}{7} % -% その他,脚注に入れるものがあれば,\note に記述する. -%\note{本ガイドは,旧スタイルファイルとともに配布されていた -%\texttt{sample.tex}をもとに発展させたものである.} +% $B$=$NB>!$5SCm$KF~$l$k$b$N$,$"$l$P!$(B\note $B$K5-=R$9$k!%(B +%\note{$BK\%,%$%I$O!$5l%9%?%$%k%U%!%$%k$H$H$b$KG[I[$5$l$F$$$?(B +%\texttt{sample.tex}$B$r$b$H$KH/E8$5$;$?$b$N$G$"$k!%(B} } % -% 和文アブストラクト +% $BOBJ8%"%V%9%H%i%/%H(B \Jabstract{% -各クライアントをTree型に接続し, 親が配信したデータをリレーさせることで分散VNCアプリケーションを実装した. -通常のVNCでは配信者へ負荷が集中する設計となっている. 例えば, 大学の講義等でVNCを用いて画面共有を行った時, クライアントの増加に比例して配信者への負荷が増えてしまう. -この問題を解決する為に, Tree構造にクライアントを接続させ, Topのクライアントから子供へデータを送ることでスケーラビリティを持たせた. -その結果, クライアントの数を増やしてもサーバ側への負荷を抑えることができた. -また, VNC Refrectorとの性能比較も行う. +$B3F%/%i%$%"%s%H$r(BTree$B7?$K@\B3$7(B, $B?F$,G[?.$7$?%G!<%?$r%j%l!<$5$;$k$3$H$GJ,;6(BVNC$B%"%W%j%1!<%7%g%s$r<BAu$7$?(B. +$BDL>o$N(BVNC$B$G$OG[?.<T$XIi2Y$,=8Cf$9$k@_7W$H$J$C$F$$$k(B. $BNc$($P(B, $BBg3X$N9V5AEy$G(BVNC$B$rMQ$$$F2hLL6&M-$r9T$C$?;~(B, $B%/%i%$%"%s%H$NA}2C$KHfNc$7$FG[?.<T$X$NIi2Y$,A}$($F$7$^$&(B. +$B$3$NLdBj$r2r7h$9$k0Y$K(B, Tree$B9=B$$K%/%i%$%"%s%H$r@\B3$5$;(B, Top$B$N%/%i%$%"%s%H$+$i;R6!$X%G!<%?$rAw$k$3$H$G%9%1!<%i%S%j%F%#$r;}$?$;$?(B. +$B$=$N7k2L(B, $B%/%i%$%"%s%H$N?t$rA}$d$7$F$b%5!<%PB&$X$NIi2Y$rM^$($k$3$H$,$G$-$?(B. +$B$^$?(B, VNC Refrector$B$H$N@-G=Hf3S$b9T$&(B. } % -% 英文アブストラクト (大会和文論文の場合には必要なし) +% $B1QJ8%"%V%9%H%i%/%H(B ($BBg2qOBJ8O@J8$N>l9g$K$OI,MW$J$7(B) %\Eabstract{% %This documentation describes the new version of the %\texttt{compsoft.sty} document style file. @@ -83,67 +79,67 @@ % \maketitle -\section{はじめに} - 普段授業を行う際、プロジェクタなどを使って授業を進めている。しかし、後ろの席から見えにくいなどの不便を感じることがよくある。授業をうけている生徒の手元にパソコンがあるならば、そこに先生のスライドを表示して授業を進めれば後ろの席に座っても手元に画面があるので見えづらいという問題は解消される。 - VNC(画面共有)を使えば、スライドを生徒の手元の画面に表示することができる。しかし、多人数の生徒が先生のパソコンに同時に接続してしまうと処理性能が落ちて授業の進行に画面がついていかなくなってしまう。この問題は一つのパソコンに多人数が繋がいるときに起こる問題である。 - 本論文では、多人数で画面共有ができるようにクライアントをツリー構造に接続させ、上から順番にデータを流していくという方法で新しいVNCの設計・実装を行う。 +\section{$B$O$8$a$K(B} +$B!!IaCJ<x6H$r9T$&:]!"%W%m%8%'%/%?$J$I$r;H$C$F<x6H$r?J$a$F$$$k!#$7$+$7!"8e$m$N@J$+$i8+$($K$/$$$J$I$NITJX$r46$8$k$3$H$,$h$/$"$k!#<x6H$r$&$1$F$$$k@8EL$N<j85$K%Q%=%3%s$,$"$k$J$i$P!"$=$3$K@h@8$N%9%i%$%I$rI=<($7$F<x6H$r?J$a$l$P8e$m$N@J$K:B$C$F$b<j85$K2hLL$,$"$k$N$G8+$($E$i$$$H$$$&LdBj$O2r>C$5$l$k!#(B +$B!!(BVNC$B!J2hLL6&M-!K$r;H$($P!"%9%i%$%I$r@8EL$N<j85$N2hLL$KI=<($9$k$3$H$,$G$-$k!#$7$+$7!"B??M?t$N@8EL$,@h@8$N%Q%=%3%s$KF1;~$K@\B3$7$F$7$^$&$H=hM}@-G=$,Mn$A$F<x6H$N?J9T$K2hLL$,$D$$$F$$$+$J$/$J$C$F$7$^$&!#$3$NLdBj$O0l$D$N%Q%=%3%s$KB??M?t$,7R$,$$$k$H$-$K5/$3$kLdBj$G$"$k!#(B +$B!!K\O@J8$G$O!"B??M?t$G2hLL6&M-$,$G$-$k$h$&$K%/%i%$%"%s%H$r%D%j!<9=B$$K@\B3$5$;!">e$+$i=gHV$K%G!<%?$rN.$7$F$$$/$H$$$&J}K!$G?7$7$$(BVNC$B$N@_7W!&<BAu$r9T$&!#(B -\section{実装方法} +\section{$B<BAuJ}K!(B} \subsection{tree structure} -今回は、ホストに対しクライアントがツリー状に繋がっていくように実装した。ツリーの構成は以下の手順で行う。 - \begin{enumerate} - \item クライアントが接続する際、ホストに接続をしているプロキシ(今後このプロキシのことをトップと記述する)に接続する。 - \item トップはクライアントにどこに接続すれば良いかを知らせる。(このときに親の番号と自分の番号それからリーダーであるかどうかを一緒に知らせる) - \item クライアントはトップから指定されたノードに接続を行う。 - \end{enumerate} - -\subsection{treeの再構成} -今回の実装はクライアントがツリー状に繋がっているので、親ノードが落ちると子ノードも一緒に落ちてしまう。そこで、treeの再構成が必要になる。 +$B:#2s$O!"%[%9%H$KBP$7%/%i%$%"%s%H$,%D%j!<>u$K7R$,$C$F$$$/$h$&$K<BAu$7$?!#%D%j!<$N9=@.$O0J2<$N<j=g$G9T$&!#(B +$B!!(B\begin{enumerate} + \item $B%/%i%$%"%s%H$,@\B3$9$k:]!"%[%9%H$K@\B3$r$7$F$$$k%W%m%-%7!J:#8e$3$N%W%m%-%7$N$3$H$r%H%C%W$H5-=R$9$k!K$K@\B3$9$k!#(B +$B!!(B\item $B%H%C%W$O%/%i%$%"%s%H$K$I$3$K@\B3$9$l$PNI$$$+$rCN$i$;$k!#!J$3$N$H$-$K?F$NHV9f$H<+J,$NHV9f$=$l$+$i%j!<%@!<$G$"$k$+$I$&$+$r0l=o$KCN$i$;$k!K(B +$B!!(B\item $B%/%i%$%"%s%H$O%H%C%W$+$i;XDj$5$l$?%N!<%I$K@\B3$r9T$&!#(B +$B!!(B\end{enumerate} +$B!!(B +\subsection{tree$B$N:F9=@.(B} +$B:#2s$N<BAu$O%/%i%$%"%s%H$,%D%j!<>u$K7R$,$C$F$$$k$N$G!"?F%N!<%I$,Mn$A$k$H;R%N!<%I$b0l=o$KMn$A$F$7$^$&!#$=$3$G!"(Btree$B$N:F9=@.$,I,MW$K$J$k!#(B \begin{enumerate} - \item 親ノードが落ちた際に、子ノードの中で一番若い番号の子ノードがトップに対して自分の親ノードが落ちたことを報告する。(親ノードの番号を知らせる) - \item トップは木の番号が一番大きいノードに対して1で報告を受けた親ノードの代わりになるように命令を出す。$\\$ - \item 親ノードがいなくなった子ノードたちはトップに対して、2で新しく繋がった親ノードのIPアドレスを教えてもらいそのアドレスに対して接続をおこなう。 -上記の構成の場合、一つのノードが落ちた場合に再接続を行うノードは2分木の場合3ノードである。 - \end{enumerate} + \item $B?F%N!<%I$,Mn$A$?:]$K!";R%N!<%I$NCf$G0lHV<c$$HV9f$N;R%N!<%I$,%H%C%W$KBP$7$F<+J,$N?F%N!<%I$,Mn$A$?$3$H$rJs9p$9$k!#!J?F%N!<%I$NHV9f$rCN$i$;$k!K(B +$B!!(B\item $B%H%C%W$OLZ$NHV9f$,0lHVBg$-$$%N!<%I$KBP$7$F#1$GJs9p$r<u$1$??F%N!<%I$NBe$o$j$K$J$k$h$&$KL?Na$r=P$9!#(B$\\$ +$B!!(B\item $B?F%N!<%I$,$$$J$/$J$C$?;R%N!<%I$?$A$O%H%C%W$KBP$7$F!"#2$G?7$7$/7R$,$C$??F%N!<%I$N(BIP$B%"%I%l%9$r65$($F$b$i$$$=$N%"%I%l%9$KBP$7$F@\B3$r$*$3$J$&!#(B +$B>e5-$N9=@.$N>l9g!"0l$D$N%N!<%I$,Mn$A$?>l9g$K:F@\B3$r9T$&%N!<%I$O#2J,LZ$N>l9g#3%N!<%I$G$"$k!#(B +$B!!(B\end{enumerate} \begin{figure}[tb] \begin{center} \scalebox{0.80}{\includegraphics{fig/reconnection.eps}} \end{center} -\caption{1番の木が落ちたときの再接続の処理(TはTOP)} +\caption{$B#1HV$NLZ$,Mn$A$?$H$-$N:F@\B3$N=hM}(B(T$B$O(BTOP)} \label{figure:splaying} \end{figure} -\section{java.util.zip.deflaterのバグ} -VNCで扱うRfb Protocolには、使えるエンコーディングのタイプとしてZRLE(Zlib Run-Length Encoding)がある。 -ZRLEはZlib圧縮されたデータを内包する。 -deflaterはプリセット辞書をもち、Zlib圧縮されたデータはその辞書を用いて解凍が行われる。 -辞書はで更新されることもあるのでZlib圧縮されたデータを解凍する為には辞書のデータも受け取る必要がある。 -しかし、JavaにはこのZlibの辞書を相手へ書きだす(flush)する機能が無い。 -元々のZlibの規約にはこの辞書をflushする機能があったがJavaには実装されていなかった。 -これはJava.util.zip.deflaterのバグである。 +\section{java.util.zip.deflater$B$N%P%0(B} +VNC$B$G07$&(BRfb Protocol$B$K$O!";H$($k%(%s%3!<%G%#%s%0$N%?%$%W$H$7$F(BZRLE(Zlib Run-Length Encoding)$B$,$"$k!#(B +ZRLE$B$O(BZlib$B05=L$5$l$?%G!<%?$rFbJq$9$k!#(B +deflater$B$O%W%j%;%C%H<-=q$r$b$A!"(BZlib$B05=L$5$l$?%G!<%?$O$=$N<-=q$rMQ$$$F2rE`$,9T$o$l$k!#(B +$B<-=q$O$G99?7$5$l$k$3$H$b$"$k$N$G(BZlib$B05=L$5$l$?%G!<%?$r2rE`$9$k0Y$K$O<-=q$N%G!<%?$b<u$1<h$kI,MW$,$"$k!#(B +$B$7$+$7!"(BJava$B$K$O$3$N(BZlib$B$N<-=q$rAj<j$X=q$-$@$9(B(flush)$B$9$k5!G=$,L5$$!#(B +$B85!9$N(BZlib$B$N5,Ls$K$O$3$N<-=q$r(Bflush$B$9$k5!G=$,$"$C$?$,(BJava$B$K$O<BAu$5$l$F$$$J$+$C$?!#(B +$B$3$l$O(BJava.util.zip.deflater$B$N%P%0$G$"$k!#(B \section{ZRLEE} -そこで、Top ProxyがZRLEで受け取ったデータをunzipし、データをzipし直して最後にfinish() -をいれることで初めからデータを読んでいなくても解凍を行えるようにした。 -このエンコードはZRLEEエンコードと定義した。 -一度ZRLEEエンコードに変換してしまえば、そのデータをそのまま流すだけで良い。 -よって変換はTop Proxyが行う一回だけですむ。 -ただし、deflaterでは前回までの通信で得た辞書をクリアしないといけないため、Client側では毎回 -deflaterは新しいものを使うことになる。 -ZRLEEはクライアント側が対応していなければならないという問題がある。 +$B$=$3$G!"(BTop Proxy$B$,(BZRLE$B$G<u$1<h$C$?%G!<%?$r(Bunzip$B$7!"%G!<%?$r(Bzip$B$7D>$7$F:G8e$K(Bfinish() +$B$r$$$l$k$3$H$G=i$a$+$i%G!<%?$rFI$s$G$$$J$/$F$b2rE`$r9T$($k$h$&$K$7$?!#(B +$B$3$N%(%s%3!<%I$O(BZRLEE$B%(%s%3!<%I$HDj5A$7$?!#(B +$B0lEY(BZRLEE$B%(%s%3!<%I$KJQ49$7$F$7$^$($P!"$=$N%G!<%?$r$=$N$^$^N.$9$@$1$GNI$$!#(B +$B$h$C$FJQ49$O(BTop Proxy$B$,9T$&0l2s$@$1$G$9$`!#(B +$B$?$@$7!"(Bdeflater$B$G$OA02s$^$G$NDL?.$GF@$?<-=q$r%/%j%"$7$J$$$H$$$1$J$$$?$a!"(BClient$BB&$G$OKh2s(B +deflater$B$O?7$7$$$b$N$r;H$&$3$H$K$J$k!#(B +ZRLEE$B$O%/%i%$%"%s%HB&$,BP1~$7$F$$$J$1$l$P$J$i$J$$$H$$$&LdBj$,$"$k!#(B -\section{ZRLEとZRLEEのデータ圧縮率の比較} -ZRLEとZRLEEを用いて通信を行う場合、データ量にどれくらいの差がでたのかを図2に示す。 -図2は1920 * 1080の画面の全描画にかかるデータ量を測った結果を示した図である。ZRLEEの方がデータ量が少なくですんでいる。 -これは、ZRLEのデータの中にはdeflaterが持つ辞書のデータを更新しようとするため -1つのBufferedUpdateのたびに辞書を送信するはずのZRLEEが優っているのは、VNCが +\section{ZRLE$B$H(BZRLEE$B$N%G!<%?05=LN($NHf3S(B} +ZRLE$B$H(BZRLEE$B$rMQ$$$FDL?.$r9T$&>l9g!"%G!<%?NL$K$I$l$/$i$$$N:9$,$G$?$N$+$r?^(B2$B$K<($9!#(B +$B?^(B2$B$O(B1920 * 1080$B$N2hLL$NA4IA2h$K$+$+$k%G!<%?NL$rB,$C$?7k2L$r<($7$??^$G$"$k!#(BZRLEE$B$NJ}$,%G!<%?NL$,>/$J$/$G$9$s$G$$$k!#(B +$B$3$l$O!"(BZRLE$B$N%G!<%?$NCf$K$O(Bdeflater$B$,;}$D<-=q$N%G!<%?$r99?7$7$h$&$H$9$k$?$a(B +1$B$D$N(BBufferedUpdate$B$N$?$S$K<-=q$rAw?.$9$k$O$:$N(BZRLEE$B$,M%$C$F$$$k$N$O!"(BVNC$B$,(B -これは、VNCではZlibで圧縮されたデータを解凍する際に、持っていた解凍の為の辞書がそこまで役に立たないことを示している。 +$B$3$l$O!"(BVNC$B$G$O(BZlib$B$G05=L$5$l$?%G!<%?$r2rE`$9$k:]$K!";}$C$F$$$?2rE`$N0Y$N<-=q$,$=$3$^$GLr$KN)$?$J$$$3$H$r<($7$F$$$k!#(B ZRLE @@ -163,19 +159,19 @@ -\section{参考文献の参照} +\section{$B;29MJ88%$N;2>H(B} -\section{参考文献リスト} +\section{$B;29MJ88%%j%9%H(B} -\section{謝辞} +\section{$B<U<-(B} -謝辞は,参考文献の前に,次のように書く. +$B<U<-$O!$;29MJ88%$NA0$K!$<!$N$h$&$K=q$/!%(B \begin{verbatim} - {\bf 謝辞}\ 本論文の初期の版について議論して - いただいた A 氏に感謝する. + {\bf $B<U<-(B}\ $BK\O@J8$N=i4|$NHG$K$D$$$F5DO@$7$F(B + $B$$$?$@$$$?(B A $B;a$K46<U$9$k!%(B \end{verbatim} % \begin{adjustvboxheight} % needed only when Appendix follows @@ -183,8 +179,8 @@ \bibitem{Lamport:LaTeX} Lamport, L. : \textit{A Document Preparation System {\LaTeX} User's Guide \& Reference Manual}, -Addison-Wesley, Reading, Massachusetts,1986. +Addison-Wesley, Reading, Massachusetts$B!$(B1986. \end{thebibliography} %\end{adjustvboxheight} % needed only when Appendix follows -\end{document} +\end{document} \ No newline at end of file