changeset 3:c874088754a4

add chapter5
author sugi
date Fri, 08 Feb 2013 19:12:52 +0900
parents 236628ffc497
children 3b3b014765a2
files paper/Makefile paper/chapter2.tex paper/chapter5.tex paper/thesis.tex
diffstat 4 files changed, 190 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/Makefile	Fri Feb 08 19:12:52 2013 +0900
@@ -0,0 +1,78 @@
+TARGET = thesis
+
+SRC = $(wildcard *.tex)
+
+LATEX   = platex
+BIBTEX  = pbibtex
+DVIPS   = dvips
+DVIPDFM = dvipdfmx
+RM      = rm -f
+EBB     = ebb
+
+#  Option definitions
+DVIPDFMOPT = 
+DVIPSOPT   = -D 720 -mode esphi -O 0mm,0mm -N0 
+
+#  Suffixes definitions
+.SUFFIXES: .tex .dvi
+
+#  Recipes
+all: pdf# $(TARGET).ps
+	open $(TARGET).pdf
+
+dvi:
+	@echo "----------- make dvi file ($(TARGET).dvi) ----------"
+	$(LATEX) $(TARGET)
+	$(BIBTEX) $(TARGET)
+	$(LATEX) $(TARGET)
+	$(LATEX) $(TARGET)
+pdf: dvi
+	$(DVIPDFM) $(DVIPDFMOPT) $(TARGET)
+
+clean:
+	$(RM) *~ \#*
+	@if [ -f $(TARGET).aux ];\
+		then $(RM) $(TARGET).aux;\
+	fi
+	@if [ -f $(TARGET).log ];\
+		then $(RM) $(TARGET).log;\
+	fi
+	@if [ -f $(TARGET).toc ];\
+		then $(RM) $(TARGET).toc;\
+	fi
+	@if [ -f $(TARGET).lof ];\
+		then $(RM) $(TARGET).lof;\
+	fi
+	@if [ -f $(TARGET).lot ];\
+		then $(RM) $(TARGET).lot;\
+	fi
+	@if [ -f $(TARGET).big ];\
+		then $(RM) $(TARGET).big;\
+	fi
+	@if [ -f $(TARGET).bbl ];\
+		then $(RM) $(TARGET).bbl;\
+	fi
+	@if [ -f $(TARGET).ilg ];\
+		then $(RM) $(TARGET).ilg;\
+	fi
+	@if [ -f $(TARGET).idx ];\
+		then $(RM) $(TARGET).idx;\
+	fi
+	@if [ -f $(TARGET).ind ];\
+		then $(RM) $(TARGET).ind;\
+	fi
+	@if [ -f $(TARGET).dvi ];\
+		then $(RM) $(TARGET).dvi;\
+	fi
+	@if [ -f $(TARGET).pdf ];\
+		then $(RM) $(TARGET).pdf;\
+	fi
+	@if [ -f $(TARGET).out ];\
+		then $(RM) $(TARGET).out;\
+	fi
+	@if [ -f $(TARGET).bbl ];\
+		then $(RM) $(TARGET).bbl;\
+	fi
+	@if [ -f $(TARGET).blg ];\
+		then $(RM) $(TARGET).blg;\
+	fi
--- a/paper/chapter2.tex	Mon Feb 04 19:55:13 2013 +0900
+++ b/paper/chapter2.tex	Fri Feb 08 19:12:52 2013 +0900
@@ -19,13 +19,13 @@
 
 KVSへのアクセスはキューによって、ノード内部で逐次化される。それ以外は、すべてJavaのThread Poolによって並列実行される。Code Segmentが実行される際には、Data Segmentが揃っているのでBlockingが起こることはない。逆にBlockingが必要な場合は、Code Segmentを分割する必要がある。
 
-以下の4つが用意されているData Segment APIである。これらを用いてデータの送受信を行う。
+以下が用意されているData Segment APIである。これらを用いてデータの送受信を行う。
 
 \begin{itemize}
 \item {\ttfamily void put(String key, Value val)}
 \item {\ttfamily void update(String key, Value val)}
-\item {\ttfamily void peek(Receiver receiver, String key, int id)}
-\item {\ttfamily void take(Receiver receiver, String key, int id)}
+\item {\ttfamily void peek(Receiver receiver, String key)}
+\item {\ttfamily void take(Receiver receiver, String key)}
 \end{itemize}
 
 \subsection{put}
@@ -66,16 +66,57 @@
 
 
 \section{Code Segment}
+Code Segmentはタスクのことである。Code Segmentをユーザーが記述するときに、Code Segmentの作成を記述する。Code Segment内で使用するData Segmentの作成を記述する。Code Segmentには、Input Data SegmentとOutput Data Segmentを作るAPIが存在する。
+
+Input Data Segmentで作成されたData Segmentは、remoteかlocalか、またkeyを指定する必要がある。Input Data Segmentがすべて揃うまでCode Segmentはactiveにならない。
+
+Out Data Segmentで作成されたData Segmentに対してもremoteかlocalか、keyを指定する必要がある。
+
+Input Data Segment とOut put Data SegmentがCode Segment間の依存関係を自動的に記述することになる。
+
+idsとods によりInput/Outputを選択してData Segmentを作成する。Outputにはput時(update時)にremoteかlocalか、keyを指定する。Inputの場合にはsetKeyする際にremoteかlocal、keyを指定する。
+
+今現在はInputはsetKeyをする際に、Outputはputの際にノードとkeyを指定しているが、どの時点でノードとkeyを指定するのか、どのようなAPIを用意するべきかは、まだ議論の余地がある。
+
 \section{Code Segmentの実行方法}
 Aliceには、Start Code SegmentというCのmainに相当するような最初に実行されるCode Segmentがある。Start Code SegmentはどのData Segmentにも依存しない。つまりInput Data Segmentを持たない。このCode Segmentをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。
 
 \section{Code Segmentの記述方法}
