Mercurial > hg > Papers > 2022 > ikki-master
diff slide/thesis.pdf.html @ 23:9a6609a2f987
twaek
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 10 Feb 2022 01:08:27 +0900 |
parents | bd9284f9151d |
children | 90e6ac8805e2 |
line wrap: on
line diff
--- a/slide/thesis.pdf.html Wed Feb 09 23:58:05 2022 +0900 +++ b/slide/thesis.pdf.html Thu Feb 10 01:08:27 2022 +0900 @@ -306,8 +306,12 @@ <ul> <li>GearsOSのファイルはファイルレコードを保持するQueueとなる</li> <li>デバイスへの保存はQueueを保存すればよい</li> - <li>データの更新はQueueにレコードを書き込む</li> - <li>データの読み込みはQueueからデータを全て取り出す</li> + <li>ファイルはQueueなのでファイルのAPIは大きく二つとなる + <ul> + <li>Put</li> + <li>Take</li> + </ul> + </li> </ul> @@ -321,7 +325,6 @@ <li>Put <ul> <li>Queueに対してファイルレコードを入力する</li> - <li>ファイルの更新の際に呼び出す</li> <li>ファイルの変更をレコードとして書き込む <pre><code>__code putSingleLinkedQueue(struct SingleLinkedQueue* queue, union Data* data, __code next(...)) { Element* element = new Element(); @@ -348,7 +351,6 @@ <li>Take <ul> <li>Queueからファイルレコードを取り出す</li> - <li>ファイルの中身の読み込みの際に用いる</li> <li>Queue内のレコードをループで全て取り出せば良い <pre><code>__code takeSingleLinkedQueue(struct SingleLinkedQueue* queue, __code next(union Data* data, ...)) { printf("take\n"); @@ -374,18 +376,33 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="gearsosのファイル">GearsOSのファイル</h2> +<h2 id="複数のストリームから構成されるファイル">複数のストリームから構成されるファイル</h2> <ul> - <li>単独のQueueのみではファイル操作に耐えることができない</li> - <li>GearsOSのファイルは複数のQueueをkey nameをつけて保持するリストとなる + <li>入力されるデータに応じた個別のstreamを備えたい <ul> - <li>主体となるデータレコードを保持するQueue</li> - <li>Input/OutputStreamとなるQueue</li> - <li>通信処理を行う際に任意に利用したいデータを受けるQueue</li> + <li>streamと入力されたデータの処理を直接結びつけたい</li> </ul> </li> - <li>ChristieのDataGearManagerの仕組みを用いる</li> - <li>ファイルであると同時に通信そのものでもある</li> + <li>最低でもInput/OutputStreamの二つが必要となる</li> + <li>ファイルは複数のStreamを持ったリストとして実装する</li> + <li>Streamはkey nameを持ち、keyでアクセスを行う</li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="ファイル通信の構成">ファイル通信の構成</h2> +<ul> + <li>GearsOSのファイルは大域的に解放された資源としたい + <ul> + <li>ファイル自信を通信そのものとして実装する</li> + <li>Streamに対しsocket接続により遠隔にアクセスする</li> + </ul> + </li> + <li>分散フレームワークChristieのDataGearManagerの仕組みを利用する</li> </ul> @@ -396,6 +413,7 @@ <!-- _S9SLIDE_ --> <h2 id="datagearmanager">DataGearManager</h2> <ul> + <li>分散フレームワークChristieの仕組みの一つ</li> <li>keyとvalueの組み合わせとなるDataGearを保持するデータプール</li> <li>ChristieではCodeGearManagerと呼ばれるノードがCodeGearとDataGearを管理する</li> <li>LocalDGMはノード本体に対応するデータプールである @@ -408,7 +426,6 @@ <li>RemoteDGMに対してDataGearを書き込むことで、対応するノードのLocalDGMにデータが書き込まれる</li> </ul> </li> - <li>GearsFSも同様にファイルproxyを通して通信を行う</li> </ul> @@ -418,6 +435,9 @@ <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="datagearmanager-1">DataGearManager</h2> +<ul> + <li>任意の相手のRemoteDGMを作成することでTopologyが形成される</li> +</ul> <div style="text-align: center;"> <img src="images/Remote_DataGearManager.pdf" alt="RemoteDGMの関係図" width="800" /> </div> @@ -428,18 +448,29 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="socket付きqueueの実装">socket付きQueueの実装</h2> +<h2 id="gearsos上のsocket通信">GearsOS上のsocket通信</h2> <ul> - <li>socketに接続されたQueueにより通信APIの記述を行った</li> - <li>GearsOS上でのsocket操作の記述</li> - <li>Localなqueueに対してRemoteのqueueがソケット接続を行う - <pre><code>TQueue* createRemoteDGMQueue(struct Context* context, char* sNum) { - struct TQueue* tQueue = new TQueue(); - struct RemoteDGMQueue* RemoteDGMQueue = new RemoteDGMQueue(); - RemoteDGMQueue->atomic = createAtomicReference(context); - RemoteDGMQueue->socket = createSocketRemoteDGMQueue(sNum); -} + <li>GearsOS上のsocket通信を検証したい</li> + <li>Queueをsocketに接続し、簡易的なAPIの記述をした + <ul> + <li>Localなqueueに対してRemoteのqueueがソケット接続を行う</li> + <li>socketはQueueの生成時に接続される + <pre><code>typedef struct CQueue<>{ +union Data* cQueue; +union Data* data; + +__code whenEmpty(...); +__code whenEOF(...); +__code clear(Impl* cQueue, __code next(...)); +__code put(Impl* cQueue, union Data* data, __code next(...)); +__code take(Impl* cQueue, __code next(union Data* data, ...)); +__code isEmpty(Impl* cQueue, __code next(...), __code whenEmpty(...)); +__code getData(Impl* cQueue, __code next(...), __code whenEOF(...)); +__code next(...); +} CQueue; </code></pre> + </li> + </ul> </li> </ul>