view user/matac42/note/2021/10/19.md @ 97:edf8ac727c05

backup 2021-10-20
author autobackup
date Wed, 20 Oct 2021 00:10:04 +0900
parents
children
line wrap: on
line source

# 研究目的

アプリケーションの信頼性を保証するために、アプリケーションが動作するOSの信頼性を高める必要がある。

本研究室では、信頼性に重きを置いたGearsOSを開発している。

GearsOSはノーマルレベル、メタレベルの処理を切り分けることができるCbC(Continuation Based C)で記述されている。

信頼性とは

- どのユーザーがどのようなファイル操作をしたかわかること
- logが残ること
- item 操作の辻褄があっていること

を指す。

また、GearsOSには現在未実装の機能があり、その一つにファイルシステムが挙げられる。信頼性を確保するため、ファイルシステムは

- ファイルシステム全体のトランザクション化
- ファイルシステム全体のバックアップ\&ロギング

を取り入れたDataGearManagerとして実装したい。

本卒業研究では、GearsOSへファイルシステムの実装を目指す。

# Gears

rbtreeを使うコードを書いていた。

tree->putがcheckAndSetAtomicReferenceを向いてしまっている

```sh
(lldb) p tree->put
(Code) $7 = C_checkAndSetAtomicReference
```

`tree->put = Gearef(context, Tree)->put`とかでは特に変わらなかった...

```c
__code putDataTest(struct Context *context,struct Tree* tree) {
    printf("put\n");
    Node* node = &ALLOCATE(context, Node)->Node;
    node->key = 0;
    node->value = (union Data*) createSynchronizedQueue(context);
    Gearef(context, Tree)->tree = (union Data*) tree;
    Gearef(context, Tree)->node = node;
    Gearef(context, Tree)->next = C_printResult;
    tree->put = Gearef(context, Tree)->put;
    goto meta(context, tree->put);
}
```