+Code Segmentをユーザーが記述する際にはCode Segmentを継承して記述する。そのCode SegmentはInput DSMとOutput DSMを利用することができる。
+
+Input DSMはCode Segmentのidsというフィールドを用いてアクセスする。
+
+\begin{itemize}
+\item {\ttfamily Receiver create(CommndType type)}
+\end{itemize}
+
+createでコマンドが実行された際に取得されるData Segmentが格納される受け皿を作成する。引数にはCommandType取る。ここで指定できるCommandTypeはPEEKまたはTAKEである。
+
+\begin{itemize}
+\item {\ttfamily void setKey(String managerKey, String key)}
+\item {\ttfamily void setKey(String managerKey, String key ,int index)}
+\end{itemize}
+
+setKeyメソッドにより、どこのData Segmentのあるkeyに対してpeekまたはtakeコマンドを実行するかを指定することができる。
+コマンドの結果がレスポンスとして届き次第Code Segmentは実行される。
+また、第3引数にindexを指定することで、指定したindexよりも新しいData Segmentがある場合のみData Segmentを取得するといったことができる。
+
+
+Output DSMはCode Segmentのodsというフィールドを用いてアクセスする。Output DSMはputまたは updateを実行することができる。
+
+\begin{itemize}
+\item {\ttfamily void put(String managerKey, String key, Value val)}
+\item {\ttfamily void update(String managerKey, String key, Value val)}
+\end{itemize}
+
 \section{Topology Manager}
 Aliceは複数のノードで構成され、相互に接続される。通信するノードは、URLにより直接指定するのではなく、TopologyManagerで管理する。
 
 TopologyManagerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきTopology NodeのIPアドレス、ポート番号、接続名を送りトポロジーファイルに記述されたとおりにトポロジーを作成する。
 
 Code Segment内部でRemote DSMにアクセスする場合はToplogyManagerによって指定されたノード内部だけで有効なlabel(文字列)を使う。これにより特定のURLがCode Segment内部に記述されることを防いでいる。
+
+
 \subsection{Topology Manager の設定ファイルの記述方法}
 Topology Managerが読み込むトポロジーファイルはDOT Languageと呼ばれる言語で記述する。
 DOT Languageはプレーンテキストを用いてデータ構造としてのグラフ構造を表現するデータ記述する言語の一種である。
@@ -87,4 +128,4 @@
 クライアント間の接続にはlabelを用いて名前が割り振られている。この接続名を指定することでユーザーは他のノードのDSMにアクセスすることができる。ReceiverにsetKeyを行う際、odsでput、updateする際のmanagerKeyがlabelである。
 
 
-AliceのNodeを起動する際にコマンドライン引数としてTopology ManagerのIPアドレスとポート番号を指定する。main関数内でTopologyNodeのnewを行い、その際に引数として渡すだけでよい。
+AliceのNodeを起動する際にコマンドライン引数としてTopology ManagerのIPアドレスとポート番号を指定する。main関数内でTopologyNodeのnewを行い、その際に引数として渡すだけでよい。TopologyNodeの第一引数はAliceのdeamonの設定オブジェクト、第二引数はStart Code Segmentである。このStart Code Segmentがトポロジーが完成した後に実行される。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/chapter5.tex	Fri Feb 08 19:12:52 2013 +0900
@@ -0,0 +1,3 @@
+\chapter{まとめ}
+\label{chap:poordirection}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/thesis.tex	Fri Feb 08 19:12:52 2013 +0900
@@ -0,0 +1,64 @@
+\documentclass[a4j,12pt]{jreport}
+\usepackage[dvips]{graphicx}
+\usepackage{mythesis}
+\usepackage{multirow}
+\usepackage{here}
+
+\setlength{\itemsep}{-1zh}
+
+\title{}
+\year{平成23年度 卒業論文}
+\belongto{琉球大学工学部情報工学科}
+\author{095732 杉本 優  \\ 指導教員 {河野 真治} }
+%%
+%% プリアンブルに記述
+%% Figure 環境中で Table 環境の見出しを表示・カウンタの操作に必要
+%%
+\makeatletter
+\newcommand{\figcaption}[1]{\def\@captype{figure}\caption{#1}}
+\newcommand{\tblcaption}[1]{\def\@captype{table}\caption{#1}}
+\makeatother
+\setlength\abovecaptionskip{0pt}
+
+\begin{document}
+
+% タイトル
+\maketitle
+\baselineskip 17pt plus 1pt minus 1pt
+
+\pagenumbering{roman}
+\setcounter{page}{0}
+
+\tableofcontents	% 目次
+\listoffigures		% 図目次
+\listoftables		% 表目次
+
+%以下のように、章ごとに個別の tex ファイルを作成して、
+% main.tex をコンパイルして確認する。
+%章分けは個人で違うので下のフォーマットを参考にして下さい。
+
+% はじめに
+\input{chapter1.tex}
+
+% 基礎概念 (Aliceについて)
+\input{chapter2.tex}
+
+% Aliceを用いた例題
+\input{chapter3.tex}
+
+% 他の論文との比較
+\input{chapter4.tex}
+
+% 今後の課題
+\input{chapter5.tex}
+
+% 参考文献
+%\input{bibliography.tex}
+
+% 謝辞
+%\input{thanks.tex}
+
+% 付録
+%\input{appendix.tex}
+
+\end{document}
\ No newline at end of file