changeset 9:8c1e0271eb24

add TopologyManager & Coding
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sun, 02 May 2021 00:39:38 +0900
parents 2b7f737a2ced
children 3356c86ff304 560f362cd824
files Paper/paper.pdf Paper/paper.tex sigos.mm
diffstat 3 files changed, 28 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/paper.pdf has changed
--- a/Paper/paper.tex	Sat May 01 03:44:55 2021 +0900
+++ b/Paper/paper.tex	Sun May 02 00:39:38 2021 +0900
@@ -113,7 +113,7 @@
 CbCでは関数の代わりにCodeGearという単位でプログラミングを行う. CodeGearは\texttt{\_\_code}で宣言を行い, 各CodeGearはDataGearと呼ばれる変数データを入力として受け取り, その結果を別のDataGearに書き込む. 特に入力のDataGeatをInputDataGear, 出力されるDataGearを OutputDataGearと呼ぶ. CodeGearとDataGearの関係図を図\ref{fig:cgdg}に示す. 
 CodeGearは関数呼び出しのスタックを持たないため, 一度CodeGearを遷移すると元の処理に戻ってくることができない. 
 
-CbCコードの例をソースコード\ref{label=src:cbc_example}に示す.%refを使う
+CbCコードの例をソースコード\ref{src:cbc_example}に示す.%refを使う
 
 \begin{figure}[tb]
     \begin{center}
@@ -187,6 +187,7 @@
 \item \|CodeGearManager|(以下CGM)
 \item \|DataGearManager|(以下DGM)
 \end{itemize}
+
 CodeGearはクラスやスレッドに相当する. DataGearは変数データであり, CodeGear内でjavaのアノテーションを用いて記述する.
 
  DataGearはKeyと必ず対応しており, CodeGear内の全てのKeyにDataGearが揃った際に初めてCodeGearが動作するという仕組みになっている. 
@@ -215,7 +216,20 @@
 \item[PeekFrom(Remote DGM name)] Peekと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからPeek操作を行える.
 \end{description}
 
-コード\ref{codes: StartHelloWorld}はChristieで記述したHello Worldのコードである. 
+
+
+コード\ref{codes: StartHelloWorld}, \ref{codes: StartHelloCG}はChristieで記述したHello Worldのプログラムである. 
+ユーザープログラムはStartCodeGearクラスを継承したクラス(コード\ref{codes: StartHelloWorld})から開始する. 
+CodeGearManagerはポート番号を指定した上でcreatCGMメソッドを呼び出すことにより生成される. 生成されたCodeGearManagerは CGM名.setup にてCGMに処理させたいスレッド, つまりCodeGearを持たせることができる.  
+
+コード \ref{codes: StartHelloCG}はHeloWorldCodeGearの記述である. 
+HelloWorldCodeGearではkey: helloWorldにputされた文字列をprint出力するという単純な処理を記述している. 
+ CGM名.getLocalDGM().put("Keyname", 変数データ)にてkeyに変数データを紐付け(putし), CodeGearに設定されている全てのkeyがデータを受け取った際に初めてCodeGearは処理される. HelloWorldCodeGearではString型のhelloWorldというkeyがTake型で設定されている.
+ 
+以下のHelloWorldプログラムを実行した際の流れを説明する.
+ まずポート10000番のCodeGearManagerを生成し, HelloWorldCodeGearをsetupさせる. 
+ この時点では必要なkey(key名: helloWorld)にデータが揃っていないのでCodeGearは実行されない. cgm.getLocalDGM().put("helloWorld","hello");にてhelloWorldkeyに文字列"hello"をputすると, HelloWorldCodeGearに必要なDataGearが揃い, print表示が行われる. 
+プログラム中ではkey:helloWorldへのputは文字列"hello"と"world"の二回が行われ, print出力結果はhello worldと表示される. 
 
 \begin{lstlisting}[frame=lrbt,label=codes: StartHelloWorld,caption={ChristieにおけるCGMとCGのsetup}]
 public class StartHelloWorld extends StartCodeGear {
@@ -227,7 +241,6 @@
     public static void main(String[] args){
         CodeGearManager cgm = createCGM(10000);
         cgm.setup(new HelloWorldCodeGear());
-        cgm.setup(new FinishHelloWorld());
         cgm.getLocalDGM().put("helloWorld","hello");
         cgm.getLocalDGM().put("helloWorld","world");
     }
@@ -237,7 +250,6 @@
 
 \begin{lstlisting}[frame=lrbt,label=codes: StartHelloCG,caption={HelloWorldCodeGear}]
 public class HelloWorldCodeGear extends CodeGear {
-
     @Take
     String helloWorld;
 
@@ -245,11 +257,19 @@
     protected void run(CodeGearManager cgm) {
         System.out.print(helloWorld + " ");
         cgm.setup(new HelloWorldCodeGear());
-        cgm.getLocalDGM().put(helloWorld,helloWorld);
     }
 }
 \end{lstlisting}
 
+ChristieにはTopologyを形成するための機能TopologyManagerが備わっている.
+Topologyに参加するノードに対して名前を与え, 必要とあればノード間の配線を行う. 
+
+TopologyManagerのTopology形成方法として静的Topologyと動的Topologyがある. 
+静的Topologyはプログラマが任意の形のTopologyとノードの配線をdotファイルに記述し, TopologyManagerに参照させることで自由な形のTopologyが形成できる. 
+現時点では静的TopologyでのTopology形成はdotファイルに記述した参加ノード数に実際に参加するノードの数が達していない場合, 動作しないという制約が存在している. 
+動的Topologyは参加を表明したノードに対し, 自動的にノード同士の配線を行う. 例えばTreeを構成する場合, 参加したノードから順番にrootから近い役割を与える. 
+
+
 %4
 \section{論文の構成}
 \label{config}
--- a/sigos.mm	Sat May 01 03:44:55 2021 +0900
+++ b/sigos.mm	Sun May 02 00:39:38 2021 +0900
@@ -13,6 +13,9 @@
 </node>
 <node CREATED="1619516171397" HGAP="124" ID="ID_507851868" MODIFIED="1619516244467" POSITION="right" TEXT="&#x3053;&#x308c;&#x304b;&#x3089;&#x306e;&#x30d5;&#x30a1;&#x30a4;&#x30eb;&#x30b7;&#x30b9;&#x30c6;&#x30e0;" VSHIFT="-9">
 <node CREATED="1619516192056" HGAP="33" ID="ID_1881399936" MODIFIED="1619516205555" TEXT="HDD-SSD" VSHIFT="-7"/>
+<node CREATED="1619770790610" ID="ID_96340512" MODIFIED="1619770798247" TEXT="&#x969c;&#x5bb3;&#x8010;&#x6027;"/>
+<node CREATED="1619770799039" ID="ID_1418325750" MODIFIED="1619770817403" TEXT="&#x30d0;&#x30c3;&#x30af;&#x30a2;&#x30c3;&#x30d7;"/>
+<node CREATED="1619770817892" ID="ID_1285351192" MODIFIED="1619770817892" TEXT=""/>
 </node>
 <node CREATED="1619095096210" HGAP="139" ID="ID_1645717642" MODIFIED="1619095292908" POSITION="right" TEXT="GearsOS&#x306e;&#x89e3;&#x8aac;" VSHIFT="-37">
 <node CREATED="1619095139545" HGAP="56" ID="ID_1646793926" MODIFIED="1619095279742" TEXT="CbC"/>