# HG changeset patch # User ichikitakahiro # Date 1620306539 -32400 # Node ID a4775c545abcda57ea0044a57ab1974fd0ec8c06 # Parent d5db71167d90e56e8fbb01d52105b200a4275fd3 tweak diff -r d5db71167d90 -r a4775c545abc Paper/paper.pdf Binary file Paper/paper.pdf has changed diff -r d5db71167d90 -r a4775c545abc Paper/paper.tex --- a/Paper/paper.tex Thu May 06 21:03:16 2021 +0900 +++ b/Paper/paper.tex Thu May 06 22:08:59 2021 +0900 @@ -114,7 +114,7 @@ また, UNIXはデバイスにまたがる仮想ファイルシステムを搭載している. 例えばネットワークを経由してファイルシステムにアクセスする際は, 木構造に構成されたディレクトリTree にリモート先のファイルシステムをマウントすることにより参照することができる. -UNIXbaseのファイルシステムを比較・検討をしながらGearsOSを構成していく. +UNIXbaseのファイルシステムと比較・検討をしながらGearsOSを構成していく. @@ -190,6 +190,7 @@ \section{分散フレームワークChristie} Christieは当研究室で開発されているjava言語で記述された, 分散フレームワークである. ChristieはCbCと似ているが異なる仕様を持つGearというプログラミング概念を持つ. +ChristieのGearとして以下の4つのものが存在する. \begin{itemize} \item \|CodeGear|(以下CG) @@ -207,7 +208,7 @@ DataGearManagerはDGを管理しているもので変数プールに相当し, CGMが利用するCGのkeyとputされたデータの組み合わせを所持している. DataGearManagerはLocalとRemoteに区分することができ, LocalDGMはCGM自身が所持するDGのプールであり, Localにputすることにより自身の持つkeyにDGを送ることができる. -対するRemoteDataGearManagerはCGMが配線されている別のCGMが持つDGのプールである. つまり, 任意の接続されたRemoteDGMにDGをputすると, 対応したCGM(ノード)が持つDGMのpoolにDGが送信される. RemoteDGMにDGをputする処理が分散処理の肝となっている. RemoteDataGearManagerの仕組みを図\ref{fig:RDGM}に示す. +対するRemoteDataGearManagerはCGMが配線されている別のCGMが持つDGのプールである. つまり, 任意の接続されたRemoteDGMにDGをputすると, 対応したCGM(ノード)が持つLocalDGMのpoolにDGが送信される. RemoteDGMにDGをputする処理が分散処理の肝となっている. RemoteDataGearManagerを図的に表現したものを図\ref{fig:RDGM}に示す. \begin{figure}[h] \begin{center} @@ -287,8 +288,7 @@ \section{GearOSのファイルアクセス} Christieの分散ファイルシステムをWordCount例題を通して構築する. WordCount例題とは指定したファイルの中身の文字列を読み取り, 文字数と行列数, 加えて文字列を出力すると言う例題である. -CbCで記述した場合のWordCountプログラムの遷移図を示した図を図に示す. -WordCountの例題は大きく分けて, 指定した名前のファイルをFIle構造体としてOpenするFileOpenスレッド, ファイル構造体を受け取り文字列(word)を表示し文字数(bytes)と行数(lines)をCountUpするWordCountスレッドの二つのCodeGearで記述することができる. +WordCountの例題は大きく分けて, 指定した名前のファイルをFile構造体としてOpenするFileOpenスレッド, ファイル構造体を受け取り文字列(word)を表示し文字数(bytes)と行数(lines)をCountUpするWordCountスレッドの二つのCodeGearで記述することができる. 図\ref{fig:WCStates}で示したWordCountの遷移図はFileをオープンしたCGとWordCountのCGを巡回することにより, ブロックを処理していく. WordCountとファイルの接続はUNIXのシェルのようにプログラムの外で接続される. この接続はTopologyManagerによって接続される. @@ -321,10 +321,12 @@ FileのeofなどはDGにフラグをつけて関数型プログラミング的に処理される. -図\ref{fig:WCDGMwChristie}はWordCountをRemoteDGMを用いて記述した際の遷移図である. +図\ref{fig:WCDGMwChristie}はWordCountをRemoteDGMを用いて構成する際の遷移図である. NodeAにて任意のファイルを開きDGMを通して1行ごとに文字列をNodeBに送信(put), NodeBにてWordCountの処理を行い, OutputとしてNodeBからWordCountの処理を送り返す. NodeA側から送信するファイルの行がなくなった場合, NodeB側にeofを送信して双方の処理を終了するといった流れになる. +CbCで記述した場合のWordCountプログラムをコード:\ref{codes: UnixF}, \ref{codes: WCImple} に示す. + \begin{figure}[h] \begin{center} \includegraphics[width=80mm]{images/wordCountDGM.pdf} @@ -334,9 +336,9 @@ \end{figure} -\begin{lstlisting}[frame=lrbt,label=codes: UnixFI,caption={UnixFileImpl.cbc}] +\begin{lstlisting}[frame=lrbt,label=codes: UnixF,caption={UnixFileImpl.cbc}] #include -#impl UnixFileImp as "UnixFileImpl.h" +#impl UnixFileImpl as "UnixFileImpl.h" File* createUnixFileImpl(struct Context* context) { File *file = new File(); @@ -344,7 +346,7 @@ return file; } -readBlock(UnixFileImpl* file) { +readBlock*(UnixFileImpl* file) { Block *block = new Block(); int len = read(fd, BUFSIZE, block->data); block->eof &= ~BLOCK_FLAG_EOF; @@ -363,7 +365,7 @@ goto next(readBlock(file), ...); } -__code uniAck(UnixFileImpl* file,Ack *ack, __code next(Block *block,...)); +__code unixAck(UnixFileImpl* file,Ack *ack, __code next(Block *block,...)); if (!ack->isOk) { close(file->fd); goto next(...); @@ -482,11 +484,14 @@ \begin{thebibliography}{10} +%かずきさんのAlice 徳森さんのCbC +\bibitem{latex}照屋 のぞみ,河野真治 : \textbf{分散フレームワークChristieの設計}.琉球大学理工学研究科修士論文 2018. +\bibitem{latex}赤嶺 一樹,河野真治 : \textbf{分散ネットワークフレームワークAlice の 提案と実装}.琉球大学理工学研究科修士論文 2012. \bibitem{aka}赤堀 貴一,河野真治 : \textbf{Christieによるブロックチェーンの実装}.琉球大学工学部情報工学科卒業論文 2019. -\bibitem{latex}照屋 のぞみ,河野真治 : \textbf{分散フレームワークChristieの設計}.琉球大学理工学研究科修士論文 2018. +\bibitem{latex}徳森 海斗,河野真治 : \textbf{LLVM Clang 上の Continuation based C コンパイラ の改良}.琉球大学理工学研究科修士論文 2016. \bibitem{latex}清水 隆博,河野真治 : \textbf{xv6 の構成要素の継続の分析}.OS研究会2019. \bibitem{latex}清水 隆博,河野真治 : \textbf{継続を基本とした言語による OS のモジュール化}.琉球大学理工学研究科修士論文 2020. -\bibitem{latex}宮城 光輝,河野真治 : \textbf{継続を基本とした言語による OS のモジュール化}.琉球大学理工学研究科修士論文 2020. +\bibitem{latex}宮城 光輝,河野真治 : \textbf{継続を基本とした言語による OS のモジュール化}.琉球大学理工学研究科修士論文 2018. \end{thebibliography}