Mercurial > hg > Papers > 2022 > ikki-master
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<>{ 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