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

Takahiro Ikki, Shinji Kono 琉球大学

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

GearsOSのGear概念(1/2)

GearsOSのGear概念(2/2)

 cgdgの関係図

GearsOSのInterface

メタレベルのGear(1/3)

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

メタレベルのGear(2/3)

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

メタレベルのGear(3/3)

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

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

GearsOSのファイルデータ操作(1/3)

 Queueの構造

GearsOSのファイルデータ操作(2/3)

 Queueの構造

GearsOSのファイルデータ操作(3/3)

 Queueの構造

GearsFSのトランザクション

QueueによるGearsOSのファイル

QueueAPI -Put-

QueueAPI -Take-

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

ファイル通信の構成

DataGearManager

DataGearManager

 RemoteDGMの関係図

GearsOS上のsocket通信

RemoteQueue側からの送信

LocalQueue側の受信

ファイル単位のsocket通信

 socketを通じたレコード送信

main部分によるAPI

wordCountの例題

 リモートDGMによるWordCount

ChristieAPIによるWordCount

 ChristieAPIによるWordCount

これから実装が必要となる機能

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が持つ問題

結論

これからの課題

この先保留

ファイルQueueに対するAPI -Peek-