# HG changeset patch # User akahori # Date 1550669816 -32400 # Node ID 4aaec2c74af570206d85608f9bb2aa90ee258efb # Parent 3776a23274a79e121d7ac9b4627161305b769c95 update main diff -r 3776a23274a7 -r 4aaec2c74af5 final_main/chapter1/chapter1.tex --- a/final_main/chapter1/chapter1.tex Wed Feb 20 18:22:57 2019 +0900 +++ b/final_main/chapter1/chapter1.tex Wed Feb 20 22:36:56 2019 +0900 @@ -9,12 +9,11 @@ % 序論の目安としては1枚半ぐらい. -コンピュータにおいてデータの破損や不整合は深刻な異常を引き起こす原因となる. そのため, 破損, 不整合を検知するためにブロックチェーン技術を用いたい. ブロックチェーンは分散ネットワーク技術であり, データの破損や不整合をハッシュ値によって比較できる. そして, 誤操作や改ざんがあった場合でも, ブロックチェーンを用いることでデータの追跡が行える. +ブロックチェーンとは分散型台帳とも呼ばれ, 複数のトランザクションをまとめたブロックをHashでつなげたものを, システム上のすべてのノードで整合させる技術である. -当研究室では分散フレームワークとしてChristieを開発しており, これはGearsOSにファイルシステムとして組み込む予定がある. そのため, Christieにブロックチェーンを実装し, GearsOSに組み込むことにより, GearsOSのファイルシステムにおいてデータの破損, 不整合を検知できる. また, GearsOS同士による分散ファイルシステムを構成することができ, 非中央的にデータの分散ができるようになる. もし分散システムを構成しない場合でもデータの整合性保持は行え, 上記の目的は達成できる. +分散フレームワークChristieにブロックチェーンを実装することにより, GearsOSのファイルシステムにおけるデータの不整合を解決する. これにより, GearsOS上の分散ファイルシステムを構成することができる. -本研究では, Christieにブロックチェーンを実装し, 実際に学科のPCクラスタ上の分散環境で動かす. - +本研究では, Christieにブロックチェーンを実装し, 実際に学科のPCクラスタ上の分散環境で動くことを確認した. diff -r 3776a23274a7 -r 4aaec2c74af5 final_main/chapter2/chapter2.tex --- a/final_main/chapter2/chapter2.tex Wed Feb 20 18:22:57 2019 +0900 +++ b/final_main/chapter2/chapter2.tex Wed Feb 20 22:36:56 2019 +0900 @@ -62,10 +62,10 @@ \begin{figure}[H] \centering \fbox{ - \includegraphics[scale=1]{} + \includegraphics[scale=0.5]{./images/chain-fork.pdf} } -\caption{} -\label{fig:} +\caption{Fork} +\label{fig:fork} \end{figure} diff -r 3776a23274a7 -r 4aaec2c74af5 final_main/chapter4/chapter4.tex --- a/final_main/chapter4/chapter4.tex Wed Feb 20 18:22:57 2019 +0900 +++ b/final_main/chapter4/chapter4.tex Wed Feb 20 22:36:56 2019 +0900 @@ -11,27 +11,27 @@ ChristieはJavaで書かれた分散フレームワークである. Christieは当研究室で開発している GearsOSに組み込まれる予定がある. そのため, GearsOS を構成する言語 Continuation based C と似た概念がある. Christie に存在する概念として次のようなものがある. \begin{itemize} -\item CodeGear(以下 CG) -\item DataGear(以下 DG) -\item CodeGearManager(以下 CGM) -\item DataGearManager(以下 DGM) +\item CodeGear +\item DataGear +\item CodeGearManager +\item DataGearManager \end{itemize} -CGはクラス, スレッドに相当し, javaの継承を用いて記述する. DGは変数データに相当し, CG内でアノテーションを用いて変数データを取り出せる. CGM はノードであり, DGM, CG, DG を管理する. DGM は DG を管理するものであり, put という操作により変数データ, つまり DG を格納できる. -DGMのput操作を行う際にはLocalとRemoteと2つのどちらかを選び, 変数のkeyとデータを引数に書く. Localであれば, Local のCGMが管理しているDGMに対し, DGを格納していく. Remoteであれば接続したRemote先の CGMのDGMにDGを格納できる. put操作を行ったあとは, 対象のDGMの中にqueueとして保管される. -DGを取り出す際には, CG内で宣言した変数データにアノテーションをつける. DGのアノテーションにはTake, Peek, TakeFrom, PeekFromの4つがある. +CodeGearはクラス, スレッドに相当し, javaの継承を用いて記述する. DataGearは変数データに相当し, CodeGear内でアノテーションを用いて変数データを取り出せる. CodeGearManager はノードであり, DataGearManager, CodeGear, DataGear を管理する. DataGearManager は DataGear を管理するものであり, put という操作により変数データ, つまり DataGear を格納できる. +DataGearManagerのput操作を行う際にはLocalとRemoteと2つのどちらかを選び, 変数のkeyとデータを引数に書く. Localであれば, Local のCodeGearManagerが管理しているDataGearManagerに対し, DataGearを格納していく. Remoteであれば接続したRemote先の CodeGearManagerのDataGearManagerにDataGearを格納できる. put操作を行ったあとは, 対象のDataGearManagerの中にqueueとして保管される. +DataGearを取り出す際には, CodeGear内で宣言した変数データにアノテーションをつける. DataGearのアノテーションにはTake, Peek, TakeFrom, PeekFromの4つがある. \begin{description} -\item[Take] 先頭のDGを読み込み, そのDGを削除する. DGが複数ある場合, この動作を用いる. -\item[Peek] 先頭のDGを読み込むが, DGが削除されない. そのため, 特に操作をしない場合は同じデータを参照し続ける. -\item[TakeFrom(Remote DGM name)] Takeと似ているが, Remote DGM nameを指定することで, その接続先(Remote)のDGMからTake操作を行える. -\item[PeekFrom(Remote DGM name)] Peekと似ているが, Remote DGM nameを指定することで, その接続先(Remote)のDGMからPeek操作を行える. +\item[Take] 先頭のDataGearを読み込み, そのDataGearを削除する. DataGearが複数ある場合, この動作を用いる. +\item[Peek] 先頭のDataGearを読み込むが, DataGearが削除されない. そのため, 特に操作をしない場合は同じデータを参照し続ける. +\item[TakeFrom(Remote DGM name)] Takeと似ているが, Remote DGM nameを指定することで, その接続先(Remote)のDataGearManagerからTake操作を行える. +\item[PeekFrom(Remote DGM name)] Peekと似ているが, Remote DGM nameを指定することで, その接続先(Remote)のDataGearManagerからPeek操作を行える. \end{description} 以上が, Christieの概要である. \section{プログラミングの例} ここでは, Christieで実際にプログラムを記述する例を述べる. -CGMを作り, setup(new CodeGear)を動かすことにより, DGを待ち合わせ, DGが揃った場合にCodeGearが実行される. CGMを作る方法はStartCodeGear(以下SCG)を継承したものからcreateCGM(port) methodを実行することにより, CGMが作られる. SCGのコードの例をソースコード\ref{code:StartHelloWorld}に示す. +CodeGearManagerを作り, setup(new CodeGear)を動かすことにより, DataGearを待ち合わせ, DataGearが揃った場合にCodeGearが実行される. CodeGearManagerを作る方法はStartCodeGearを継承したものからcreateCGM(port) methodを実行することにより, CodeGearManagerが作られる. StartCodeGearのコードの例をソースコード\ref{code:StartHelloWorld}に示す. \lstinputlisting[caption=StartHelloWorld,label=code:StartHelloWorld]{./src/HelloWorld/StartHelloWorld.java} @@ -124,9 +124,9 @@ 不便な点を以下に述べる. \begin{itemize} -\item デバッグが難しい. cgm.setupでCodeGearが実行されるが, keyの待ち合わせで止まり, どこのCGで止まっているかわからないことが多かった. 例えば, putするkeyのスペルミスでコードの待ち合わせが起こり, CGが実行されず, エラーなども表示されずにwaitすることがある. その時に, どこで止まっているか特定するのが難しい. -\item TakeFrom, PeekFromの使い方が難しい. TakeFrom, PeekFromは引数でDGM nameを指定する. しかし, DGMの名前を静的に与えるよりも, 動的に与えたい場合が多かった. -\item Takeの待ち合わせでCGが実行されない. 2つのCGで同じ変数をTakeしようとすると, setupされた時点で変数がロックされる. このとき, 片方のCGはDGがすべて揃っているのに, すべての変数が揃っていないもう片方のCGに同名の変数がロックされ, 実行されない場合がある. +\item デバッグが難しい. cgm.setupでCodeGearが実行されるが, keyの待ち合わせで止まり, どこのCodeGearで止まっているかわからないことが多かった. 例えば, putするkeyのスペルミスでコードの待ち合わせが起こり, CodeGearが実行されず, エラーなども表示されずにwaitすることがある. その時に, どこで止まっているか特定するのが難しい. +\item TakeFrom, PeekFromの使い方が難しい. TakeFrom, PeekFromは引数でDGM nameを指定する. しかし, DataGearManagerの名前を静的に与えるよりも, 動的に与えたい場合が多かった. +\item Takeの待ち合わせでCodeGearが実行されない. 2つのCodeGearで同じ変数をTakeしようとすると, setupされた時点で変数がロックされる. このとき, 片方のCodeGearはDataGearがすべて揃っているのに, すべての変数が揃っていないもう片方のCodeGearに同名の変数がロックされ, 実行されない場合がある. \end{itemize} diff -r 3776a23274a7 -r 4aaec2c74af5 final_main/main.pdf Binary file final_main/main.pdf has changed diff -r 3776a23274a7 -r 4aaec2c74af5 final_main/thanks.tex --- a/final_main/thanks.tex Wed Feb 20 18:22:57 2019 +0900 +++ b/final_main/thanks.tex Wed Feb 20 22:36:56 2019 +0900 @@ -13,9 +13,10 @@ %順番は重要なので気を付けるように.(提出前に周りの人に確認してもらう.) \hspace{1zw} -本研究を行うにあたり, 日頃より多くの助言, ご指導いただきました河野真治准教授に心より感謝申し上げます。 +本研究を行うにあたり日頃より多くの助言, ご指導いただきました河野真治准教授に心より感謝申し上げます. ありがとうございました. -また, 本研究で使用するChrstieを作成いただいた照屋のぞみ先輩, 本実験の測定にあたり, torqueの環境構築に協力してくださった前城健太郎先輩, 並列信頼研究室の全てのメンバーに深く感謝いたします。最後に、物心両面で支えてくれた両親に深く感謝いたします。 +本研究で使用するChrstieを作成いただいた照屋のぞみ先輩, 本実験の測定にあたり, torqueの環境構築に協力してくださった前城健太郎先輩, 最後まで論文作成に協力していただいた並列信頼研究室の全てのメンバーに深く感謝いたします. ありがとうございました. +最後に, 物心両面で支えてくれた両親に深く感謝いたします. %% \begin{flushright} %% % 2019年 3月 赤堀貴一