Mercurial > hg > Document > Growi
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); } ```