annotate Draft/Draft.tex @ 10:482339b9a9fb

fix
author sugi
date Mon, 18 Feb 2013 18:28:58 +0900
parents 4f1e82d5b09a
children 580ce56d06c2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
2 \usepackage[papersize={210truemm,297truemm},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
3 top=3truecm,bottom=3truecm,left=2truecm,right=2truecm]{geometry}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
4 \usepackage{setspace}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
5 \usepackage[dvipdfm]{graphicx}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
6 \usepackage{listings,jlisting}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
7 \usepackage{picins}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
8 \usepackage{fancyhdr}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
9 \pagestyle{fancy}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
10 \lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表予稿}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
11 \rhead{}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
12 \cfoot{}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
13
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
14 \lstset{%
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
15 frame=single,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
16 stringstyle={\ttfamily},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
17 commentstyle={\ttfamily},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
18 identifierstyle={\ttfamily},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
19 keywordstyle={\ttfamily},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
20 basicstyle={\ttfamily},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
21 breaklines=true,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
22 xleftmargin=0zw,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
23 xrightmargin=0zw,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
24 framerule=.2pt,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
25 columns=[l]{fullflexible},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
26 numbers=left,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
27 stepnumber=1,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
28 numberstyle={\scriptsize},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
29 numbersep=1em,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
30 language={Java},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
31 tabsize=4,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
32 lineskip=-0.5zw,
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
33 morecomment={[s][]{/**}{*/}},
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
34 }
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
35
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
36
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
37 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
38 \setlength{\headheight}{0mm}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
39 \setlength{\headsep}{5mm}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
40 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
41 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{11mm}}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
42 \setlength{\textwidth}{181mm}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
43 \setlength{\textheight}{261mm}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
44 \setlength{\footskip}{0mm}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
45 \pagestyle{empty}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
46
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
47 \begin{document}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
48 \title{分散ネットフレームワーク Aliceにおける例題の作成}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
49 \author{学籍番号 095732B 氏名 杉本優{}{} 指導教員 : 河野真治}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
50 \date{}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
51 \maketitle
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
52 \thispagestyle{fancy}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
53
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
54
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
55 \section{研究背景と目的}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
56 インターネット上でのサービスには信頼性とスケーラビリティの両方が要求される。
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
57 本研究室ではデータをData Segment 、タスクをCode Segmentという単位に分割して記述する分散ネットフレームワークAlice\cite{1}の開発を行なっている。
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
58 AliceはJavaで実装されており、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
59 % ユーザーがAliceを利用するためにはCode Segmentというclassを継承するだけでよい。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
60 % 記述が大変である こういう口語的なものは論文では使わない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
61 ノード間のData Segmentの送受信APIが提供されている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
62 % のでユーザーが記述をする必要はない。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
63 また、Blade また PCクラスタ上で分散プログラムのシミューレションするために、オーバレイネットワークを自動的に構成する
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
64 TopologyManagerという機能が搭載されている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
65 % というトポロジーの作成をサポートする機能が含まれているためユーザーはトポロジー完成後の記述を行うだけで良い。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
66 % しかし、提供されているAPIが適当なものであるか、必要な機能が備わっているかどうかは、ソースコード上では確認できず、実際にプログラミングを行うことでしか見えてこない部分である。
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
67
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
68 本研究はAliceを用いてプログラムを作成することで、Aliceが抱える問題点、APIの見直しを行った。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
69 まず、分散プログラムを書くためのAPIがちゃんとそろっているかどうかを例題を作成することにより確認した。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
70 スケーラビリティがあるかどうかを調べるためには、Blade 上でのシミューレションを行うことが必要である。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
71 実際にシミューレションを行い、応答時間の測定を行った。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
72 % そして、Aliceの改良を行い、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
73 % 誰でも簡単に
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
74 % 分散プログラムを書けるようなフレームワークを作成するのが目的である。
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
75
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
76 \section{Alice}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
77 Aliceを使う際に必要なData SegmentとCode Segmentについて説明を行う。
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
78 \subsection{DataSegment}
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
79 AliceではData Segmentをデータベースとして利用しており、Key Value Storeで実装されている。
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
80 従来のKey Value StoreのようにKey と Valueが一対になっているのではなく、Key毎にキューを持っていてデータを管理している。
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
81 そのキューに対してData Segment API を用いることでData Segmentにデータを追加、削除を適宜行うことができる。
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
82
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
83
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
84 \begin{itemize}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
85 \item \verb+void put(String key, Value val)+
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
86 \item \verb+void update(String key, Value val)+
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
87 \item \verb+void peek(Receiver receiver, String key)+
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
88 \item \verb+void take(Receiver receiver, String key)+
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
89 \end{itemize}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
90
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
91
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
92
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
93 \verb+put+ はデータを追加するための API である。
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
94 % キューというのが何か説明する
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
95 \verb+update+ はデータを置き換えるための API である。 キューの先頭を置き換える特急メッセージのように動作する。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
96 \verb+peek+ はデータを調べるためのAPIである。目的のData Segment がなければ、Code Segment の待ち合わせ (Blocking) が起きる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
97 \verb+take+ もデータを読み込むための API である。読み込まれたデータは Key Value Store のキューから取り除かれる
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
98
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
99 \subsection{CodeSegment}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
100 CodeSegmentはタスクを分割したものであり、Code SegmentはInput Data SegmentとOutput Data Segmentを持つ。CodeSegmentに依存するData Segmentを記述することにより、(図 \ref{fig:dsandcs})のように実行される順番が一意に決まる。Code SegmentはInput Data Segmentが揃い次第Code Segment Managerに送られ順次実行されていく。またCode SegmentにInput Data Segmentがない場合はexecuteにより実行させる。
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
101
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
102 \begin{figure}[htbp]
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
103 \begin{center}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
104 \includegraphics[width=70mm]{pic/dsandcs2.pdf}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
105 \caption{DataSegment と CodeSegment の依存関係で一意に決まる実行順序}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
106 \label{fig:dsandcs}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
107 \end{center}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
108 \end{figure}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
109
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
110
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
111
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
112 \section{水族館ゲーム}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
113 % 魚の位置が共有されている
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
114 % 複数のディスプレイに異なる視点で表示される
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
115 % 魚とディスプレイが増えてもサービスを維持できることを確認するため
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
116 % このままではスケールしない
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
117 Aliceを用いて水族館ゲームの作成を行った。水族館ゲームとは複数の魚の情報をゲームに参加するClinet全体で共有し、複数のディスプレイに異なる視点で表示されるものである。トポロジーはツリー状に構成されている。
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
118
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
119
9
sugi
parents: 8
diff changeset
120 水族館ゲームを作成した目的は魚とディスプレイが増えてもサービスを維持できることを確認するためである。しかし、現状では魚の数、参加するClinetが増えるとトップノードが処理すべきCode Segmentが増加していくため、スケールしないと思われる。
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
121
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
122
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
123 以前水族館ゲームをJava3Dで作成したが、JavaのVersion が1.7になったのに伴いJava3Dが使用不可になった。しかしJavaFXというGUIプラグインが追加されたため、JavaFXで水族館ゲームを書きなおした。(図 \ref{fig:JavaFX})また、描画部分がJava3DからJavaFXに変わっただけであるので、それぞれで魚の情報を共有することが可能である。
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
124
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
125
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
126 \begin{figure}[htbp]
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
127 \begin{center}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
128 \includegraphics[width=80mm]{pic/for_Fx.pdf}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
129 \caption{JavaFX版 水族館ゲーム}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
130 \label{fig:JavaFX}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
131 \end{center}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
132 \end{figure}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
133
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
134
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
135 % 以下のようなことを書かないで、Code segment/Data segment が Alice で、どう表現されるかを書く
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
136 %\section{注意すべき記述}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
137 %Aliceを記述する際に、注意すべき記述がある。(ソースコード \ref{fig:NullPointerException})
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
138 %Code Segmentを作成する際に、コンストラクト内でidsに対してsetKeyを行った後に、処理を記述しても実行されない可能性がある。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
139 %Code Segmentは内部で必要なData Segmentの数を数えている。Data Segmentが取得されるたびにこの値がデクリメントされていき、0になった時にCode Segmentがactiveになる。値が0であるかを確認するのは別スレッドであるため、setKey以降に処理を記述してもThread Poolに送られてしまい、NullPointerException等のエラーが起こる可能性がある。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
140 %
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
141 %\begin{table}[htbp]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
142 %\lstinputlisting[label=fig:NullPointerException, caption=実行するとNullPointerExceptionを起こす]{source/NullPointerException.java}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
143 %\end{table}
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
144
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
145
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
146 \section{実験}
9
sugi
parents: 8
diff changeset
147 トップノードから子ノードに対してデータの送信し、子ノードは受けとったデータをトップノードに送り返す。この作業にかかる時間の測定を行う。台数が増えた際の時間の変化により、スケールするかどうかを評価する。マシン 48 台,CPU Intel(R) Xeon(R) X5650 @ 2.67GHz, 仮想コア数 4,CPU キャッシュ 12MB。Blade 上の仮想マシン上での測定を行った。
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
148
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
149
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
150 \begin{figure}[htbp]
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
151 \begin{center}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
152 \includegraphics[width=90mm]{pic/result2.pdf}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
153 \caption{測定結果}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
154 \label{fig:result2}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
155 \end{center}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
156 \end{figure}
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
157
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
158 \section{考察}
10
sugi
parents: 9
diff changeset
159 サービスに参加するClientの数が増加するに連れて、時間が増加していく。これはトップノードがData Segmentを子ノードに送信するというCode SegmentがThread Poolに次々に送られてくる。しかし、同時実行可能すうはCPUに依存するため、Client数が増えるに従ってThread Poolで実行されるのを待つ時間が増えていくのではないかと思われる。
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
160
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
161
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
162 % 今後の課題ではなくて、今のAPIの評価を行う
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
163 \section{APIの評価}
9
sugi
parents: 8
diff changeset
164 現在、Aliceが提供されているAPIだけで分散プログラムを記述することが可能であったものの、改善したほうがよいAPIがある。
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
165
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
166
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
167 \verb+setKey+ は呼ぶタイミングを気をつけなければ、NullPointerExceptionになる事がわかった。\verb+setKey+ 以降に処理を記述しても実行される前にactiveになってしまう可能性がある。従って\verb+setKey+ の方法を考えなおさなければならない。
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
168
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
169
9
sugi
parents: 8
diff changeset
170 \verb+peek+ でData Segmentを取得、\verb+put+ でData Segmentの追加を行なっているが、この際にMessage Pack\cite{3}でdecode / encodeの操作が行われている。
sugi
parents: 8
diff changeset
171 他のClientに対してデータの送受信するために行う場合はやむを得ないが、local に送受信する際にも行なっている。localに対しての送受信はencode / decode 抜きに処理できるようにするのが望ましい。また
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
172
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
173 \section{Aliceの問題点}
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
174 \subsection{Java}
8
07eaef03f3b7 preliminary
sugi
parents: 7
diff changeset
175 Aliceの全てのData SegmentはKVSに格納され、実行時のData SegmentはCode Segmentが activeな時のみメモリ上にある。この最大値は同時にActive Taskの量を見積もれば良い。従って、AliceにGCは必要ない。一方で、KVS上のデータは決してGCの対象にならない。しかし、それではGCに付加をかけてしまう。
6
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
176 \subsection{Key}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
177 本実装ではData Segment相互の参照はKey経由となる。分散実装では妥当であるが、並列実装ではすべてのData SegmentをKVSに格納するのは性能的な問題を引き起こす。一方で、分散記述と並列記述がかけ離れてしまうのも好ましくない。また、本来はKVSは持続性を持つべきだと思われる。持続性をもつことで、トラブルで処理が途中で中断された場合であっても途中から処理を再開可能となる。
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
178 \thispagestyle{fancy}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
179 \begin{thebibliography}{9}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
180
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
181 \bibitem{1}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
182 赤嶺一樹, 河野真治. 分散ネットワークフレームワーク Alice の 提案と実装 Design and Implementation Distributed network framework Alice 平成23年度 学位論文(修士)
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
183 \bibitem{2}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
184 赤嶺一樹, 河野真治. Meta engine を用いた federated linda の実験. 日本ソフトウェア科学会第 27 会大会, Sep 2010.
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
185 \bibitem{3}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
186 古橋 貞之,新城靖. 分散システムのためのメッセージ表現手法 に関する研究 システム情報工学研究科修士論文
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
187 \end{thebibliography}
52dff3fd4f40 add Draft
sugi
parents:
diff changeset
188 \end{document}