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-&gt;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-&gt;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-&gt;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-&gt;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>