diff slide/thesis.pdf.html @ 24:90e6ac8805e2

tweak
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Thu, 10 Feb 2022 10:03:41 +0900
parents 9a6609a2f987
children 2bba3749e1f1
line wrap: on
line diff
--- a/slide/thesis.pdf.html	Thu Feb 10 01:08:27 2022 +0900
+++ b/slide/thesis.pdf.html	Thu Feb 10 10:03:41 2022 +0900
@@ -87,8 +87,8 @@
   </li>
   <li>GearsOSには将来的にアプリケーションが担う重要な機能をOSに取り込みたい
     <ul>
+      <li>ファイルの型認識</li>
       <li>バックアップ</li>
-      <li>ファイルの型認識</li>
     </ul>
   </li>
 </ul>
@@ -376,24 +376,6 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="複数のストリームから構成されるファイル">複数のストリームから構成されるファイル</h2>
-<ul>
-  <li>入力されるデータに応じた個別のstreamを備えたい
-    <ul>
-      <li>streamと入力されたデータの処理を直接結びつけたい</li>
-    </ul>
-  </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のファイルは大域的に解放された資源としたい
@@ -434,7 +416,7 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="datagearmanager-1">DataGearManager</h2>
+<h2 id="datagearmanagerによる通信構成">DataGearManagerによる通信構成</h2>
 <ul>
   <li>任意の相手のRemoteDGMを作成することでTopologyが形成される</li>
 </ul>
@@ -450,11 +432,10 @@
   <!-- _S9SLIDE_ -->
 <h2 id="gearsos上のsocket通信">GearsOS上のsocket通信</h2>
 <ul>
-  <li>GearsOS上のsocket通信を検証したい</li>
+  <li>GearsOS上のsocket通信を実装したい</li>
   <li>Queueをsocketに接続し、簡易的なAPIの記述をした
     <ul>
