diff final_main/chapter4/chapter4.tex @ 11:b8149a449b7d

forget .DS_Store & add thankc & others
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Fri, 14 Feb 2020 20:11:28 +0900
parents 5ddb3e41e515
children c7ab31269230
line wrap: on
line diff
--- a/final_main/chapter4/chapter4.tex	Wed Feb 12 19:40:35 2020 +0900
+++ b/final_main/chapter4/chapter4.tex	Fri Feb 14 20:11:28 2020 +0900
@@ -19,9 +19,10 @@
 \item DataGearManager(以下 DGM)
 \end{itemize}
 
-CodeGearはクラスやスレッドに相当しする. DataGear は変数データに相当し, javaのアノテーション機能を用いて記述する. 
+CodeGearはクラスやスレッドに相当する. DataGear は変数データに相当し, javaのアノテーション機能を用いて記述する. 
 CG内に記述したKeyに全てのDGが揃った際に初めてそのCGが動作するという仕組みになっている. CodeGearManager はいわゆるノードに相当し, CG, DG ,DGM を管理する. 
 DataGearManager は DG を管理するもので,  put という操作により DG , つまり変数データを格納することができる. 
+
 DGM の put 操作を行う際には Local と Remote と 2 つのどちらかを選び, 変数の key とデータを引数に書く. 
 Local であれば, Local の CGM が管理している DGM に対し, DG を格納していく. 
 Remote であれば接続した Remote 先の CGM の DGM に DG を格納できる. put 操作を行ったあとは, 対象の DGM の中に queue として保管される. 
@@ -37,21 +38,28 @@
 
 \section{プログラムの例}
 以下のソースコード\ref{code:nStartHelloWorld} , \ref{code:HelloWorldCodeGear}のプログラムはChrisitieの基本動作となる DGM による put 操作を用いた hello world の出力プログラムである.  
+
 メソッド sreateCGM でポート番号を指定した上で CGM を作成しする.
 CGM にCG (クラスファイル)を指定した上でsetupすることでCGMが CGを動作させることができる. HelloWorldCodeGear()とFinishHelloWorld()がここではCGに当たる.  
 HelloWorldCodeGear() クラスには String型の"helloWorld" という key が用意され,  "helloWorld"に入力された DG(String型の変数データ) をprint するコードである. 
 当然key:helloWorldにはString型しか当てはめられない. 
+
 "helloWorld" に hello と worldというDGをputすることで出力結果がhello world となる.  またhelloWorldのkeyはアノテーションがTakeである. 
 従って, 一度目にhelloをputし, hello をprintした後, helloWorldのkeyの中身はなくなるため, 二度目のCG:HelloWorldCodeGearをsetupした際はworldを問題なくkeyにputできる.
 
 もしhelloWorldのkeyがPeekアノテーションがついていた場合, 一度目のputにて入力されたhelloがkey:helloWorldに残り続けるため, CG:HelloWorldCodeGearをsetupするたびにCGが動作し, 以下のコード\ref{code:HelloWorldCodeGear}ではhelloをprintし続ける無限ループが起こってしまう. 
 
+\newpage
+
 \lstinputlisting[caption=StartHelloWorld,label=code:nStartHelloWorld]{./src/HelloWorld/StartHelloWorld.java}
 
 \lstinputlisting[caption=HelloWorldCodeGear,label=code:HelloWorldCodeGear]{./src/HelloWorld/HelloWorldCodeGear.java}
 
+\newpage
+
 CGM は起動し続けていると処理が自動的に終了しないという問題点がある. 
 そこで役目がなくなったCGM を終了させるための処理を行わなければならない.
+
  CGMを終了させるためのプログラムはソースコード\ref{code:FinishHelloWorld} であり, 二つのkeyが揃ったらcgm.getLocalDGM().finish() の処理でcgmを終了させるよう記述されている.
 
 \lstinputlisting[caption=FinishHelloWorld, label=code:FinishHelloWorld]{./src/FinishHelloWorld.java}
@@ -62,10 +70,14 @@
 
 \section{TopologyManager について}
 ここではChrstie上でノード同士の接続をより簡潔にするために使われるTopologyManagerという機能について説明する.
+
 TopologyManagerとはTopologyを形成するために, 参加を表明したノード, TopologyNodeにlabel を与え, 必要があればノード同士の配線も自動で行う機能である.  
 TopologyManagerのTopologyの形成方法として静的Topologyと動的Topologyの二つの方法がある. 
-静的Topologyはソースコード:  \ref{code:dotFile} のようなdotファイルを与えることでノードの接続を図 \ref{fig:dot} のように接続することができる. 例えばnode0 からはnode1 はright という名前で参照することができ, それぞれのノードが同じCG を実行してもlabel の与え方次第で想定したDG の差し合いを実現することができる. 静的Topologyはdotファイルのノード数と同等のTopologyNodeがあって初めて, CodeGear が実行され, ノード数が合わないとエラーが表示
-される. 
+静的Topologyはソースコード:  \ref{code:dotFile} のようなdotファイルを与えることでノードの接続を図 \ref{fig:dot} のように接続することができる. 例えばnode0 からはnode1 はright という名前で参照することができ, それぞれのノードが同じCG を実行してもlabel の与え方次第で想定したDG の差し合いを実現することができる. 
+
+静的Topologyはdotファイルのノード数と同等のTopologyNodeがあって初めて, CodeGear が実行され, ノード数が合わないとエラーが表示される. 
+
+\newpage
 
 \lstinputlisting[caption=ringを構成するdotファイル, label=code:dotFile]{./src/ring.dot}
 
@@ -86,15 +98,20 @@
 \item Topologyの要素に構成されたノードはそれぞれ親, 子のノードを特定の名前(parent, child[n])で参照できる.
 \item 途中参加したノードは, 木の末端要素として接続する.
 \end{enumerate}
-以上の形でTopologyが形成される. \\
+以上の形でTopologyが形成される. 
+
+\newpage
+
 コード:\ref{code:SRTE} はTopologyManagerを使用してTopologyを構成するコードである. 
 String型のリスト(今回はmanagerArg)に構成したいTopologyの形状をdotファイル, もしくは実装済みの動的Topologyの構成型を設定し, TopologyManagerCondfigを起動することでTopologyManagerが起動できる. 
+
 ソースコードではTreeを構成しており, for文でnodeNum 個分のノードを生成し, それぞれmanagerPortを記憶させている. 
 これによりノードすべてがTopologyManagerによりTreeの構成要素として接続される.
 
+現状では通信アルゴリズムの構成のため, dotファイルにより接続を行なっているが, 最終的にはStar型の動的Topology機能を作成し, 途中で参加してきたノードを接続が行えるようにする必要がある.
+
 \lstinputlisting[caption=TopologyManagerによるTree型Topologyを構成するコード, label=code:SRTE]{./src/StartPrefixTree.java}
 
-現状では通信アルゴリズムの構成のため, dotファイルにより接続を行なっているが, 最終的にはStar型の動的Topology機能を作成し, 途中で参加してきたノードを接続が行えるようにする必要がある.