Mercurial > hg > Papers > 2008 > fuchita-master
changeset 3:f3ef2f99653f
*** empty log message ***
author | fuchita |
---|---|
date | Thu, 14 Feb 2008 00:04:05 +0900 |
parents | 642ff24cf0bc |
children | 633fe343d3a7 |
files | paper/appendix.tex paper/evaluation.tex paper/fig/pdf/score.bb paper/implementation_of_compact_routing.tex paper/implementation_of_type3.tex paper/master_paper.aux paper/master_paper.lof paper/master_paper.log paper/master_paper.lot paper/master_paper.tex paper/master_paper.toc paper/missfont.log paper/suggestion_of_flinda.tex |
diffstat | 13 files changed, 623 insertions(+), 541 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/appendix.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/appendix.tex Thu Feb 14 00:04:05 2008 +0900 @@ -1,8 +1,15 @@ -\chapter*{付録} -\addcontentsline{toc}{chapter}{付録} +\chapter*{発表文献} +\addcontentsline{toc}{chapter}{発表文献} - 連邦型タプルスペースを使ったコンパクトルーティングの実験 \\ -渕田 良彦,河野 真治, ~~ -情報処理学会プログラミング研究会, 2007. \\ - - +ユーザーレベル通信ライブラリにおけるpacketベース通信API, \\ +渕田 良彦, 河野 真治 (琉球大学), ~~\\ +情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS), May, 2006\\ +\\ +継続を基本とする言語 CbC による分散プログラミング, \\ +河野 真治, 渕田 良彦, 宮國 渡, ~~ \\ +日本ソフトウェア科学会第23回大会論文集, Sep, 2006 \\ +\\ +連邦型タプルスペースを使ったコンパクトルーティングの実験, \\ +渕田 良彦,河野 真治, ~~\\ +情報処理学会プログラミング研究会, Jan, 2007. \\ +\\
--- a/paper/evaluation.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/evaluation.tex Thu Feb 14 00:04:05 2008 +0900 @@ -1,35 +1,41 @@ \chapter{分散デバッグ機能と評価} -\section{分散デバッグ開発} -本章ではFederated Lindaを用いた分散開発環境でのデバッグについて述べる。 -本論文で提案する分散デバッグのアプローチは、3章で問題点を挙げた通信状態のデバッグ -をタプルサーバーへの拡張を行う事で実現するものである。 -以下にその詳細と、その他の実現すべき分散デバッグ環境についてを示す。 - -\subsection{Java版タプルサーバーへの機能拡張} -分散プログラムでは複数のノードが独立で実行され、互いに -通信しあうという実行環境の為に、逐次プログラムよりもデバッグを行う事は難しい。 -現在主に用いられている単体の逐次デバッガは分散環境用に作られていないことから、 -分散環境でのデバッグの場合、1プロセスに対してデバッガを動かすか、 -複数プロセスに対してそれぞれデバッガを動かしてデバッグを行うかの -どちらかのスタイルがとられる。これではデバッグすべきプロセスが増えるとその手間はかなりの物になり、 -現実的なデバッグ手法とは言えない。 +4章にてJava言語によるLindaサーバーとLinda APIの実装を行った事を報告した。 +Java言語による実装を得た事により、Federated Lindaへの機能拡張を比較的容易に行う事が可能となった。 +よって本章では分散環境におけるデバッグの難しさと分散デバッグに必要な機能について説明し、 +Federated Lindaを用いた分散開発環境でのデバッグ機能の追加を行う。 +本論文で提案する分散デバッグ機能のアプローチは、4章で問題点を挙げた通信状態のデバッグ +をLinda サーバーへの拡張を行う事で実現するものである。 -また、上記の手法を用いたとしても分散プログラム環境下ではプログラム状態の非決定性が存在するため -問題がある。通信の到着順序によっても分岐が変化してしまうことから、デバッグ対象のエラーに -対して再現性を確保するのは難しい。通常、分散環境下でのデバッグではこれらの点をふまえて、 +%分散アルゴリズムのデバッグの難しさ +%逐次アルゴリズムのデバッグ手法 ーー二分法 +%gdbの全ノードへの手法による限界、ログをprintfするのではダメ +%デバッグする対象 デッドロック、ライブロック、スケーラビリティ、通信の集中、大量のパケット(ACK) +%個々の部品が正しく動いていても全体として正しく動かない場合がある。二分法は無力、 +%スナップショットがあれば二分法が使える、量はかなり多い、デッドロックの検出も可能、循環した依存性の検出 +%通信の集中は統計で見れる-> 今回はコレ +%重要なのはスナップショット、便利 +%分散デバッガでおかしなぶぶんを見つけて、入力タプルと出力タプルを特定 +%そうすれば逐次型でデバッグできる +%分散デバッグアルゴリズム自体がスケールしなければいけない、一カ所にデータを集めるのはいけない +%ビジュアライゼーション、意味不明なprintfを視覚的に + +\section{分散環境におけるデバッグ} -\begin{itemize} -\item {通信におけるプログラムの状態が決定的になるようテストする} -\item {非決定性をシミュレートする} -\item {バリア同期で通信を止めてメモリ等の状態を調べる} -\item {各ノードでのスナップショットをとってログを解析する} -\end{itemize} + \subsection{二分法による逐次アルゴリズムのデバッグ} + + \subsection{シーケンシャルなデバッグ手法の問題点} + +\section{分散デバッグの機能} + + \subsection{分散アルゴリズムにおいてデバッグすべき対象} -といった方法がとられる。 -今回は、Fedarated Lindaを用いた分散プログラム開発としてCompact Routingを用いるFederated Lindaの -分散アルゴリズムの開発を行った経験にて、必要であると考えられた、サーバーやクライアント間での通信を止めずに、動いているFederated Lindaの通信量をデバッグする(すなわち、通信量のスケーラビリティを見る)インターフェースを開発した。 + \subsection{スナップショットによる分散デバッグ} + + \subsection{分散デバッグ機能のスケーラビリティ} -\subsection{Java版タプルサーバーへの通信量デバッグ機能の実装} +\section{通信量のデバッグインターフェース} + + \subsection{Java版Linda サーバーへの機能実装} \begin{center} \begin{itembox}[l]{ComDebug機能拡張部分} {\footnotesize @@ -70,9 +76,8 @@ \end{itembox} \end{center} -\newpage -\subsection{通信ログ情報のグラフィカルな表示ツール} + \subsection{視覚的に通信状態を確認するツールの開発} \begin{figure}[htbp] \begin{center} \includegraphics[width=10cm]{fig/pdf/visual01.pdf} @@ -81,58 +86,83 @@ \end{center} \end{figure} +\section{Compact Rotingの実装を用いた評価} -\subsection{Federated Lindaにおける分散デバッグ} -分散環境におけるデバッグとは、単純に全ノードに対してデバッガを走らせれば完全にデバッグできるという -訳ではない。事実、システム資源の異なるノードに対してネットワークを介したリモートデバッグの手法は -数多く開発されていても、それが大規模システムを想定した分散プログラムに対してスケーラビリティを -保ったままデバッグ可能という解を得てはいない。 + \subsection{通信量のスケーラビリティ} + + \subsection{評価} + +\section{考察} + + +ここではFederated Lindaにおけるデバッグについて説明し、通常用いられるシーケンシャルなデバッグ +手法が有効な場合と有効ではない場合について説明する。 + +%\subsection{Federated Lindaのデバッグ} +%現在主流なデバッグ手法はプレークポイント等を用いてプログラムを停止し、その地点からの前後でプログ +%ラムの状態を確認する、二分法によるデバッグ手法である。 +%Federated Lindaを用いた開発環境においてもこのような手法は大変有効ではあるが、通信の状態によって、 +%デバッグが可能な場合と困難な場合とが存在する。 -Federated Lindaはタプルのリレーという、より分散プログラムを意識したモデルであることから、デバッグ -インターフェースの大域的状態の取得にもスケーラビリティを持った実装を目指す。 -その基本的なアイデアは、デバッグ情報を取得するインターフェースに対してもLindaプロトコルによるタプ -ルの伝搬を利用して実装するというものである。 +%以下の図\ref{seqdeb}に通常用いられるデバッグが有効なFederated Lindaの通信状態を示す。 + + +%\begin{figure}[htbp] +%\begin{center} +%\includegraphics[width=8cm]{fig/pdf/seqdeb.pdf} +%\caption{デバッグ可能なFederated Lindaの通信} +%\label{seqdeb} +%\end{center} +%\end{figure} + +%\begin{figure}[htbp] +%\begin{center} +%\includegraphics[width=10cm]{fig/pdf/nonseqdeb.pdf} +%\caption{デバッグが困難なFederated Lindaの通信} +%\label{nonseqdeb} +%\end{center} +%\end{figure} -下図\ref{FDLindaDebug}に示すように、Federated Lindaを用いたデバッグインターフェースは、デバッガ -プロセスからあるノードに対してデバッグ情報の取得を指示するオペレーションを発行し、デバッグ情報の -取得を行うデバッグプロトコルとしてタプル間を伝搬させる。 -デバッガが受け取る結果はFederared Linda内のスナップショットとしての大域的状態であり、それを元に -デバッグを行う。このような仕組みをとる事で、大規模な分散プログラム環境であってもスケーラビリティ -を保ったままデバッグを行う事が可能となる。 + +%\subsection{分散環境におけるデバッグ} +%分散プログラムでは複数のノードが独立で実行され、互いに +%通信しあうという実行環境の為に、逐次プログラムよりもデバッグを行う事は難しい。 + +%現在主に用いられている単体の逐次デバッガは分散環境用に作られていないことから、 +%分散環境でのデバッグの場合、1プロセスに対してデバッガを動かすか、 +%複数プロセスに対してそれぞれデバッガを動かしてデバッグを行うかの +%どちらかのスタイルがとられる。これではデバッグすべきプロセスが増えるとその手間はかなりの物になり、 +%現実的なデバッグ手法とは言えない。 + +%また、分散プログラム環境下ではプログラム状態の非決定性が存在するため通常のデバッグには無い +%問題がある。 +%シーケンシャルなデバッグ手法では、 +%通信の到着順序によっても分岐が変化してしまうことから、デバッグ対象のエラーに +%対して再現性を確保するのが難しいという問題である。 +%通常、分散環境下でのデバッグではこれらの点をふまえて、 -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=14cm]{fig/pdf/FDLindaDebug.pdf} -\caption{スケーラビリティを意識したデバッグインターフェース} -\label{FDLindaDebug} -\end{center} -\end{figure} +%\begin{itemize} +%\item {通信におけるプログラムの状態が決定的になるようテストする} +%\item {非決定性をシミュレートする} +%\item {バリア同期で通信を止めてメモリ等の状態を調べる} +%\item {各ノードでデバッグに必要な情報を取得し、ログを解析する} +%\end{itemize} + +%といった方法がとられる。 + + +%今回は、Fedarated Lindaを用いた分散プログラム開発としてCompact Routingを用いるFederated Lindaの +%分散アルゴリズムの開発を行った経験にて、通信状態や通信量をデバッグできる機能が必要であるとの知見 +%を得たことから、通信量のデバッグインターフェースを実装する。 +%このデバッグインターフェースはLinda サーバーやクライアント(Protocol Engine)間での通信を止めずに、 +%動いているFederated Lindaの通信量をデバッグする(すなわち、通信量のスケーラビリティを見る) +%インターフェースである。 + +%\subsection{Java版タプルサーバーへの通信量デバッグ機能の実装} - \subsection{分散デバッグの実現} -Federated Lindaにおける分散デバッグ環境の開発の為に、リングトポロジにおける分散スナップショ -ットを用いたログデバッギングを考える。以下にその詳細を示す。 - - \subsubsection{リングトポロジにおける分散スナップショット} +%\newpage +%\subsection{通信ログ情報のグラフィカルな表示ツール} -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=6cm]{fig/pdf/Ring.pdf} -\caption{リングトポロジでの分散スナップショット} -\label{Ring} -\end{center} -\end{figure} - -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=6cm]{fig/pdf/RingInRing.pdf} -\caption{リンググループを内包したリングトポロジ} -\label{RingInRing} -\end{center} -\end{figure} - - -\begin{verbatim} - -\end{verbatim} \ No newline at end of file +%\section{通信量デバッグインターフェースによる評価} \ No newline at end of file
--- a/paper/fig/pdf/score.bb Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/fig/pdf/score.bb Thu Feb 14 00:04:05 2008 +0900 @@ -1,5 +1,5 @@ %%Title: ./score.pdf %%Creator: ebb Version 0.5.2 %%BoundingBox: 0 0 252 176 -%%CreationDate: Tue Jan 22 08:32:19 2008 +%%CreationDate: Wed Feb 13 16:13:10 2008
--- a/paper/implementation_of_compact_routing.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/implementation_of_compact_routing.tex Thu Feb 14 00:04:05 2008 +0900 @@ -1,4 +1,4 @@ -\chapter{Federated Linda によるCompact Routingの実装} +\chapter{Compact Routing の実装によるtype 2 Federated Linda の評価} type2によるFederated Lindaの実装には、Protocol Engineによるタプル空間の ルーティングアルゴリズムが必要になることを述べたが、 先行研究[2][3]によって既に、Distance Vector型ルーティングプロトコルを行うtype2の @@ -10,17 +10,20 @@ した際に起こるルーティングループなどといった様々な分散プログラムに適さない欠点がある。 そこで、より高度なProtocol Engineの実装の検証とtype2による実装の経験を積む為に、 -今回新たにNプロセスに対して、各プロセスが$sublinear(O(N))$なルーティングテーブルの -記憶領域(線形より小さく$O(N)$と見れる)を用い、 +今回新たにNプロセスに対して、各プロセスが$Sublinear$で$O(N)$とみれるルーティングテーブルの +記憶領域(入力に対して2乗など比例より大きな変化をする場合を$Superlinear$、 +比例より小さい変化を$Sublinear$と呼ぶ)を用い、 ルーティングテーブルの収束速度やネットワークのスケーラビリティに対して優位な ルーティングアルゴリズムである、 ``コンパクトルーティング''(Cowen,[6])を行うProtocol Engineを実装した。 + + コンパクトルーティングのアルゴリズム的改良としては参考資料[7][8]のような改良が試みられているが、 -実際にコンパクトルーティングを実装し、テストを行った例は報告されていない。これは新奇性の分散 +実際にコンパクトルーティングを実装し、テストを行った例は報告されていない。これは新規性の分散 アルゴリズムを実装し評価するフレームワークが少数しか存在せず、また存在する分散フレームワークに おいてもその複雑性や機能特化によってテストに適さない為である。 -今回の様にコンパクトルーティングのような新奇アルゴリズムを比較的容易にテストとして実装出来る点は +今回の様にコンパクトルーティングのような新規アルゴリズムを比較的容易にテストとして実装出来る点は Federated Lindaの利点であると言える。 \section{Compact Routingのアルゴリズム} @@ -36,7 +39,6 @@ \begin{center} \begin{verbatim} [準備] - ・XMLによりタプル空間同士のネットワークとProtocol EngineのLink Configuration を行う。 @@ -45,19 +47,15 @@ を構築する。 ・ローカルネットワークの経路情報はホップ数をメトリックにディスタンスベクタ型 で求める。 - ・全Landmarkを求め、全ノードは全Landmarkに対するルーティング情報を求める。 ・Landmarkに対するルーティング情報は各Landmarkへの最短路上の次ホップ。 [ルーティング] ・宛先はLandmarkのアドレスと転送先アドレスの2つを指定する。 - ・投入時のローカルネットワークに宛先があるときはローカルネットワークのルーティン グを行う。 - ・それ以外の時、最寄りのLandmarkを経由し宛先Landmarkへ転送する。 ・宛先Landmarkへ到達したら、宛先ローカルネットワーク内の経路に従い転送する。 - \end{verbatim} \end{center} } @@ -67,6 +65,7 @@ \section{実装の詳細} コンパクトルーティングを実装したProtocol Engineが持つルーティングテーブルは タプル空間に格納されたXMLファイルから生成される。 +この際、アドレスとして扱う情報は、IPアドレス:Port番号 ~の組で表した物を指す。 ルーティングテーブルとタプル空間でやり取りされるXMLデータの関係を図\ref{data}に示す。 \begin{figure}[htbp] \begin{center} @@ -247,9 +246,9 @@ ルーティングテーブルの構築、及び更新処理はRutingTableUpdateメソッドで行われ、 それはDistance Vector型ルーティングにおける実装での同名メソッドに対して オーバーライドして定義される。以下にそのソースコードを示す。 -\begin{verbatim} +%\begin{verbatim} -\end{verbatim} +%\end{verbatim} \begin{center} \begin{itembox}[l]{RoutingTableUpdateメソッド} %{\scriptsize @@ -274,9 +273,9 @@ %} \end{itembox} \end{center} -\begin{verbatim} +%\begin{verbatim} -\end{verbatim} +%\end{verbatim} RoutingTableUpdateメソッドにおいてはルーティング情報を表すXMLを受け取り、 それに記された送信元ノードの情報を取得する。 また、自ノードが新しくLandmarkになる条件を満たしていた場合は @@ -284,34 +283,7 @@ ルーティングテーブルの更新処理を行う。 それから更新された情報を元に新しいXMLファイルを生成し、近傍ノードへ対して送信する。 - -update\_withLandmarkメソッドにおいては、受け取ったXMLファイルと送信元ノードの情報を引数として受け取り、XMLファイルを読み込んでルーティングテーブルの更新を行い、ローカルネットワークとLandmarkのルーティング情報を登録する。 - \newpage -ローカルエリアネットワークの更新は受け取ったテーブルと自身のテーブルの統合を行う。 -統合は、受け取ったテーブルにおいて -%\begin{enumerate} -%\item ローカルエリアのホップ数上限に満たない (ttlによる) -%\item 知らない宛先かまたは -%\item 既知の宛先だが、ホップ数が小さい -%\end{enumerate} - -\begin{description} -\item[(1)] ローカルエリアのホップ数上限に満たない(ttlによる) -\item[(2)]知らない宛先か、または既知の宛先だがホップ数が小さい -%\item[ ]既知の宛先だが、ホップ数が小さい -\end{description} -場合のみ、自身のテーブルに統合する。ホップ数は登録するときに 1増やし、 -TTL(Time To Live)を1減らす。 - - -Landmarkに関する情報の更新は、現在のLandmarkテーブルに存在しないLandmark情報がある場合 -に、そのLandmarkのアドレスと転送先アドレスとして、引数で与えられた送信元アドレスを登録 -する。 - - -これらの一連の処理により、ルーティングテーブルの構築、及び更新処理が完了する。 - \begin{center} \begin{itembox}[l]{update\_withLandmarkメソッド} %{\scriptsize @@ -341,16 +313,6 @@ self.register(tsid, hopnum+1, ttl-1, nexthop) updateflag = True - .................. -\end{verbatim} -%} -\end{itembox} -\end{center} - -\begin{center} -\begin{itembox}[l]{update\_withLandmarkメソッド---続き} -%{\scriptsize -\begin{verbatim} #parse landmark tsid/dst for register elif t.nodeType == t.ELEMENT_NODE @@ -365,6 +327,16 @@ not self.landmark_tslist.has_key(landmark_tsid)): self.landmark_register(landmark_tsid, src_ts) updateflag = True + .................. +\end{verbatim} +%} +\end{itembox} +\end{center} + +\begin{center} +\begin{itembox}[l]{update\_withLandmarkメソッド---続き} +%{\scriptsize +\begin{verbatim} # delete tuplespace for t in self.tslist.values(): @@ -384,6 +356,35 @@ \end{itembox} \end{center} +update\_withLandmarkメソッドにおいては、受け取ったXMLファイルと送信元ノードの情報を引数として受け取り、XMLファイルを読み込んでルーティングテーブルの更新を行い、ローカルネットワークとLandmarkのルーティング情報を登録する。 + +ローカルエリアネットワークの更新は受け取ったテーブルと自身のテーブルの統合を行う。 +統合は、受け取ったテーブルにおいて +%\begin{enumerate} +%\item ローカルエリアのホップ数上限に満たない (ttlによる) +%\item 知らない宛先かまたは +%\item 既知の宛先だが、ホップ数が小さい +%\end{enumerate} + +\begin{description} +\item[(1)] ローカルエリアのホップ数上限に満たない(ttlによる) +\item[(2)]知らない宛先か、または既知の宛先だがホップ数が小さい +%\item[ ]既知の宛先だが、ホップ数が小さい +\end{description} +場合のみ、自身のテーブルに統合する。ホップ数は登録するときに 1増やし、 +TTL(Time To Live)を1減らす。 + + +Landmarkに関する情報の更新は、現在のLandmarkテーブルに存在しないLandmark情報がある場合 +に、そのLandmarkのアドレスと転送先アドレスとして、引数で与えられた送信元アドレスを登録 +する。 + + +これらの一連の処理により、ルーティングテーブルの構築、及び更新処理が完了する。 + + + + \newpage \section{ルーティングテーブル構築時間の測定} @@ -423,7 +424,7 @@ \begin{figure}[htbp] \begin{center} - \includegraphics[width=10cm]{fig/pdf/score.pdf} + \includegraphics[width=12cm]{fig/pdf/score.pdf} \end{center} \caption{ノード数に対してルーティングテーブルを構築するのにかかる時間} \label{routingtable} @@ -512,5 +513,6 @@ にかかる起動コストも、よりテストを煩雑な物と化している。 -よって、Federated Lindaを分散プログラム開発の為の環境として生かすには、タプルサーバーへの +よって、Federated Lindaを分散プログラム開発の為の環境として生かすには、 +Lindaサーバー(すなわちタプル空間)への より実践向きな機能拡張や分散環境下でのデバッグ機能が不可欠であると考える。
--- a/paper/implementation_of_type3.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/implementation_of_type3.tex Thu Feb 14 00:04:05 2008 +0900 @@ -1,17 +1,15 @@ -\chapter{Java言語による実装(type3)} +\chapter{Java言語による実装} 前章(第3章)においてFederated Lindaを用いた分散アルゴリズムの実装例として、コンパクトルーティング -を用いた実装を示したが、それらの実装の経験によってFederated Lindaを用いた開発にはタプルサーバーの +を用いた実装を示したが、それらの実装の経験によってFederated Lindaを用いた開発にはLindaサーバーの 機能拡張や分散デバッグ機能が必要であるとの知見を得た。 -これらの経験に基づいて、この章においてはFederated Linda type3の実装を行う為に必要な要素について -述べ、その為の実装を行う。 +これらの経験に基づいて、この章においてはFederated Linda への機能拡張実装を行う為に必要な要素について述べ、その為の実装を行う。 -具体的には、C言語で実装されたタプルサーバーをより機能拡張しやすくする為にJava言語での実装に -移行する事による利点、分散環境におけるスケーラビリティを -持ったデバッグインターフェースの実装、等についてその理由と詳細を示す。 +具体的には、C言語で実装されたLindaサーバーをより機能拡張しやすくする為にJava言語での実装に +移行する事による利点について、その理由と詳細を示す。 \section{現実装(type2)における問題点} C言語実装Linda Server + 各種スクリプト言語(Python等)によって構成されてきた既存のFederated Linda -(type2)は、第3章の考察で述べたようにタプルサーバーの機能拡張や分散デバッグインターフェースの実装を +(type2)は、第3章の考察で述べたようにLindaサーバーの機能拡張や分散デバッグインターフェースの実装を 必要とする問題点がある。それは、Fedarated Lindaを実際に用いてテスト駆動開発を行っていた際の 煩雑さと、分散したタプルスペースをリモートでデバッグできる機能の欠如から来るものである。 以下にそれらが問題となった理由を説明する。 @@ -26,7 +24,7 @@ その通信量やルーティング状況の所在を 外部プロセスから閲覧、又は変更することができないという点である。 よって、実際の開発において問題となる状況を再現したい場合等にも、 -一度タプルサーバーを終了させ、再度実験に必要なプロセスをすべて立ち上げ直すという +一度Lindaサーバーを終了させ、再度実験に必要なプロセスをすべて立ち上げ直すという 作業が必要であった。これは少量の変更を加えてから再度実行してその振る舞いを確かめる という、テスト駆動開発においては非常コストの高い手法である。 @@ -39,27 +37,27 @@ \end{figure} -\section{Federated Lindaへの機能拡張(type3化)} +\section{Federated Lindaへの機能拡張} 先に述べたような開発環境における問題点を解決する為に、Federated Lindaへの機能拡張を提案する。 機能拡張を行うにあたって、現行のFederated Lindaには現実装に対する拡張の難しさがあった。 -その為、機能拡張の為の最初のアプローチとして、Java言語によるタプルサーバーとLinda APIの実装 +その為、機能拡張の為の最初のアプローチとして、Java言語によるLindaサーバーとLinda APIの実装 を行った。以下にその詳細を述べる。 %\begin{itemize} -%\item {Java言語によるタプルサーバーとLinda APIの実装} \\ -\subsection{Java言語によるタプルサーバーとLinda APIの実装} -現在C言語によるタプルサーバーとLinda APIの実装が存在するが多数の機能拡張を現実装 +%\item {Java言語によるLindaサーバーとLinda APIの実装} \\ +\subsection{Java言語によるLindaサーバーとLinda APIの実装} +現在C言語によるLindaサーバーとLinda APIの実装が存在するが多数の機能拡張を現実装 にとりとめもなくただ追加していった場合に、可読性や開発の効率性に問題があると考えられる。 よって、今回開発言語をJava言語にて行う事によりオブジェクト指向プログラムの有するカプセル化 、継承、多相性、リファクタリングによる設計の向上などを生かしたソフトウェア開発の効率化を狙う。 -また、実装をJava言語に移行した事によりタプルサーバーとProtocol Engineを一体化して抽象化 +また、実装をJava言語に移行した事によりLindaサーバーとProtocol Engineを一体化して抽象化 する実装、すなわちtype3の実装を行う事を目指す。この際Protocol Engineの司る分散アルゴリズム -についてはJavaのクラスロード等の機能を用いて適宜変更可能な仕様を目標としている。 +についてはJavaのクラスロード等の機能を用いて適宜変更可能な仕様が考えられる。 %\begin{description} % \item[]{-}\\ -%今回Java言語におけるタプルサーバーの実装へと移行できた理由にJDK1.4より +%今回Java言語におけるLindaサーバーの実装へと移行できた理由にJDK1.4より %取り入れられた新機能Java New I\slash Oの存在がある。Java New I/Oの登場により、これまでJava言語 %による記述が困難であったSelector(UNIXの select)を用いたNon-Blocking I/Oを行う実装が容易に %なった。 @@ -97,9 +95,10 @@ %\end{verbatim} %以上、2点に関してFederated Lindaへの機能拡張を提案し、その詳細について後述する。 -\section{Java言語によるタプルサーバーの実装} -前述したようにFederated Lindaにおける機能拡張の為に、タプルサーバーの実装をJava言語によって行った。 -ここでは、まず最初にJava言語でタプルサーバーで実装した際に用いたJava New I\slash Oについて説明し、それを +\section{Java言語によるLindaサーバーの実装} +前述したようにFederated Lindaにおける機能拡張の為に、Lindaサーバーの実装をJava言語によって行った。 +ここでは、まず最初にJava言語でLindaサーバーで実装した際に用いたJava New I\slash Oについて説明し、 +それを 踏まえた上でより詳細な実装について述べる。 \subsection{Java New I\slash Oを用いたネットワークプログラミング} @@ -171,9 +170,6 @@ Channelはbyte列だけの読み書きをサポートし、byte列のコンテナとしてByteBufferクラスを 使用する。チャネルの主なインタフェースとクラスを図\ref{Channel}に示す。 -\begin{verbatim} - -\end{verbatim} Channelの提供する主な機能は \begin{itemize} @@ -183,7 +179,6 @@ \item{非同期入出力のサポート} \end{itemize} - java.io.*によるストリームと異なり、Channelはすべてインタフェースがベースで定義されており、 機能追加が容易に行える。また、単一のクラスで入出力の両方を行うことも可能となっている(旧来は別途)。 @@ -193,13 +188,13 @@ \begin{figure}[htp] \begin{center} -\includegraphics[width=14cm]{fig/pdf/Channel.pdf} +\includegraphics[width=12cm]{fig/pdf/Channel.pdf} \caption{Channelのクラス図} \label{Channel} \end{center} \end{figure} - +\vspace{-1cm} \subsubsection{Selector} 前述したSocketChannel(Channel)を非同期で使用する時、共に用いるのがSelectorクラスである。 @@ -215,7 +210,6 @@ \begin{verbatim} \end{verbatim} - \begin{figure}[htbp] \begin{center} \includegraphics[width=12cm]{fig/pdf/Selector.pdf} @@ -266,7 +260,7 @@ \end{itembox} \end{center} -ここまでJava言語におけるタプルサーバー実装の前提としてJava New I\slash Oについての解説を +ここまでJava言語におけるLindaサーバー実装の前提としてJava New I\slash Oについての解説を 述べたが、旧来のストリーム方式によるJava.io.*の実装に比べるとChannelやBufferの扱いは 面倒である。しかし、大量のI\slash O処理を行う場合やスケーラビリティが必要な場合において NIOはその真価を発揮する。 @@ -279,15 +273,15 @@ スケーラブルでロバストなサーバを開発するためのフレームワークをうたい、様々なWebアプリケーション がGrizzlyを採用している。 -これらをふまえ、以降Java言語によるNIOを用いたタプルサーバーとLinda APIの実装について説明する。 +これらをふまえ、以降Java言語によるNIOを用いたLindaサーバーとLinda APIの実装について説明する。 - \section{Java版タプルサーバーとLinda APIの詳細} -Java言語によってタプルサーバーとLinda APIを実装するにあたって、 + \section{Java版LindaサーバーとLinda APIの詳細} +Java言語によってLindaサーバーとLinda APIを実装するにあたって、 本研究室にて開発された非同期型Lindaサーバーと C言語版Linda APIを参考に実装を行った。 本項目ではまず、C言語構文に対する -Java言語での置き換えについてのテクニックを紹介し、後に実装したタプルサーバーとLinda APIの詳細を +Java言語での置き換えについてのテクニックを紹介し、後に実装したLindaサーバーとLinda APIの詳細を 述べる。そして、Java言語開発によって実現が容易となったリファクタリングを用いた設計の向上について その詳細を説明する。 @@ -510,12 +504,12 @@ %\end{center} \subsection{実装の詳細} -これまでJava言語によるタプルサーバーとLinda APIの実装における前提として、Java New I\slash OとJava +これまでJava言語によるLindaサーバーとLinda APIの実装における前提として、Java New I\slash OとJava 言語によるC言語構文に対する置き換えについて説明を行った。ここでは、実際にJava言語にて実装した 内容についてその詳細を述べる。 -\subsubsection{タプルサーバー(FDLindaServ.java)} -以下にタプルサーバーのメインループを示す。 +\subsubsection{Lindaサーバー(FDLindaServ.java)} +以下にLindaサーバーのメインループを示す。 \begin{center} \begin{itembox}[l]{FDLindaServ.javaのメインループ} {\footnotesize @@ -652,7 +646,7 @@ %} \end{itembox} \end{center} -上記の使用例はLindaのタプルサーバーと通信してバッファをOutする簡単な使用例である。 +上記の使用例はLindaのLindaサーバーと通信してバッファをOutする簡単な使用例である。 このようにして実装したJava版Linda APIを使用することができる。 \subsection{リファクタリングを用いた設計の向上} @@ -686,7 +680,7 @@ \item[(6)] {問題無ければ[OK]を選択してリファクタリングを適用する。} \end{itemize} -具体的なリファクタリングの例として、Java版タプルサーバーの実装にて実際に行った +具体的なリファクタリングの例として、Java版Lindaサーバーの実装にて実際に行った 「スーパークラスの抽出リファクタリング」の例を示す。 \subsubsection{問題提起} @@ -780,7 +774,40 @@ % \subsection{Protocol Engineに求められる機能} % \subsection{JavaによるProtocol Engineの詳細} -%\newpage +\newpage +\subsection{C言語版とJava言語版のプログラムコード数} +最後にC言語版Linda Server, Linda API ~とJava言語版Linda Server, Linda API ~のプログラムコード +のwc(ワードカウント)数の +比較を示す。両者のプログラムコード数はそれぞれ以下のようになっている。 + +\begin{verbatim} +wc -lw: + 行数 単語数 ファイル名 +C言語版-------------------------------------------------------------- +$ wc -lw ldserv.c lindaapi.c lindaapi.h + 700 1769 ldserv.c + 731 1929 lindaapi.c + 82 277 lindaapi.h + 1513 3975 total + +Java言語版----------------------------------------------------------- +$ wc -lw *.java + 74 171 AcceptHandler.java + 79 192 FDLindaServ.java + 372 827 FederatedLinda.java + 141 316 IOHandler.java + 307 792 IOParam.java + 20 31 PSXCallback.java + 172 422 PSXLinda.java + 73 145 PSXQueue.java + 48 159 PSXQueueInterface.java + 75 158 PSXReply.java + 109 215 Tuple.java + 14 43 TupleHandler.java + 1484 3471 total + +\end{verbatim} +
--- a/paper/master_paper.aux Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.aux Thu Feb 14 00:04:05 2008 +0900 @@ -16,144 +16,142 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Federated Linda}{4}} \@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces タプルスペースの相互接続}}{4}} \newlabel{connection-of-tspace}{{2.2}{4}} -\@writefile{toc}{\contentsline {section}{\numberline {2.2}Federated Linda の分散プログラミング}{4}} -\@writefile{toc}{\contentsline {subsubsection}{Local Access to Protocol}{5}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Federated Linda の分散プログラミング}{5}} +\@writefile{toc}{\contentsline {subsubsection}{Local Access Protocol}{5}} \@writefile{toc}{\contentsline {subsubsection}{Protocol Engine}{5}} \@writefile{toc}{\contentsline {subsubsection}{Link Configuration}{5}} \@writefile{toc}{\contentsline {section}{\numberline {2.3}実装の段階分け}{5}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}type 1}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}type 1}{6}} \@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces type 1}}{6}} \newlabel{type1}{{2.3}{6}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}type 2}{6}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces type 2}}{6}} -\newlabel{fig:type2}{{2.4}{6}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces type 2}}{7}} +\newlabel{fig:type2}{{2.4}{7}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3.3}type 3}{7}} \@writefile{lof}{\contentsline {figure}{\numberline {2.5}{\ignorespaces type 3}}{7}} \newlabel{fig:type3}{{2.5}{7}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.6}{\ignorespaces Tree型トポロジ}}{8}} -\newlabel{fig:Tree}{{2.6}{8}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.7}{\ignorespaces Mesh型トポロジ}}{8}} -\newlabel{fig:mesh}{{2.7}{8}} \citation{linda} -\@writefile{toc}{\contentsline {section}{\numberline {2.4}現段階における実装}{9}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}type2の実装}{9}} -\@writefile{toc}{\contentsline {subsubsection}{Linda Server}{9}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.8}{\ignorespaces タプルがない場合の in コマンドの実行}}{10}} -\newlabel{async-in}{{2.8}{10}} -\@writefile{toc}{\contentsline {subsubsection}{Federated Linda API}{11}} -\@writefile{toc}{\contentsline {subsubsection}{C言語のAPI}{11}} -\@writefile{toc}{\contentsline {subsubsection}{Perl, Python, Ruby の API}{12}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.9}{\ignorespaces Perl, Python, Ruby で拡張したLinda API のクラス図}}{13}} -\newlabel{LWLClass}{{2.9}{13}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Local Access to Protocol}{14}} -\@writefile{toc}{\contentsline {subsubsection}{ポーリング型のプログラミングスタイル}{14}} -\@writefile{toc}{\contentsline {subsubsection}{Protocol Engine へのアクセス}{16}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.10}{\ignorespaces 使用するプロトコルの切替え}}{16}} -\newlabel{select_protocol}{{2.10}{16}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.3}Protocol Engine}{16}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.4}Link Configuration}{18}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.11}{\ignorespaces Configuratorによるトポロジ形成}}{18}} -\newlabel{linkconfig_xml}{{2.11}{18}} -\@writefile{toc}{\contentsline {subsubsection}{トポロジを表すXML}{18}} -\@writefile{toc}{\contentsline {subsubsection}{接続を行うモジュール}{20}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.12}{\ignorespaces LinkConfiguration のクラス図}}{20}} -\newlabel{LinkConfig-class}{{2.12}{20}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}Federated Linda によるCompact Routingの実装}{22}} +\@writefile{toc}{\contentsline {section}{\numberline {2.4}現段階における実装}{8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}type2の実装}{8}} +\@writefile{toc}{\contentsline {subsubsection}{Linda Server}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.6}{\ignorespaces タプルがない場合の in コマンドの実行}}{9}} +\newlabel{async-in}{{2.6}{9}} +\@writefile{toc}{\contentsline {subsubsection}{Federated Linda API}{10}} +\@writefile{toc}{\contentsline {subsubsection}{C言語のAPI}{10}} +\@writefile{toc}{\contentsline {subsubsection}{Perl, Python, Ruby の API}{11}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.7}{\ignorespaces Perl, Python, Ruby で拡張したLinda API のクラス図}}{11}} +\newlabel{LWLClass}{{2.7}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Local Access Protocol}{13}} +\@writefile{toc}{\contentsline {subsubsection}{ポーリング型のプログラミングスタイル}{13}} +\@writefile{toc}{\contentsline {subsubsection}{Protocol Engine へのアクセス}{14}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.8}{\ignorespaces 使用するプロトコルの切替え}}{14}} +\newlabel{select_protocol}{{2.8}{14}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.3}Protocol Engine}{15}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.4}Link Configuration}{17}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.9}{\ignorespaces Configuratorによるトポロジ形成}}{17}} +\newlabel{linkconfig_xml}{{2.9}{17}} +\@writefile{toc}{\contentsline {subsubsection}{トポロジを表すXML}{17}} +\@writefile{toc}{\contentsline {subsubsection}{接続を行うモジュール}{19}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.10}{\ignorespaces LinkConfiguration のクラス図}}{19}} +\newlabel{LinkConfig-class}{{2.10}{19}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}Compact Routing の実装によるtype 2 Federated Linda の評価}{21}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {3.1}Compact Routingのアルゴリズム}{22}} -\@writefile{toc}{\contentsline {section}{\numberline {3.2}実装の詳細}{23}} -\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces 分散プログラムの3つの要素}}{23}} -\newlabel{jissou1}{{3.1}{23}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces ルーティングテーブルとタプル空間でやり取りされるXMLデータの関係}}{24}} -\newlabel{data}{{3.1}{24}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Protocol Engineによるルーティングテーブルの構築}{24}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces ルーティングテーブルの例}}{24}} -\newlabel{localarea}{{3.2}{24}} -\@writefile{toc}{\contentsline {subsubsection}{ローカルエリアネットワークの構築}{25}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces ローカルエリアのホップ数が1の場合}}{25}} -\newlabel{localarea}{{3.3}{25}} -\@writefile{toc}{\contentsline {subsubsection}{LandMark情報の更新}{25}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces ローカルエリアのホップ数が1の場合のLand Mark情報の流れ}}{25}} -\newlabel{configurator.new}{{3.4}{25}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Protocol Engineの継承による実装}{26}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}ルーティングテーブルの構築、更新処理}{28}} -\@writefile{toc}{\contentsline {section}{\numberline {3.3}ルーティングテーブル構築時間の測定}{31}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}測定の流れ}{31}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}測定結果}{31}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.5}{\ignorespaces ノード数に対してルーティングテーブルを構築するのにかかる時間}}{32}} -\newlabel{routingtable}{{3.5}{32}} -\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Routing Table 構築にかかる時間}}{32}} -\newlabel{routingtime}{{3.2}{32}} -\@writefile{toc}{\contentsline {section}{\numberline {3.4}考察}{33}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}Java言語による実装(type3)}{34}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Compact Routingのアルゴリズム}{21}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}実装の詳細}{22}} +\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces 分散プログラムの3つの要素}}{22}} +\newlabel{jissou1}{{3.1}{22}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces ルーティングテーブルとタプル空間でやり取りされるXMLデータの関係}}{23}} +\newlabel{data}{{3.1}{23}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Protocol Engineによるルーティングテーブルの構築}{23}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces ルーティングテーブルの例}}{23}} +\newlabel{localarea}{{3.2}{23}} +\@writefile{toc}{\contentsline {subsubsection}{ローカルエリアネットワークの構築}{24}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces ローカルエリアのホップ数が1の場合}}{24}} +\newlabel{localarea}{{3.3}{24}} +\@writefile{toc}{\contentsline {subsubsection}{LandMark情報の更新}{24}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces ローカルエリアのホップ数が1の場合のLand Mark情報の流れ}}{24}} +\newlabel{configurator.new}{{3.4}{24}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Protocol Engineの継承による実装}{25}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}ルーティングテーブルの構築、更新処理}{27}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}ルーティングテーブル構築時間の測定}{30}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}測定の流れ}{30}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}測定結果}{30}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.5}{\ignorespaces ノード数に対してルーティングテーブルを構築するのにかかる時間}}{31}} +\newlabel{routingtable}{{3.5}{31}} +\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Routing Table 構築にかかる時間}}{31}} +\newlabel{routingtime}{{3.2}{31}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}考察}{32}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}Java言語による実装}{33}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {4.1}現実装(type2)における問題点}{34}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}テスト駆動開発における問題点}{34}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Federated Lindaのテスト状況}}{35}} -\newlabel{testshot}{{4.1}{35}} -\@writefile{toc}{\contentsline {section}{\numberline {4.2}Federated Lindaへの機能拡張(type3化)}{35}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Java言語によるタプルサーバーとLinda APIの実装}{35}} -\@writefile{toc}{\contentsline {section}{\numberline {4.3}Java言語によるタプルサーバーの実装}{35}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Java New I/\penalty \exhyphenpenalty Oを用いたネットワークプログラミング}{36}} -\@writefile{toc}{\contentsline {subsubsection}{Buffer}{36}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Bufferのクラス図}}{37}} -\newlabel{Buffer}{{4.2}{37}} -\@writefile{toc}{\contentsline {subsubsection}{Channel}{37}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Channelのクラス図}}{38}} -\newlabel{Channel}{{4.3}{38}} -\@writefile{toc}{\contentsline {subsubsection}{Selector}{38}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Selectorとその関連クラスのクラス図}}{39}} -\newlabel{Selector}{{4.4}{39}} -\@writefile{toc}{\contentsline {section}{\numberline {4.4}Java版タプルサーバーとLinda APIの詳細}{40}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}C言語構文に対する置き換え}{40}} -\@writefile{toc}{\contentsline {subsubsection}{構造体をクラスで置き換える}{40}} -\@writefile{toc}{\contentsline {subsubsection}{関数ポインタをクラスとインターフェースで置き換える}{43}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}実装の詳細}{45}} -\@writefile{toc}{\contentsline {subsubsection}{タプルサーバー(FDLindaServ.java)}{45}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces SelectionKeyによるアタッチの遷移}}{46}} -\newlabel{handle}{{4.5}{46}} -\@writefile{toc}{\contentsline {subsubsection}{Linda API}{47}} -\@writefile{lot}{\contentsline {table}{\numberline {4.1}{\ignorespaces Java言語によるLinda API}}{47}} -\newlabel{javalindaapi}{{4.1}{47}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.3}リファクタリングを用いた設計の向上}{48}} -\@writefile{toc}{\contentsline {subsubsection}{リファクタリングとは}{48}} -\@writefile{toc}{\contentsline {subsubsection}{JDT(Java Development Tools)によるリファクタリング}{48}} -\@writefile{toc}{\contentsline {subsubsection}{問題提起}{49}} -\@writefile{toc}{\contentsline {subsubsection}{メソッドの抽出}{49}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.6}{\ignorespaces メソッドの抽出(1)}}{49}} -\newlabel{shot01}{{4.6}{49}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces メソッドの抽出(2)}}{49}} -\newlabel{shot02}{{4.7}{49}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.8}{\ignorespaces スーパークラスの抽出(1)}}{51}} -\newlabel{shot03}{{4.8}{51}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.9}{\ignorespaces スーパークラスの抽出(2)}}{51}} -\newlabel{shot04}{{4.9}{51}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{52}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}現実装(type2)における問題点}{33}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}テスト駆動開発における問題点}{33}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Federated Lindaのテスト状況}}{34}} +\newlabel{testshot}{{4.1}{34}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Federated Lindaへの機能拡張}{34}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Java言語によるLindaサーバーとLinda APIの実装}{34}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Java言語によるLindaサーバーの実装}{34}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Java New I/\penalty \exhyphenpenalty Oを用いたネットワークプログラミング}{35}} +\@writefile{toc}{\contentsline {subsubsection}{Buffer}{35}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Bufferのクラス図}}{36}} +\newlabel{Buffer}{{4.2}{36}} +\@writefile{toc}{\contentsline {subsubsection}{Channel}{36}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Channelのクラス図}}{37}} +\newlabel{Channel}{{4.3}{37}} +\@writefile{toc}{\contentsline {subsubsection}{Selector}{37}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Selectorとその関連クラスのクラス図}}{37}} +\newlabel{Selector}{{4.4}{37}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Java版LindaサーバーとLinda APIの詳細}{39}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}C言語構文に対する置き換え}{39}} +\@writefile{toc}{\contentsline {subsubsection}{構造体をクラスで置き換える}{39}} +\@writefile{toc}{\contentsline {subsubsection}{関数ポインタをクラスとインターフェースで置き換える}{41}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}実装の詳細}{43}} +\@writefile{toc}{\contentsline {subsubsection}{Lindaサーバー(FDLindaServ.java)}{43}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces SelectionKeyによるアタッチの遷移}}{44}} +\newlabel{handle}{{4.5}{44}} +\@writefile{toc}{\contentsline {subsubsection}{Linda API}{45}} +\@writefile{lot}{\contentsline {table}{\numberline {4.1}{\ignorespaces Java言語によるLinda API}}{45}} +\newlabel{javalindaapi}{{4.1}{45}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.3}リファクタリングを用いた設計の向上}{46}} +\@writefile{toc}{\contentsline {subsubsection}{リファクタリングとは}{46}} +\@writefile{toc}{\contentsline {subsubsection}{JDT(Java Development Tools)によるリファクタリング}{46}} +\@writefile{toc}{\contentsline {subsubsection}{問題提起}{47}} +\@writefile{toc}{\contentsline {subsubsection}{メソッドの抽出}{47}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.6}{\ignorespaces メソッドの抽出(1)}}{47}} +\newlabel{shot01}{{4.6}{47}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces メソッドの抽出(2)}}{47}} +\newlabel{shot02}{{4.7}{47}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.8}{\ignorespaces スーパークラスの抽出(1)}}{49}} +\newlabel{shot03}{{4.8}{49}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.9}{\ignorespaces スーパークラスの抽出(2)}}{49}} +\newlabel{shot04}{{4.9}{49}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.4}C言語版とJava言語版のプログラムコード数}{50}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{51}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}分散デバッグ開発}{52}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Java版タプルサーバーへの機能拡張}{52}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}Java版タプルサーバーへの通信量デバッグ機能の実装}{53}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.3}通信ログ情報のグラフィカルな表示ツール}{54}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{54}} -\newlabel{visual01}{{5.1}{54}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.4}Federated Lindaにおける分散デバッグ}{54}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces スケーラビリティを意識したデバッグインターフェース}}{55}} -\newlabel{FDLindaDebug}{{5.2}{55}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.5}分散デバッグの実現}{55}} -\@writefile{toc}{\contentsline {subsubsection}{リングトポロジにおける分散スナップショット}{55}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces リングトポロジでの分散スナップショット}}{56}} -\newlabel{Ring}{{5.3}{56}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces リンググループを内包したリングトポロジ}}{56}} -\newlabel{RingInRing}{{5.4}{56}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}結論}{57}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}二分法による逐次アルゴリズムのデバッグ}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}シーケンシャルなデバッグ手法の問題点}{52}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}分散デバッグの機能}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}分散デバッグ機能のスケーラビリティ}{52}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}通信量のデバッグインターフェース}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{52}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{53}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{53}} +\newlabel{visual01}{{5.1}{53}} +\@writefile{toc}{\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{53}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{53}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}評価}{53}} +\@writefile{toc}{\contentsline {section}{\numberline {5.5}考察}{53}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}結論}{54}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {6.1}まとめ}{57}} -\@writefile{toc}{\contentsline {section}{\numberline {6.2}今後の課題}{57}} -\@writefile{toc}{\contentsline {chapter}{謝辞}{58}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}まとめ}{54}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}今後の課題}{54}} +\@writefile{toc}{\contentsline {chapter}{謝辞}{55}} \bibcite{linda}{1} \bibcite{globalid}{2} \bibcite{dinamicrouting}{3} @@ -166,5 +164,5 @@ \bibcite{overlayweaver}{10} \bibcite{tomcat}{11} \bibcite{grizzly}{12} -\@writefile{toc}{\contentsline {chapter}{参考文献}{59}} -\@writefile{toc}{\contentsline {chapter}{付録}{60}} +\@writefile{toc}{\contentsline {chapter}{参考文献}{56}} +\@writefile{toc}{\contentsline {chapter}{発表文献}{57}}
--- a/paper/master_paper.lof Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.lof Thu Feb 14 00:04:05 2008 +0900 @@ -3,34 +3,29 @@ \contentsline {figure}{\numberline {2.1}{\ignorespaces LindaServer}}{3} \contentsline {figure}{\numberline {2.2}{\ignorespaces タプルスペースの相互接続}}{4} \contentsline {figure}{\numberline {2.3}{\ignorespaces type 1}}{6} -\contentsline {figure}{\numberline {2.4}{\ignorespaces type 2}}{6} +\contentsline {figure}{\numberline {2.4}{\ignorespaces type 2}}{7} \contentsline {figure}{\numberline {2.5}{\ignorespaces type 3}}{7} -\contentsline {figure}{\numberline {2.6}{\ignorespaces Tree型トポロジ}}{8} -\contentsline {figure}{\numberline {2.7}{\ignorespaces Mesh型トポロジ}}{8} -\contentsline {figure}{\numberline {2.8}{\ignorespaces タプルがない場合の in コマンドの実行}}{10} -\contentsline {figure}{\numberline {2.9}{\ignorespaces Perl, Python, Ruby で拡張したLinda API のクラス図}}{13} -\contentsline {figure}{\numberline {2.10}{\ignorespaces 使用するプロトコルの切替え}}{16} -\contentsline {figure}{\numberline {2.11}{\ignorespaces Configuratorによるトポロジ形成}}{18} -\contentsline {figure}{\numberline {2.12}{\ignorespaces LinkConfiguration のクラス図}}{20} -\addvspace {10\p@ } -\contentsline {figure}{\numberline {3.1}{\ignorespaces ルーティングテーブルとタプル空間でやり取りされるXMLデータの関係}}{24} -\contentsline {figure}{\numberline {3.2}{\ignorespaces ルーティングテーブルの例}}{24} -\contentsline {figure}{\numberline {3.3}{\ignorespaces ローカルエリアのホップ数が1の場合}}{25} -\contentsline {figure}{\numberline {3.4}{\ignorespaces ローカルエリアのホップ数が1の場合のLand Mark情報の流れ}}{25} -\contentsline {figure}{\numberline {3.5}{\ignorespaces ノード数に対してルーティングテーブルを構築するのにかかる時間}}{32} +\contentsline {figure}{\numberline {2.6}{\ignorespaces タプルがない場合の in コマンドの実行}}{9} +\contentsline {figure}{\numberline {2.7}{\ignorespaces Perl, Python, Ruby で拡張したLinda API のクラス図}}{11} +\contentsline {figure}{\numberline {2.8}{\ignorespaces 使用するプロトコルの切替え}}{14} +\contentsline {figure}{\numberline {2.9}{\ignorespaces Configuratorによるトポロジ形成}}{17} +\contentsline {figure}{\numberline {2.10}{\ignorespaces LinkConfiguration のクラス図}}{19} \addvspace {10\p@ } -\contentsline {figure}{\numberline {4.1}{\ignorespaces Federated Lindaのテスト状況}}{35} -\contentsline {figure}{\numberline {4.2}{\ignorespaces Bufferのクラス図}}{37} -\contentsline {figure}{\numberline {4.3}{\ignorespaces Channelのクラス図}}{38} -\contentsline {figure}{\numberline {4.4}{\ignorespaces Selectorとその関連クラスのクラス図}}{39} -\contentsline {figure}{\numberline {4.5}{\ignorespaces SelectionKeyによるアタッチの遷移}}{46} -\contentsline {figure}{\numberline {4.6}{\ignorespaces メソッドの抽出(1)}}{49} -\contentsline {figure}{\numberline {4.7}{\ignorespaces メソッドの抽出(2)}}{49} -\contentsline {figure}{\numberline {4.8}{\ignorespaces スーパークラスの抽出(1)}}{51} -\contentsline {figure}{\numberline {4.9}{\ignorespaces スーパークラスの抽出(2)}}{51} +\contentsline {figure}{\numberline {3.1}{\ignorespaces ルーティングテーブルとタプル空間でやり取りされるXMLデータの関係}}{23} +\contentsline {figure}{\numberline {3.2}{\ignorespaces ルーティングテーブルの例}}{23} +\contentsline {figure}{\numberline {3.3}{\ignorespaces ローカルエリアのホップ数が1の場合}}{24} +\contentsline {figure}{\numberline {3.4}{\ignorespaces ローカルエリアのホップ数が1の場合のLand Mark情報の流れ}}{24} +\contentsline {figure}{\numberline {3.5}{\ignorespaces ノード数に対してルーティングテーブルを構築するのにかかる時間}}{31} \addvspace {10\p@ } -\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{54} -\contentsline {figure}{\numberline {5.2}{\ignorespaces スケーラビリティを意識したデバッグインターフェース}}{55} -\contentsline {figure}{\numberline {5.3}{\ignorespaces リングトポロジでの分散スナップショット}}{56} -\contentsline {figure}{\numberline {5.4}{\ignorespaces リンググループを内包したリングトポロジ}}{56} +\contentsline {figure}{\numberline {4.1}{\ignorespaces Federated Lindaのテスト状況}}{34} +\contentsline {figure}{\numberline {4.2}{\ignorespaces Bufferのクラス図}}{36} +\contentsline {figure}{\numberline {4.3}{\ignorespaces Channelのクラス図}}{37} +\contentsline {figure}{\numberline {4.4}{\ignorespaces Selectorとその関連クラスのクラス図}}{37} +\contentsline {figure}{\numberline {4.5}{\ignorespaces SelectionKeyによるアタッチの遷移}}{44} +\contentsline {figure}{\numberline {4.6}{\ignorespaces メソッドの抽出(1)}}{47} +\contentsline {figure}{\numberline {4.7}{\ignorespaces メソッドの抽出(2)}}{47} +\contentsline {figure}{\numberline {4.8}{\ignorespaces スーパークラスの抽出(1)}}{49} +\contentsline {figure}{\numberline {4.9}{\ignorespaces スーパークラスの抽出(2)}}{49} \addvspace {10\p@ } +\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{53} +\addvspace {10\p@ }
--- a/paper/master_paper.log Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.log Thu Feb 14 00:04:05 2008 +0900 @@ -1,4 +1,4 @@ -This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19) 8 FEB 2008 16:41 +This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19) 13 FEB 2008 21:23 **master_paper (./master_paper.tex pLaTeX2e <2005/01/04>+0 (based on LaTeX2e <2001/06/01> patch level 0) @@ -219,9 +219,9 @@ <emblem-bitmap.eps> [2] 第 2 章(3ページ) LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 13. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 8. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 13. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 8. File: fig/lindacom.pdf Graphic file (type eps) <fig/lindacom.pdf> [3 @@ -231,10 +231,10 @@ File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [4] +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [5] File: fig/flinda_type1.pdf Graphic file (type eps) <fig/flinda_type1.pdf> -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [5] File: fig/flinda_type2.pdf Graphic file (type eps) <fig/flinda_type2.pdf> File: emblem-bitmap.eps Graphic file (type eps) @@ -242,66 +242,59 @@ <emblem-bitmap.eps> [6] File: fig/flinda_type3.pdf Graphic file (type eps) <fig/flinda_type3.pdf> -File: fig/tree.pdf Graphic file (type eps) - <fig/tree.pdf> -File: fig/mesh.pdf Graphic file (type eps) - <fig/mesh.pdf> File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [7] +File: fig/pdf/async-in.pdf Graphic file (type eps) -<emblem-bitmap.eps> [7] +<fig/pdf/async-in.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [8] -File: fig/pdf/async-in.pdf Graphic file (type eps) - <fig/pdf/async-in.pdf> File: emblem-bitmap.eps Graphic file (type eps) - -<emblem-bitmap.eps> [9] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [10] -LaTeX Font Info: Try loading font information for OMS+cmr on input line 295. + <emblem-bitmap.eps> [9] +LaTeX Font Info: Try loading font information for OMS+cmr on input line 275. (/usr/local/share/texmf/tex/latex/base/omscmr.fd File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 295. +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 275. File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [11] + <emblem-bitmap.eps> [10] File: fig/pdf/flinda-class-dig.pdf Graphic file (type eps) <fig/pdf/flinda-class-dig.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [12] -Overfull \hbox (26.84889pt too wide) in paragraph at lines 403--405 + <emblem-bitmap.eps> [11] +Overfull \hbox (26.84889pt too wide) in paragraph at lines 376--378 []\JY1/mc/m/n/12 受け取 っ たタプルを取得する 。 タプルをまだ受け取 っ ていなか っ たら \OT1/cmtt/m/n/12 null(None) [] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [13] +<emblem-bitmap.eps> [12] File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [14] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [15] + <emblem-bitmap.eps> [13] File: fig/pdf/select_protocol.pdf Graphic file (type eps) <fig/pdf/select_protocol.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [16] + <emblem-bitmap.eps> [14] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -[17] +[15] +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [16] File: fig/pdf/lc.pdf Graphic file (type eps) <fig/pdf/lc.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [18] + <emblem-bitmap.eps> [17] File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [19] + +<emblem-bitmap.eps> [18] File: fig/pdf/LinkConfig-class-dig.pdf Graphic file (type eps) - -<fig/pdf/LinkConfig-class-dig.pdf> -Overfull \hbox (35.1601pt too wide) in paragraph at lines 706--709 + <fig/pdf/LinkConfig-class-dig.pdf> +Overfull \hbox (35.1601pt too wide) in paragraph at lines 665--668 \JY1/mc/m/n/12 スペ ース \OT1/cmr/m/n/12 ID(\OT1/cmtt/m/n/12 tsid\OT1/cmr/m/n/1 2 )\JY1/mc/m/n/12 、 解析する \OT1/cmr/m/n/12 XML(\OT1/cmtt/m/n/12 xmltext\OT1/ cmr/m/n/12 ) \JY1/mc/m/n/12 を取る 。 解析結果の \OT1/cmtt/m/n/12 LinkConfigura @@ -309,227 +302,221 @@ [] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [20]) (./implementation_of_compact_routing.tex +<emblem-bitmap.eps> [19]) (./implementation_of_compact_routing.tex File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [21] -第 3 章(22ページ) -[22 +<emblem-bitmap.eps> [20] +第 3 章(21ページ) +[21 ] File: fig/pdf/XMLandRoutingTable.pdf Graphic file (type eps) <fig/pdf/XMLandRoutingTable.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] -[23] +[22] File: fig/pdf/routing_landmark.pdf Graphic file (type eps) <fig/pdf/routing_landmark.pdf> File: fig/pdf/landmark.pdf Graphic file (type eps) <fig/pdf/landmark.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] -[24] +[23] File: fig/pdf/land_update.pdf Graphic file (type eps) <fig/pdf/land_update.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 + [] + +[24] +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> +Overfull \hbox (87.18262pt too wide) has occurred while \output is active +[] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] [25] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] [26] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] [27] +Overfull \vbox (26.03447pt too high) has occurred while \output is active [] + File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active + +<emblem-bitmap.eps> +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] [28] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] [29] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active -[] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 - [] - -[30] File: fig/pdf/score.pdf Graphic file (type eps) <fig/pdf/score.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] -[31] +[30] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] -[32]) (./implementation_of_type3.tex +[31]) (./implementation_of_type3.tex File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> -Overfull \hbox (19.4779pt too wide) has occurred while \output is active +Overfull \hbox (87.18262pt too wide) has occurred while \output is active [] \JY1/gt/m/n/10.95 第 \OT1/cmr/bx/n/10.95 3 \JY1/gt/m/n/10.95 章 \OT1/cmr/bx/ -n/10.95 Federated Linda \JY1/gt/m/n/10.95 による \OT1/cmr/bx/n/10.95 Compact Ro -uting \JY1/gt/m/n/10.95 の実装 +n/10.95 Compact Routing \JY1/gt/m/n/10.95 の実装による \OT1/cmr/bx/n/10.95 type + 2 Federated Linda \JY1/gt/m/n/10.95 の評価 [] -[33] -第 4 章(34ページ) +[32] +第 4 章(33ページ) File: fig/pdf/pic.pdf Graphic file (type eps) -<fig/pdf/pic.pdf> [34 +<fig/pdf/pic.pdf> [33 ] File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [35] -Overfull \hbox (5.48253pt too wide) in paragraph at lines 106--109 + <emblem-bitmap.eps> [34] +Overfull \hbox (5.48253pt too wide) in paragraph at lines 105--108 []\OT1/cmr/m/n/12 Java New I/O(\JY1/mc/m/n/12 以下 \OT1/cmr/m/n/12 NIO) \JY1/mc /m/n/12 とは \OT1/cmr/m/n/12 2002 \JY1/mc/m/n/12 年 \OT1/cmr/m/n/12 2 \JY1/mc/m /n/12 月に正式リリ ースされた \OT1/cmr/m/n/12 Java 2 Plat-form,Standard [] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [36] +<emblem-bitmap.eps> [35] File: fig/pdf/Buffer.pdf Graphic file (type eps) <fig/pdf/Buffer.pdf> +File: fig/pdf/Channel.pdf Graphic file (type eps) + <fig/pdf/Channel.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [37] -File: fig/pdf/Channel.pdf Graphic file (type eps) -<fig/pdf/Channel.pdf> +<emblem-bitmap.eps> [36] File: fig/pdf/Selector.pdf Graphic file (type eps) <fig/pdf/Selector.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [38] + <emblem-bitmap.eps> [37] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [39] +<emblem-bitmap.eps> [38] File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [40] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [41] + <emblem-bitmap.eps> [39] Overfull \vbox (17.9789pt too high) has occurred while \output is active [] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [42] +<emblem-bitmap.eps> [40] +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [41] File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [43] + <emblem-bitmap.eps> [42] +File: emblem-bitmap.eps Graphic file (type eps) + +<emblem-bitmap.eps> [43] +File: fig/pdf/handle.pdf Graphic file (type eps) + <fig/pdf/handle.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [44] File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [45] -File: fig/pdf/handle.pdf Graphic file (type eps) - <fig/pdf/handle.pdf> File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [46] -File: emblem-bitmap.eps Graphic file (type eps) - -<emblem-bitmap.eps> [47] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [48] File: fig/pdf/shot01.pdf Graphic file (type eps) <fig/pdf/shot01.pdf> File: fig/pdf/shot02.pdf Graphic file (type eps) <fig/pdf/shot02.pdf> File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [49] + <emblem-bitmap.eps> [47] File: fig/pdf/shot03.pdf Graphic file (type eps) <fig/pdf/shot03.pdf> File: fig/pdf/shot04.pdf Graphic file (type eps) -<fig/pdf/shot04.pdf>) (./evaluation.tex +<fig/pdf/shot04.pdf> +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [48] +File: emblem-bitmap.eps Graphic file (type eps) + <emblem-bitmap.eps> [49]) +(./evaluation.tex File: emblem-bitmap.eps Graphic file (type eps) <emblem-bitmap.eps> [50] -File: emblem-bitmap.eps Graphic file (type eps) - -<emblem-bitmap.eps> [51] -第 5 章(52ページ) -[52 +第 5 章(51ページ) +[51 ] -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [53] -File: fig/pdf/visual01.pdf Graphic file (type eps) - <fig/pdf/visual01.pdf> -File: fig/pdf/FDLindaDebug.pdf Graphic file (type eps) +Overfull \vbox (18.61403pt too high) has occurred while \output is active [] -<fig/pdf/FDLindaDebug.pdf> -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [54] -File: fig/pdf/Ring.pdf Graphic file (type eps) - <fig/pdf/Ring.pdf> -File: fig/pdf/RingInRing.pdf Graphic file (type eps) - -<fig/pdf/RingInRing.pdf>) (./conclusion.tex -File: emblem-bitmap.eps Graphic file (type eps) - <emblem-bitmap.eps> [55] File: emblem-bitmap.eps Graphic file (type eps) -<emblem-bitmap.eps> [56] -第 6 章(57ページ) -) (./thanx.tex [57 +<emblem-bitmap.eps> [52] +File: fig/pdf/visual01.pdf Graphic file (type eps) + <fig/pdf/visual01.pdf>) (./conclusion.tex +File: emblem-bitmap.eps Graphic file (type eps) -]) (./bibliography.tex [58 +<emblem-bitmap.eps> [53] +第 6 章(54ページ) +) (./thanx.tex [54 -]) (./appendix.tex [59 +]) (./bibliography.tex [55 + +]) (./appendix.tex [56 ]) No file master_paper.ind. -[60 +[57 ] (./master_paper.aux) @@ -537,12 +524,12 @@ ) Here is how much of TeX's memory you used: - 985 strings out of 95593 - 12268 string characters out of 1192020 - 68054 words of memory out of 1000001 - 4047 multiletter control sequences out of 10000+50000 + 970 strings out of 95593 + 12076 string characters out of 1192020 + 68055 words of memory out of 1000001 + 4037 multiletter control sequences out of 10000+50000 19518 words of font info for 77 fonts, out of 500000 for 1000 14 hyphenation exceptions out of 1000 33i,12n,24p,300b,631s stack positions out of 1500i,500n,5000p,200000b,5000s -Output written on master_paper.dvi (66 pages, 196860 bytes). +Output written on master_paper.dvi (63 pages, 194184 bytes).
--- a/paper/master_paper.lot Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.lot Thu Feb 14 00:04:05 2008 +0900 @@ -2,9 +2,9 @@ \addvspace {10\p@ } \contentsline {table}{\numberline {2.1}{\ignorespaces Linda API}}{3} \addvspace {10\p@ } -\contentsline {table}{\numberline {3.1}{\ignorespaces 分散プログラムの3つの要素}}{23} -\contentsline {table}{\numberline {3.2}{\ignorespaces Routing Table 構築にかかる時間}}{32} +\contentsline {table}{\numberline {3.1}{\ignorespaces 分散プログラムの3つの要素}}{22} +\contentsline {table}{\numberline {3.2}{\ignorespaces Routing Table 構築にかかる時間}}{31} \addvspace {10\p@ } -\contentsline {table}{\numberline {4.1}{\ignorespaces Java言語によるLinda API}}{47} +\contentsline {table}{\numberline {4.1}{\ignorespaces Java言語によるLinda API}}{45} \addvspace {10\p@ } \addvspace {10\p@ }
--- a/paper/master_paper.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.tex Thu Feb 14 00:04:05 2008 +0900 @@ -10,7 +10,7 @@ % bookmarkstype=toc]{hyperref} \jtitle{分散プログラミングモデル Federated Linda と 分散デバッグ開発} -\etitle{Distributed Programming Model : Federated Linda and Distribute debugging development} +\etitle{Distributed Programming Model : Federated Linda and Distributed debugging development} \year{平成19年度} \affiliation{\center% \includegraphics[clip,keepaspectratio,width=.15\textwidth] @@ -56,7 +56,7 @@ %------------New!--------------------------------- %Federated Linda の提案 \input{suggestion_of_flinda.tex} -%Federated Linda によるCompact Routingの実装 +%Compact Routing の実装によるtype 2 Federated Linda の評価 \input{implementation_of_compact_routing.tex} %Java言語による実装(type3) \input{implementation_of_type3.tex}
--- a/paper/master_paper.toc Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/master_paper.toc Thu Feb 14 00:04:05 2008 +0900 @@ -5,72 +5,80 @@ \contentsline {section}{\numberline {2.1}LindaとFedarated Linda}{3} \contentsline {subsection}{\numberline {2.1.1}Linda}{3} \contentsline {subsection}{\numberline {2.1.2}Federated Linda}{4} -\contentsline {section}{\numberline {2.2}Federated Linda の分散プログラミング}{4} -\contentsline {subsubsection}{Local Access to Protocol}{5} +\contentsline {section}{\numberline {2.2}Federated Linda の分散プログラミング}{5} +\contentsline {subsubsection}{Local Access Protocol}{5} \contentsline {subsubsection}{Protocol Engine}{5} \contentsline {subsubsection}{Link Configuration}{5} \contentsline {section}{\numberline {2.3}実装の段階分け}{5} -\contentsline {subsection}{\numberline {2.3.1}type 1}{5} +\contentsline {subsection}{\numberline {2.3.1}type 1}{6} \contentsline {subsection}{\numberline {2.3.2}type 2}{6} \contentsline {subsection}{\numberline {2.3.3}type 3}{7} -\contentsline {section}{\numberline {2.4}現段階における実装}{9} -\contentsline {subsection}{\numberline {2.4.1}type2の実装}{9} -\contentsline {subsubsection}{Linda Server}{9} -\contentsline {subsubsection}{Federated Linda API}{11} -\contentsline {subsubsection}{C言語のAPI}{11} -\contentsline {subsubsection}{Perl, Python, Ruby の API}{12} -\contentsline {subsection}{\numberline {2.4.2}Local Access to Protocol}{14} -\contentsline {subsubsection}{ポーリング型のプログラミングスタイル}{14} -\contentsline {subsubsection}{Protocol Engine へのアクセス}{16} -\contentsline {subsection}{\numberline {2.4.3}Protocol Engine}{16} -\contentsline {subsection}{\numberline {2.4.4}Link Configuration}{18} -\contentsline {subsubsection}{トポロジを表すXML}{18} -\contentsline {subsubsection}{接続を行うモジュール}{20} -\contentsline {chapter}{\numberline {第3章}Federated Linda によるCompact Routingの実装}{22} -\contentsline {section}{\numberline {3.1}Compact Routingのアルゴリズム}{22} -\contentsline {section}{\numberline {3.2}実装の詳細}{23} -\contentsline {subsection}{\numberline {3.2.1}Protocol Engineによるルーティングテーブルの構築}{24} -\contentsline {subsubsection}{ローカルエリアネットワークの構築}{25} -\contentsline {subsubsection}{LandMark情報の更新}{25} -\contentsline {subsection}{\numberline {3.2.2}Protocol Engineの継承による実装}{26} -\contentsline {subsection}{\numberline {3.2.3}ルーティングテーブルの構築、更新処理}{28} -\contentsline {section}{\numberline {3.3}ルーティングテーブル構築時間の測定}{31} -\contentsline {subsection}{\numberline {3.3.1}測定の流れ}{31} -\contentsline {subsection}{\numberline {3.3.2}測定結果}{31} -\contentsline {section}{\numberline {3.4}考察}{33} -\contentsline {chapter}{\numberline {第4章}Java言語による実装(type3)}{34} -\contentsline {section}{\numberline {4.1}現実装(type2)における問題点}{34} -\contentsline {subsection}{\numberline {4.1.1}テスト駆動開発における問題点}{34} -\contentsline {section}{\numberline {4.2}Federated Lindaへの機能拡張(type3化)}{35} -\contentsline {subsection}{\numberline {4.2.1}Java言語によるタプルサーバーとLinda APIの実装}{35} -\contentsline {section}{\numberline {4.3}Java言語によるタプルサーバーの実装}{35} -\contentsline {subsection}{\numberline {4.3.1}Java New I/\penalty \exhyphenpenalty Oを用いたネットワークプログラミング}{36} -\contentsline {subsubsection}{Buffer}{36} -\contentsline {subsubsection}{Channel}{37} -\contentsline {subsubsection}{Selector}{38} -\contentsline {section}{\numberline {4.4}Java版タプルサーバーとLinda APIの詳細}{40} -\contentsline {subsection}{\numberline {4.4.1}C言語構文に対する置き換え}{40} -\contentsline {subsubsection}{構造体をクラスで置き換える}{40} -\contentsline {subsubsection}{関数ポインタをクラスとインターフェースで置き換える}{43} -\contentsline {subsection}{\numberline {4.4.2}実装の詳細}{45} -\contentsline {subsubsection}{タプルサーバー(FDLindaServ.java)}{45} -\contentsline {subsubsection}{Linda API}{47} -\contentsline {subsection}{\numberline {4.4.3}リファクタリングを用いた設計の向上}{48} -\contentsline {subsubsection}{リファクタリングとは}{48} -\contentsline {subsubsection}{JDT(Java Development Tools)によるリファクタリング}{48} -\contentsline {subsubsection}{問題提起}{49} -\contentsline {subsubsection}{メソッドの抽出}{49} -\contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{52} -\contentsline {section}{\numberline {5.1}分散デバッグ開発}{52} -\contentsline {subsection}{\numberline {5.1.1}Java版タプルサーバーへの機能拡張}{52} -\contentsline {subsection}{\numberline {5.1.2}Java版タプルサーバーへの通信量デバッグ機能の実装}{53} -\contentsline {subsection}{\numberline {5.1.3}通信ログ情報のグラフィカルな表示ツール}{54} -\contentsline {subsection}{\numberline {5.1.4}Federated Lindaにおける分散デバッグ}{54} -\contentsline {subsection}{\numberline {5.1.5}分散デバッグの実現}{55} -\contentsline {subsubsection}{リングトポロジにおける分散スナップショット}{55} -\contentsline {chapter}{\numberline {第6章}結論}{57} -\contentsline {section}{\numberline {6.1}まとめ}{57} -\contentsline {section}{\numberline {6.2}今後の課題}{57} -\contentsline {chapter}{謝辞}{58} -\contentsline {chapter}{参考文献}{59} -\contentsline {chapter}{付録}{60} +\contentsline {section}{\numberline {2.4}現段階における実装}{8} +\contentsline {subsection}{\numberline {2.4.1}type2の実装}{8} +\contentsline {subsubsection}{Linda Server}{8} +\contentsline {subsubsection}{Federated Linda API}{10} +\contentsline {subsubsection}{C言語のAPI}{10} +\contentsline {subsubsection}{Perl, Python, Ruby の API}{11} +\contentsline {subsection}{\numberline {2.4.2}Local Access Protocol}{13} +\contentsline {subsubsection}{ポーリング型のプログラミングスタイル}{13} +\contentsline {subsubsection}{Protocol Engine へのアクセス}{14} +\contentsline {subsection}{\numberline {2.4.3}Protocol Engine}{15} +\contentsline {subsection}{\numberline {2.4.4}Link Configuration}{17} +\contentsline {subsubsection}{トポロジを表すXML}{17} +\contentsline {subsubsection}{接続を行うモジュール}{19} +\contentsline {chapter}{\numberline {第3章}Compact Routing の実装によるtype 2 Federated Linda の評価}{21} +\contentsline {section}{\numberline {3.1}Compact Routingのアルゴリズム}{21} +\contentsline {section}{\numberline {3.2}実装の詳細}{22} +\contentsline {subsection}{\numberline {3.2.1}Protocol Engineによるルーティングテーブルの構築}{23} +\contentsline {subsubsection}{ローカルエリアネットワークの構築}{24} +\contentsline {subsubsection}{LandMark情報の更新}{24} +\contentsline {subsection}{\numberline {3.2.2}Protocol Engineの継承による実装}{25} +\contentsline {subsection}{\numberline {3.2.3}ルーティングテーブルの構築、更新処理}{27} +\contentsline {section}{\numberline {3.3}ルーティングテーブル構築時間の測定}{30} +\contentsline {subsection}{\numberline {3.3.1}測定の流れ}{30} +\contentsline {subsection}{\numberline {3.3.2}測定結果}{30} +\contentsline {section}{\numberline {3.4}考察}{32} +\contentsline {chapter}{\numberline {第4章}Java言語による実装}{33} +\contentsline {section}{\numberline {4.1}現実装(type2)における問題点}{33} +\contentsline {subsection}{\numberline {4.1.1}テスト駆動開発における問題点}{33} +\contentsline {section}{\numberline {4.2}Federated Lindaへの機能拡張}{34} +\contentsline {subsection}{\numberline {4.2.1}Java言語によるLindaサーバーとLinda APIの実装}{34} +\contentsline {section}{\numberline {4.3}Java言語によるLindaサーバーの実装}{34} +\contentsline {subsection}{\numberline {4.3.1}Java New I/\penalty \exhyphenpenalty Oを用いたネットワークプログラミング}{35} +\contentsline {subsubsection}{Buffer}{35} +\contentsline {subsubsection}{Channel}{36} +\contentsline {subsubsection}{Selector}{37} +\contentsline {section}{\numberline {4.4}Java版LindaサーバーとLinda APIの詳細}{39} +\contentsline {subsection}{\numberline {4.4.1}C言語構文に対する置き換え}{39} +\contentsline {subsubsection}{構造体をクラスで置き換える}{39} +\contentsline {subsubsection}{関数ポインタをクラスとインターフェースで置き換える}{41} +\contentsline {subsection}{\numberline {4.4.2}実装の詳細}{43} +\contentsline {subsubsection}{Lindaサーバー(FDLindaServ.java)}{43} +\contentsline {subsubsection}{Linda API}{45} +\contentsline {subsection}{\numberline {4.4.3}リファクタリングを用いた設計の向上}{46} +\contentsline {subsubsection}{リファクタリングとは}{46} +\contentsline {subsubsection}{JDT(Java Development Tools)によるリファクタリング}{46} +\contentsline {subsubsection}{問題提起}{47} +\contentsline {subsubsection}{メソッドの抽出}{47} +\contentsline {subsection}{\numberline {4.4.4}C言語版とJava言語版のプログラムコード数}{50} +\contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{51} +\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{52} +\contentsline {subsection}{\numberline {5.1.1}二分法による逐次アルゴリズムのデバッグ}{52} +\contentsline {subsection}{\numberline {5.1.2}シーケンシャルなデバッグ手法の問題点}{52} +\contentsline {section}{\numberline {5.2}分散デバッグの機能}{52} +\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{52} +\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{52} +\contentsline {subsection}{\numberline {5.2.3}分散デバッグ機能のスケーラビリティ}{52} +\contentsline {section}{\numberline {5.3}通信量のデバッグインターフェース}{52} +\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{52} +\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{53} +\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{53} +\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{53} +\contentsline {subsection}{\numberline {5.4.2}評価}{53} +\contentsline {section}{\numberline {5.5}考察}{53} +\contentsline {chapter}{\numberline {第6章}結論}{54} +\contentsline {section}{\numberline {6.1}まとめ}{54} +\contentsline {section}{\numberline {6.2}今後の課題}{54} +\contentsline {chapter}{謝辞}{55} +\contentsline {chapter}{参考文献}{56} +\contentsline {chapter}{発表文献}{57}
--- a/paper/missfont.log Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/missfont.log Thu Feb 14 00:04:05 2008 +0900 @@ -81,3 +81,25 @@ mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10 +mktexpk --mfmode cx --bdpi 300 --mag 1+0/300 --dpi 300 lcirclew10
--- a/paper/suggestion_of_flinda.tex Tue Feb 12 18:08:59 2008 +0900 +++ b/paper/suggestion_of_flinda.tex Thu Feb 14 00:04:05 2008 +0900 @@ -53,18 +53,19 @@ \begin{figure}[htc] \begin{center} -\includegraphics[width=12cm]{fig/connection-of-tspace.pdf} +\includegraphics[width=14cm]{fig/connection-of-tspace.pdf} \end{center} \caption{タプルスペースの相互接続} \label{connection-of-tspace} \end{figure} +\newpage \section{Federated Linda の分散プログラミング} -Fedetated Linda の分散プログラムには``Local Access to Protocol'', ``Protocol Engine'', +Fedetated Linda の分散プログラムには``Local Access Protocol'', ``Protocol Engine'', ``Link Configuration'' の3つの要素がある。Federated Linda はこの3つの 要素に基づいてプログラミングモデルを提供する。 -\subsubsection{Local Access to Protocol} +\subsubsection{Local Access Protocol} プロトコルへのアクセスは Linda の API を用いる。つまり、タプルスペースへ の ``in'', ``read'', ``out'' などである。これらのコマンドは単純で、理解し やすいものである。タプルの出し入れというモデルで通信を行うことができる。 @@ -100,9 +101,12 @@ \subsection{type 1} -type 1 は通常の非同期型Lindaプログラムである(図\ref{type1}参照)。タプル -スペースを持つLindaサーバに、Clientプログラムがタプルを出し入れすること +type 1 は本研究室で開発した非同期型Lindaプログラムである(図\ref{type1}参照)。 +タプルスペースを持つLindaサーバに、Clientプログラムがタプルを出し入れすること により、分散プログラムを実現している。 +非同期型Lindaはpolling base の実装であり、また、複数のcommandをqueueに登録して、 +同期処理部分で複数同時に送信する、という実装が可能である。これにより、 +細かいタプル操作毎に通信せず、送信するパケットをまとめることを実現する。 \begin{figure}[htbp] \begin{center} @@ -124,7 +128,7 @@ ことが望ましい。そのようにすれば、状態はLinda上に維持される。Lindaとの接 続が切れても、状態がLindaに維持されていれば、状態を持たないProtocol Engine を接続することにより自動的に再接続される。現在の実装では、 -Protocol Engine は Perl 上の非同期タプル通信であり、シングルスレッドで動 +Protocol Engine は Perl, Python 上の非同期タプル通信であり、シングルスレッドで動 作する。 Protocol Engine は、タプル空間のタプルを見張り、タプルの状態の変化により、 @@ -243,7 +247,7 @@ \newpage -\subsubsection{Federated Linda API} %% Local Access に入れてもいい?? +\subsubsection{Federated Linda API} Federated Linda の通信は非同期に行われる。in, read, out などのコマンドの関数 を呼び出した時点では通信は行われず、それらのコマンドを一時的にキュー @@ -315,8 +319,8 @@ {\tt psx\_in, psx\_rd}の返答を取り出すかを指定するためのものである。通信は {\tt psx\_sync\_n}でのみ発生する。 -これらのAPIを用いた通信はポーリング型の形を取る。具体的なポーリングベー -スのプログラミング例は Local Access の説明で述べる。 +%これらのAPIを用いた通信はポーリング型の形を取る。具体的なポーリングベー +%スのプログラミング例は Local Access の説明で述べる。 \subsubsection{Perl, Python, Ruby の API} @@ -331,7 +335,7 @@ \begin{figure}[htbp] \begin{center} -\includegraphics[width=15cm]{fig/pdf/flinda-class-dig.pdf} +\includegraphics[width=11.2cm]{fig/pdf/flinda-class-dig.pdf} \caption{Perl, Python, Ruby で拡張したLinda API のクラス図} \label{LWLClass} \end{center} @@ -381,7 +385,8 @@ {\tt in, read}などのタプルを受け取るコマンドは、{\tt Reply}インスタンスを返す。Linda Serverからのタプルを取り出したいときは、{\tt Reply}の{\tt reply}メソッドを用いる。 -\subsection{Local Access to Protocol} +\newpage +\subsection{Local Access Protocol} ``Local Access''はプロトコルへアクセスするAPIである。APIの内容は先に説明 したので、ここではクライアントプログラムにおける Linda API を用いたプロ @@ -479,7 +484,7 @@ \subsection{Protocol Engine} type 2 では Protocol Engine は Linda API を用いて実装する。よって実装の -スタイル自体は Local Access to Protocol にて説明した通りである。そしてそ +スタイル自体は Local Access Protocol にて説明した通りである。そしてそ の API を用いて分散アルゴリズムを実装する。分散アルゴリズムは多種多様あ り、またその実装方法も多い。しかし、タプルのやり取りの部分はやタプルIDの 使いかたなどは共通しているので、その部分を説明する。 @@ -542,6 +547,7 @@ タプルID毎に行うと良い。そうでない場合は同一タプルIDを使うという手段 もある。 +\newpage \subsection{Link Configuration} Linda Server 間は Protocol Engine で接続される。その接続の形を規定するの