-      <li>Localなqueueに対してRemoteのqueueがソケット接続を行う</li>
-      <li>socketはQueueの生成時に接続される
+      <li>Localなqueueに対してRemoteのqueueがソケット接続を行う
         <pre><code>typedef struct CQueue&lt;&gt;{
 union Data* cQueue;
 union Data* data;
@@ -480,11 +461,10 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="remotequeue側からの送信">RemoteQueue側からの送信</h2>
+<h2 id="senddata-codegear">sendData CodeGear</h2>
 <ul>
-  <li>QueueのPutAPIの後に遷移される</li>
-  <li>putしたデータをsocketを通じて送信する</li>
-  <li>将来的にsendではなくwriteを用いる
+  <li>proxy側はQueueにputされたDataをsocketで送信する</li>
+  <li>送信されたDataはLocal側でgetDataAPIで取り出される
     <pre><code>__code sendDataRemoteDGMQueue(struct RemoteDGMQueue* cQueue, union Data* data, __code next(...), __code whenError(...)){
   char recv_buf;
   int send_size, recv_size;
@@ -504,13 +484,10 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="localqueue側の受信">LocalQueue側の受信</h2>
+<h2 id="getdata-codegear">getData CodeGear</h2>
 <ul>
-  <li>APIとしてsocketのデータを取り出す</li>
-  <li>取り出されたデータはQueueにputされる</li>
-  <li>union Data型でデータを受け取りmain側で処理を行う</li>
-  <li>取り出されたデータはmain側で処理される</li>
-  <li>将来的にrecvでなくreadを用いる
+  <li>ファイル本体(Local側)はsocketからDataを取り出す</li>
+  <li>取り出されたデータはQueueにputされる
     <pre><code>__code getDataLocalDGMQueue(struct LocalDGMQueue* cQueue, __code next(...), __code whenError(...)){
   int recv_size, send_size;
   char send_buf;
@@ -532,16 +509,45 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="ファイル単位のsocket通信">ファイル単位のsocket通信</h2>
+<h2 id="複数のストリームから構成されるファイル">複数のストリームから構成されるファイル</h2>
 <ul>
-  <li>実際のファイルは複数のQueueを持つ一つのリストである</li>
-  <li>Queue単体でなく、リスト(ファイル)単位でsocketを持つ必要がある</li>
-  <li>リストは赤黒木となる</li>
-  <li>DataGearをputするkeyを指定して書き込みを行う
+  <li>入力されるデータに応じた個別のstreamを備えたい
     <ul>
-      <li>Localなファイルの同一のQueueに対して書き込みが行われる</li>
+      <li>streamと入力されたデータの処理を直接結びつけたい</li>
     </ul>
   </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>Queueのリストとして赤黒木を用いる
+    <ul>
+      <li>key/value storeなアクセスを行うことができる</li>
+      <li>GearsOS上にすでに実装が行われている</li>
+    </ul>
+  </li>
+  <li>DataのTake/Put時には必ずkey nameの指定が必要となる</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="リスト単位の通信の構成">リスト単位の通信の構成</h2>
+<ul>
+  <li>指定したkeyのQueueが探索で返される</li>
+  <li>proxyの場合、どのkeyに対してどんなDataを書き込んだかを通信で送信する</li>
 </ul>
 <div style="text-align: center;">
    <img src="images/socketCom.pdf" alt="socketを通じたレコード送信" width="800" />
@@ -553,31 +559,7 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="main部分によるapi">main部分によるAPI</h2>
-<ul>
-  <li>readの場合(リモート側に読み込みたいファイルが存在する)
-    <ul>
-      <li>(手順1)ローカル側は空のファイルを作成し、socketを持たせる</li>
-      <li>(手順2)リモート側は, ローカル側の持つ空ファイルのproxyを作成する</li>
-      <li>(手順3)リモート側はproxyに対して、目的のファイルのデータをputする</li>
-    </ul>
-  </li>
-  <li>writeの場合(リモート側に書き込みたいファイルが存在する)
-    <ul>
-      <li>(手順1)リモート側は対象ファイルにsocketを持たせる</li>
-      <li>(手順2)ローカル側は対象のファイルに対応するproxyを作成する</li>
-      <li>(手順3)ローカル側はproxyのkeyに対してデータをputする</li>
-    </ul>
-  </li>
-</ul>
-
-
-
-</div>
-
-<div class='slide'>
-  <!-- _S9SLIDE_ -->
-<h2 id="wordcountの例題">wordCountの例題</h2>
+<h2 id="wordcount例題による通信apiの構築">wordCount例題による通信APIの構築</h2>
 <ul>
   <li>DataGearManagerによるファイル通信APIはWordCount例題を目指して設計した
     <ul>
@@ -596,12 +578,38 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="christieapiによるwordcount">ChristieAPIによるWordCount</h2>
+<h2 id="gearsfile-apiによるwordcount13">GearsFile APIによるWordCount(1/3)</h2>
 <ul>
   <li>FileOpen側とWordCount側でノードが別れる</li>
   <li>(手順1)FileOpen側はRDGMに文字列をputする</li>
   <li>(手順2)WordCount側は処理の後、ackを返信する</li>
+</ul>
+<div style="text-align: center;">
+   <img src="images/wordCountDGM.pdf" alt="ChristieAPIによるWordCount" width="800" />
+</div>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="gearsfile-apiによるwordcount23">GearsFile APIによるWordCount(2/3)</h2>
+<ul>
   <li>(手順3)1,2をループし、FileOpen側はEoFならフラグを送信する</li>
+</ul>
+<div style="text-align: center;">
+   <img src="images/wordCountDGM.pdf" alt="ChristieAPIによるWordCount" width="800" />
+</div>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="gearsfile-apiによるwordcount33">GearsFile APIによるWordCount(3/3)</h2>
+<ul>
   <li>(手順4)EoFを受信したWordCountは結果を返信し、双方の処理を終了させる</li>
 </ul>
 <div style="text-align: center;">
@@ -614,16 +622,33 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="これから実装が必要となる機能">これから実装が必要となる機能</h2>
+<h2 id="現在のgearsfile-apiの開発状況">現在のGearsFile APIの開発状況</h2>
 <ul>
-  <li>keyアクセスに対応したファイル通信
+  <li>実装ずみ
     <ul>
-      <li>単一のQueueによる通信は確認が行えた</li>
+      <li>keyアクセスに対応したファイル通信
+        <ul>
+          <li>単一のQueueによる通信の記述</li>
+        </ul>
+      </li>
+      <li>リストとなるTree
+        <ul>
+          <li>赤黒木</li>
+        </ul>
+      </li>
+      <li>atomicな操作が行えるQueue
+        <ul>
+          <li>複数からのアクセス時にデータ整合を保つ</li>
+        </ul>
+      </li>
     </ul>
   </li>
-  <li>ファイル保存</li>
-  <li>バックアップ機能</li>
-  <li>並列処理</li>
+  <li>実装中
+    <ul>
+      <li>keyアクセスが行えるQueueのリスト</li>
+      <li>リスト単位での通信の記述</li>
+    </ul>
+  </li>
 </ul>
 
 
@@ -632,22 +657,7 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="gearsosのディレクトリとバックアップ">GearsOSのディレクトリとバックアップ</h2>
-<ul>
-  <li>又吉雄斗による並行研究にて、inodeによるファイルシステムが開発されている</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="生成形の問題点">生成形の問題点</h2>
+<h2 id="gearsosの生成形の問題点">GearsOSの生成形の問題点</h2>
 <ul>
   <li>GearsOSのメタレベルの処理の記述はトランスコンパイラにより行われる</li>
   <li>場合によりメタレベルの記述を行わなくてはならない
@@ -695,12 +705,12 @@
 <h2 id="並列処理構文par-gotoが持つ問題">並列処理構文par gotoが持つ問題</h2>
 <ul>
   <li>par gotoとはGearsOSに実装された並列処理構文である</li>
+  <li>StreamQueueに対するput/takeの並列処理の実装をpar goto構文で試みた</li>
   <li>par gotoはトランスコンパイラへの依存性が高い
     <ul>
       <li>stubCodeGearのように任意な書き換えが行えない</li>
     </ul>
   </li>
-  <li>StreamQueueに対するput/takeの並列処理の実装をpar goto構文で試みた</li>
   <li>特定のCodeGearの宣言のみでしか正常な処理が生成されない
     <ul>
       <li>Interfaceに記述されたAPICodeGearではバグが生じる</li>
@@ -720,13 +730,25 @@
 <ul>
   <li>GearsOSのファイルの設計を行った
     <ul>
-      <li>ファイルの構造の設計</li>
-      <li>socketによる通信部分の実装</li>
-      <li>単純化した通信APIの記述</li>
+      <li>ファイルの構造の設計
+        <ul>
+          <li>DataGear単位での操作が行える</li>
+        </ul>
+      </li>
+      <li>socketによる通信部分の実装
+        <ul>
+          <li>GearsOS上でのソケット通信の記述</li>
+        </ul>
+      </li>
+      <li>APIの段階的な設計記述
+        <ul>
+          <li>Proxyによるファイル通信</li>
+        </ul>
+      </li>
       <li>GearsOSの調査</li>
     </ul>
   </li>
-  <li>ファイルproxyによる通信実現を行いたい</li>
+  <li>Streamのリスト単位での通信の完成</li>
 </ul>
 
 
@@ -735,7 +757,7 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="これからの課題">これからの課題</h2>
+<h2 id="将来的な課題">将来的な課題</h2>
 <ul>
   <li>TopoplogyManagerの設計
     <ul>
@@ -770,6 +792,21 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
+<h2 id="gearsosのディレクトリとバックアップ">GearsOSのディレクトリとバックアップ</h2>
+<ul>
+  <li>又吉雄斗による並行研究にて、inodeによるファイルシステムが開発されている</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="ファイルqueueに対するapi--peek-">ファイルQueueに対するAPI -Peek-</h2>
 <ul>
   <li>Peek