diff paper/sigos.tex @ 1:e13be99f69b6

can't view graphix correct place
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 05 May 2015 16:37:38 +0900
parents 0127effb8fcd
children 74e97b9a4caf
line wrap: on
line diff
--- a/paper/sigos.tex	Tue May 05 15:36:41 2015 +0900
+++ b/paper/sigos.tex	Tue May 05 16:37:38 2015 +0900
@@ -1,5 +1,6 @@
-\documentclass[techrep]{ipsjpapers}
-\usepackage[dvipdfm]{graphicx}
+\documentclass[techrep, ,dvipdfmx]{ipsjpapers}
+\usepackage[dvipdfmx]{color}
+\usepackage[dvipdfmx]{graphicx}
 \usepackage{url}
 \usepackage{listings}
 \usepackage{mediabb}
@@ -99,16 +100,6 @@
 CSは実行に必要なDSが揃うと実行されるという性質を持ち、入力されたDSに応じた結果が出力される。
 CSを実行するために必要な入力DSはInputDS、CSが計算を行った後に出力されるDSはOutput DSと呼ばれる。データの依存関係にないCSは並列実行が可能であるため、並列度を上げるためにはCSの処理内容を細かく分割して依存するデータを少なくするのが望ましい。
 
-\subsection{ComputationとMeta Computation}
-AliceのComputationは、keyで指し示されるDSを待ち合わせてCSを実行させると定義できる。
-それに対して、AliceのMeta Computationは、AliceのComputationを支えているComputationのプログラミングと定義できる。
-
-例えば、トポロジーを指定するAPIはMeta Computationである。Aliceが動作するためにはトポロジーを決める必要がある。つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。トポロジーが決定するとそのトポロジーを構成する計算が行われる。トポロジーを指定するAPIはその構成の計算をプログラミングして変更するものである。
-他にも再接続の動作を決めるAPIや切断時の動作を決めるAPIはMeta Computationである。
-
-これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。
-このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。
-
 \subsection{Data Segment}
 複数のスレッドから1つのデータに変更を行うためには、データの不整合を防ぐためのlockが必要になる。複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になる。このlockがスケラビリティーを低下させる。つまりデータのサイズも並列計算には重要である。
 
@@ -121,7 +112,7 @@
 
 \begin{figure}[htbp]
 \begin{center}
-\includegraphics[width=60mm]{images/remote_datasegment.pdf}
+\includegraphics[scale=0.3]{images/remote_datasegment.pdf}
 \end{center}
 \caption{Remote DSMは他のノードのLocal DSMのproxy }
 \label{fig:RemoteDSM}
@@ -132,21 +123,21 @@
 putとupdateはDSを追加する際に、peekとtakeはDSを取得する際に使用する。
 
 \begin{itemize}
-\item {\ttfamily void put(String key, Object val)}
+\item {\ttfamily void put(String managerKey, String key, \\ Object val)}
 \end{itemize}
-DSをqueueに追加するためのAPIである。第一引数に対応するqueueに対してDSを追加している。
+DSをqueueに追加するためのAPIである。第一引数で指定したDSMの中の、第二引数に対応するqueueに対してDSを追加している。
 \begin{itemize}
-\item {\ttfamily void update(String key, Object val)}
+\item {\ttfamily void update(String managerKey, String key, \\ Object val)}
 \end{itemize}
 updateもqueueに追加するためのAPIである。putとの違いは、先頭のDSを削除してからDSを追加することである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。
 
 \begin{itemize}
-\item {\ttfamily void take(String key)}
+\item {\ttfamily void take(String managerKey, String key)}
 \end{itemize}
 takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。要求したDSが存在しなければ、CSの待ち合わせ (Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。
 
 \begin{itemize}
-\item {\ttfamily void peek(String key)}
+\item {\ttfamily void peek(String managerKey, String key)}
 \end{itemize}
 peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。
 
@@ -177,10 +168,6 @@
 ソースコード \ref{src:StartCodeSegment}は、5行目で次に実行させたいCS(ソースコード \ref{src:CodeSegment})を作成している。8行目でOutput DSMを通してLocal DSMに対してDSをputしている。
 Output DSMはCSの{\tt ods}というフィールドを用いてアクセスする。
 Output DSMは{\tt put}と{\tt update}を実行することができる。
-\begin{itemize}
-\item \verb+void put(String managerKey, String key, Object val)+
-\item \verb+void update(String managerKey, String key, Object val)+
-\end{itemize}
 TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でupdateが行われるとTestCodeSegmentは実行される。
 
 ソースコード\ref{src:CodeSegment}は、0から10までインクリメントする例題である。
@@ -213,6 +200,17 @@
 17行目でcountの値をインクリメントしてLocal DSMに値を追加する。
 13行目が終了条件であり、countの値が10になれば終了する。
 
+\subsection{ComputationとMeta Computation}
+AliceのComputationは、keyで指し示されるDSを待ち合わせてCSを実行させると定義できる。
+それに対して、AliceのMeta Computationは、AliceのComputationを支えているComputationのプログラミングと定義できる。
+
+例えば、トポロジーを指定するAPIはMeta Computationである。Aliceが動作するためにはトポロジーを決める必要がある。つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。トポロジーが決定するとそのトポロジーを構成する計算が行われる。トポロジーを指定するAPIはその構成の計算をプログラミングして変更するものである。
+他にも再接続の動作を決めるAPIや切断時の動作を決めるAPIはMeta Computationである。
+
+これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。
+このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。
+
+
 \section{Meta Data Segment}
 DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。
 それに対してMeta DSは、分散フレームワークAliceが管理しているデータである。Aliceを構成するCSによってのみ、その値は変更される。一部のMeta DSはアプリケーションに利用することができる。
@@ -229,9 +227,33 @@
 それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。
 
 
-\input{chapter2}
+
+
+\section{AliceVNC}
+AliceVNCは、当研究室で開発を行っているTreeVNCをAliceを用いて実装された、授業向け画面共有システムである。
+Aliceが実用的なアプリケーションを記述する能力をもつことを確認するために作成した。
+
+授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう(図\ref{fig:vnc})。この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである(図\ref{fig:treestructure})。TreeVNCは、TightVNCのソースコードを利用して開発されている。
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=80mm]{images/vnc.pdf}
+\end{center}
+\caption{VNCの構造 }
+\label{fig:vnc}
+\end{figure}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=120mm]{images/treestructure.pdf}
+\end{center}
+\caption{TreeVNC, AliceVNCの構造 }
+\label{fig:treestructure}
+\end{figure}
+
+
+
 % \input{chapter3}
-% \input{chapter4}
 % \input{chapter5}
 % \input{conclusion}