Mercurial > hg > Papers > 2022 > ikki-master
diff slide/thesis.pdf.html @ 18:b0fde43e331b
tweak
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 07 Feb 2022 03:39:50 +0900 |
parents | f4a719e93ded |
children | 9e6fd2255ee1 |
line wrap: on
line diff
--- a/slide/thesis.pdf.html Sun Feb 06 06:13:32 2022 +0900 +++ b/slide/thesis.pdf.html Mon Feb 07 03:39:50 2022 +0900 @@ -536,6 +536,17 @@ <div class='slide'> <!-- _S9SLIDE_ --> +<h2 id="遠隔からのファイル変更">遠隔からのファイル変更</h2> +<div style="text-align: center;"> + <img src="images/socketCom.pdf" alt="socketを通じたレコード送信" width="800" /> + </div> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> <h2 id="wordcount例題">WordCount例題</h2> <ul> <li>ChristieAPIの構成をWordCount例題を通して行った</li> @@ -575,24 +586,16 @@ <!-- _S9SLIDE_ --> <h2 id="localdgmのsocketの受信データ取り出し">LocalDGMのsocketの受信データ取り出し</h2> <ul> - <li>LocalDGMに相当するファイルは接続先socketから送信されたデータを取り出す必要がある</li> + <li>socketはImplementに記述される</li> + <li>LocalDGMに相当するファイルは、接続先socketから送信されたデータを取り出す</li> <li>取り出されたデータはInputStreamQueueに対してputされる <pre><code>__code getDataLocalDGMQueue(struct LocalDGMQueue* cQueue, __code next(...), __code whenEOF(...), __code whenError(...)){ - int recv_size, send_size; - char send_buf; - union Data* recv_data; recv_size = recv(cQueue->socket, recv_data, sizeof(union Data), 0); if (recv_size == -1) { printf("recv error\n"); goto whenError(...); } - if (recv_size == 0) { - printf("connection ended\n"); - goto whenError(...); - } - - FileString* fileString = NEW(FileString); fileString = recv_data; if (fileString->EoF) == 1) { @@ -632,9 +635,6 @@ <ul> <li>putCodeGearの直後に呼び出される <pre><code>__code sendDataRemoteDGMQueue(struct RemoteDGMQueue* cQueue, union Data* data, __code next(...), __code whenError(...)){ -char recv_buf; -int send_size, recv_size; - send_size = send(cQueue->socket, data, sizeof(union Data), 0); if (send_size == -1) { printf("send error\n"); @@ -645,28 +645,171 @@ if (recv_size == -1) { printf("recv error\n"); goto whenError(); -} else if (recv_size == 0) { - printf("connection ended\n"); - goto whenError(); -} else if(recv_buf == 0) { - printf("Finish connection\n"); - close(cQueue->socket); - goto whenError(); } goto next(...); } </code></pre> - + </li> + </ul> + </li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="gearsfsのディレクトリ">GearsFSのディレクトリ</h2> +<ul> + <li>ディレクトリを赤黒木で実装する</li> + <li>赤黒木のノードとしてファイル/ディレクトリが保存される</li> + <li>階層構造はファイル名がkey, データとしてinodeが保存される</li> +</ul> +<div style="text-align: center;"> + <img src="images/GearsDirectory.pdf" alt="GearsOSのディレクトリ" width="500" /> +</div> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="gearsfsのバックアップ12">GearsFSのバックアップ(1/2)</h2> +<ul> + <li>ディレクトリツリーを非破壊的な編集で更新する</li> + <li>木構造の編集前の構造が履歴となる</li> + <li>保存容量の圧迫は対応が必要となる</li> +</ul> +<div style="text-align: center;"> + <img src="images/nonDestroyTreeEdit.pdf" alt="非破壊的なツリー編集" width="800" /> +</div> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="gearsfsのバックアップ22">GearsFSのバックアップ(2/2)</h2> +<ul> + <li>ファイルレコードを変更差分として構成する + <ul> + <li>GithubやMercurialのようなバージョン管理が行える</li> + <li>特定の日時までのレコードを読めばよい</li> + </ul> + </li> + <li>定期的なファイルの再構築が必要</li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="gearsfsの並列処理">GearsFSの並列処理</h2> +<ul> + <li>par gotoを用いる案 + <ul> + <li>処理速度が遅い</li> + <li>現状バグが存在している</li> + <li>トランスコンパイラへの依存度が高い</li> + </ul> + </li> + <li>新しく並列処理を開発する</li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="gearsosの問題点">GearsOSの問題点</h2> +<ul> + <li>記述難易度の高さ</li> + <li>Contextの操作 + <ul> + <li>トランスコンパイラでは対応できない継承が存在する</li> + <li>場合によりメタレベルの記述を行わなくてはならない</li> + </ul> + </li> + <li>軽量継続 + <ul> + <li>ループ記述が複雑</li> + <li>goto遷移以降の記述は実行されない</li> + </ul> + </li> + <li>par gotoの実用が難しい</li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="課題">課題</h2> +<ul> + <li>TopologyManagerの実装 + <ul> + <li>ファイルの配線を行う</li> + <li>DNSの役割</li> + <li>クラスターの管理</li> + </ul> + </li> + <li>並列処理方法の決定 + <ul> + <li>par gotoの改良</li> + <li>新たな案を実装する</li> + </ul> + </li> +</ul> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="まとめ">まとめ</h2> +<ul> + <li>GearsFileSystemの設計 + <ul> + <li>ファイルの構成方法 + <ul> + <li>Queueのリストである</li> + </ul> + </li> + <li>ファイル操作API + <ul> + <li>レコード単位で操作される</li> + </ul> + </li> + <li>ファイル送受信の実装 + <ul> + <li>ファイルploxy</li> + </ul> + </li> + <li>ディレクトリの仕組み + <ul> + <li>赤黒木を用いる</li> + <li>非破壊的な編集によるログ</li> + </ul> + </li> + </ul> + </li> +</ul> + + </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="この先保留ページ">この先保留ページ</h2> - </li> - </ul> - </li> -</ul>