GearsOSにおける
inodeを用いたファイルシステムの構築

Matayoshi Yuto, Shinji Kono 琉球大学

研究目的

inodeを用いたgearsDirectoryの実装

信頼性の保証を目的としたOS

Continuation based C

GearsOS(CbC)

GearsOS(CbC)

CodeGearとmetaCodeGearの関係

GearsOS(CbC)

Context

GearsOS(CbC)

CodeGear遷移の流れ

Unixのinode

inode

GearsFileSystemにおけるdirectoryの構成

Unix Like な interface

mkdir

__code mkdir(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) {
    struct FTree* newDirectory = createFileSystemTree(context, gearsDirectory->currentDirectory);
    Node* inode = new Node();
    inode->key = gearsDirectory->INodeNumber;
    inode->value = newDirectory;
    struct FTree* cDirectory = new FTree();
    cDirectory = gearsDirectory->iNodeTree;
    goto cDirectory->put(inode, mkdir2);
}

__code mkdir2(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) {
    Node* dir = new Node();
    dir->key = name->value;
    Integer* iNum = new Integer();
    iNum->value = gearsDirectory->INodeNumber;
    dir->value = iNum;
    gearsDirectory->INodeNumber = gearsDirectory->INodeNumber + 1;
    struct FTree* cDirectory = new FTree();
    cDirectory = gearsDirectory->currentDirectory;
    goto cDirectory->put(dir, next(...));
}

Unix Like な interface

mkdir

GearsDirectoryにおける非破壊編集ツリー

GearsOSにおけるメモリマネージメントシステム

GearsOSにおけるメモリマネージメントシステム

GearsOSにおけるメモリマネージメントシステム

GearsFileSystemの今後

gearsDirectory path

gearsDirectory filename

gearsDirectoryまとめ