Mercurial > hg > Papers > 2013 > sugi-thesis
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