GearsOSの分散ファイルシステムの設計

Takahiro Ikki, Shinji Kono 琉球大学理工学研究科情報工学専攻

GearsOSのファイルシステムの設計と実装

GearsOSの基本単位

CodeGearとDataGear

 cgdgの関係図

GearsOSのInterface

Interfaceの呼び出し

Interfaceの実装

CodeGearとDataGearにはメタレベルなものが存在する

 ノーマルレベルとメタレベルの視点からのGearの関係

stubCodeGearとgoto meta

 ノーマルレベルとメタレベルの視点からのGearの関係

GearsOSのファイルシステムの設計

Take/Put/Peek

 Queueの構造

GearsFSのトランザクション

QueueによるGearsOSのファイル

PutのImplementation

TakeのImplementation

DataGearManager

DataGearManagerによる通信構成

 RemoteDGMの関係図

socket通信によるRemoteDGMの実装

受信側の実装

複数のストリームから構成されるファイル

socketを使ったRemoteDGM

 socketを通じたレコード送信

wordCountの例題

 リモートDGMによるWordCount

GearsFile APIによるWordCount(1/3)

 ChristieAPIによるWordCount

GearsFile APIによるWordCount(2/3)

 ChristieAPIによるWordCount

GearsFile APIによるWordCount(3/3)

 ChristieAPIによるWordCount

現在のGearsFile APIの開発状況

結論

将来的な課題

GearsOSの生成形の問題点

__code Task2(TQueue* localDGMQueue){
    goto localDGMQueue->take(Task3);
}

__code Task3(TQueue* localDGMQueue, FileString* string){
    printf("take[%s] [num:%d]\n", string->str, string->size);
    goto getData();
}

//プログラマが実装したいstub
__code Task3_stub(struct Context* context){
    TQueue* localDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue;
    FileString* string = Gearef(context, TQueue)->data;
    goto Task3(context, localDGMQueue, string);
}

//自動生成されたErrorなstub
__code Task3_stub(struct Context* context) {
	TQueue* localDGMQueue = Gearef(context, TQueue);
	FileString* string = Gearef(context, FileString);
	goto Task3(context, localDGMQueue, string);
}

並列処理構文par gotoが持つ問題

以下返答用

Take/Put/Peek

__code next(int ret, …)の意味

CodeGearと再帰呼び出し

DataGearの型

RemoteDGMとacknowledge