Mercurial > hg > Papers > 2021 > ikki-sigos
comparison Paper/paper.tex @ 14:3be047dc2366
add images
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 May 2021 21:08:03 +0900 |
parents | 3356c86ff304 |
children | 5b8d3386f939 |
comparison
equal
deleted
inserted
replaced
13:265e4e52d19f | 14:3be047dc2366 |
---|---|
102 また, ChrisiteはTopologyManagerと呼ばれる機能を持っており, 任意の形でノード同士の配線を行いTopologyを形成する機能を持っている. | 102 また, ChrisiteはTopologyManagerと呼ばれる機能を持っており, 任意の形でノード同士の配線を行いTopologyを形成する機能を持っている. |
103 | 103 |
104 | 104 |
105 %2 | 105 %2 |
106 \section{現代のファイルシステムについて} | 106 \section{現代のファイルシステムについて} |
107 従来のオープンソース分散ファイルシステムソフトウェアとしてCephやGlusterFSなどが挙げられる. | |
108 | |
109 CephはRADOSと言うストレージクラスタを持ち, RADOSはモニタとOSD(Object Storage Device)の二つで構成されている. モニタはストレージクラスタの構成情報であるクラスタマップをもとにOSDの構成, クラスタ管理, 情報監視を行っている. OSDはハードディスクやRAIDと1対1で対応しており, オブジェクトの配置管理, 実ストレージ へのデータ読み書き, データの冗長化を行っている. Cephは外部インターフェースであるCephFSによりアクセスすることによりファイルでのアクセスを可能にしているが, 同様にオブジェクト, ブロックでのアクセスにも対応している. また, オブジェクトへのアクセスを提供するライブラリLIBRADOSは複数の言語に対応している. | |
107 | 110 |
108 | 111 |
109 %2.1 | 112 %2.1 |
110 \section{Continuation based C} | 113 \section{Continuation based C} |
111 GearsOSはC言語の下位言語であるContinuation based Cを用いて記述されている. CbCは関数呼び出しでなく, 継続を導入しており, スタック領域を用いずjmp命令でコード間を移動することにより軽量な継続を実現している. CbCではこの継続を用いてfor文などのループの代わりに再起呼び出しを行う. 実際のOSやアプリケーションを記述する際にはGCCまたはLLVM/clangのCbC実装を用いる. | 114 GearsOSはC言語の下位言語であるContinuation based Cを用いて記述されている. CbCは関数呼び出しでなく, 継続を導入しており, スタック領域を用いずjmp命令でコード間を移動することにより軽量な継続を実現している. CbCではこの継続を用いてfor文などのループの代わりに再起呼び出しを行う. 実際のOSやアプリケーションを記述する際にはGCCまたはLLVM/clangのCbC実装を用いる. |
215 \item[TakeFrom(Remote DGM name)] Takeと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからTake操作を行える. | 218 \item[TakeFrom(Remote DGM name)] Takeと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからTake操作を行える. |
216 \item[PeekFrom(Remote DGM name)] Peekと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからPeek操作を行える. | 219 \item[PeekFrom(Remote DGM name)] Peekと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからPeek操作を行える. |
217 \end{description} | 220 \end{description} |
218 | 221 |
219 | 222 |
220 | 223 \subsection{Christieのサンプルコード} |
221 コード\ref{codes: StartHelloWorld}, \ref{codes: StartHelloCG}はChristieで記述したHello Worldのプログラムである. | 224 コード\ref{codes: StartHelloWorld}, \ref{codes: StartHelloCG}はChristieで記述したHello Worldのプログラムである. |
222 ユーザープログラムはStartCodeGearクラスを継承したクラス(コード\ref{codes: StartHelloWorld})から開始する. | 225 ユーザープログラムはStartCodeGearクラスを継承したクラス(コード\ref{codes: StartHelloWorld})から開始する. |
223 CodeGearManagerはポート番号を指定した上でcreatCGMメソッドを呼び出すことにより生成される. 生成されたCodeGearManagerは CGM名.setup にてCGMに処理させたいスレッド, つまりCodeGearを持たせることができる. | 226 CodeGearManagerはポート番号を指定した上でcreatCGMメソッドを呼び出すことにより生成される. 生成されたCodeGearManagerは CGM名.setup にてCGMに処理させたいスレッド, つまりCodeGearを持たせることができる. |
224 | 227 |
225 コード \ref{codes: StartHelloCG}はHeloWorldCodeGearの記述である. | 228 コード \ref{codes: StartHelloCG}はHeloWorldCodeGearの記述である. |
259 cgm.setup(new HelloWorldCodeGear()); | 262 cgm.setup(new HelloWorldCodeGear()); |
260 } | 263 } |
261 } | 264 } |
262 \end{lstlisting} | 265 \end{lstlisting} |
263 | 266 |
267 | |
268 \subsection{TopologyManager} | |
264 ChristieにはTopologyを形成するための機能TopologyManagerが備わっている. | 269 ChristieにはTopologyを形成するための機能TopologyManagerが備わっている. |
265 Topologyに参加するノードに対して名前を与え, 必要とあればノード間の配線を行う. | 270 Topologyに参加するノードに対して名前を与え, 必要とあればノード間の配線を行う. |
266 | 271 |
267 TopologyManagerのTopology形成方法として静的Topologyと動的Topologyがある. | 272 TopologyManagerのTopology形成方法として静的Topologyと動的Topologyがある. |
268 静的Topologyはプログラマが任意の形のTopologyとノードの配線をdotファイルに記述し, TopologyManagerに参照させることで自由な形のTopologyが形成できる. | 273 静的Topologyはプログラマが任意の形のTopologyとノードの配線をdotファイルに記述し, TopologyManagerに参照させることで自由な形のTopologyが形成できる. |
269 現時点では静的TopologyでのTopology形成はdotファイルに記述した参加ノード数に実際に参加するノードの数が達していない場合, 動作しないという制約が存在している. | 274 現時点では静的TopologyでのTopology形成はdotファイルに記述した参加ノード数に実際に参加するノードの数が達していない場合, 動作しないという制約が存在している. |
270 動的Topologyは参加を表明したノードに対し, 自動的にノード同士の配線を行う. 例えばTreeを構成する場合, 参加したノードから順番にrootから近い役割を与える. | 275 動的Topologyは参加を表明したノードに対し, 自動的にノード同士の配線を行う. 例えばTreeを構成する場合, 参加したノードから順番にrootから近い役割を与える. |
271 | 276 |
272 | 277 |
273 \begin{acknowledgment} | 278 \section{Gearを用いたファイルシステムの構成} |
274 A4横型に対するガイドを基に,本稿を作成した. | 279 Chrsitieの構成の一部をGearsOSに実装し, ファイルシステムの構築を行いたい. |
275 クラスファイルの作成においては, | 280 ファイルシステム構築の際に重要となる, Christie の持つ機能として以下が挙げられる. |
276 京都大学の中島 浩氏にさまざまなご教示を頂き, | 281 \begin{description} |
277 さらにBiB\TeX 関連ファイルの利用についても快諾頂いたことを深謝する. | 282 \item[DataGearのKeyのシステム] DataGear(変数データ)をkey名と紐付けする. |
278 また,A4横型に対するガイドを作成された当時の編集委員会の担当者に深謝する. | 283 \item[DataGearに対するAPI] 任意のkeyに対してDataGearを送信, 参照するためのコマンドを指す. Take, Peek, putなどが挙げられる. |
279 \end{acknowledgment} | 284 \item[DataGearManager] DataGearとKeyのペアを保持しておくためのプール. Remote先のDGMとLocalなDGMの二つに区分できる. |
280 | 285 \item[TopologyManager] 参加を表明したノードを任意の形のTopologyに接続する機能. |
286 \end{description} | |
287 | |
288 DGM ->ファイル | |
289 | |
290 | |
291 | |
292 \subsection{Keyシステム} | |
293 GearsOSのDataGearはChristieにおけるkeyを | |
294 | |
295 \section{GearsのFS API} | |
296 | |
297 \section{GearsのFailSystemの実装} | |
298 \section{unixbase} | |
281 | 299 |
282 | 300 |
283 \begin{thebibliography}{10} | 301 \begin{thebibliography}{10} |
284 | 302 |
285 \bibitem{okumura} | 303 \bibitem{okumura} |