Mercurial > hg > Document > Growi
view user/matac42/notes/__template.md @ 134:e965a4b3e697 default tip
backup 2023-11-14
author | autobackup |
---|---|
date | Tue, 14 Nov 2023 00:10:04 +0900 |
parents | 8dfc12dd7740 |
children |
line wrap: on
line source
# 研究目的 ## システム全体の信頼性を上げたい - システムの構成要素全体の信頼性を上げる必要がある - アプリケーション - OS - ファイルシステム - DB - メモリとSSD - 分散ノード - ネットワーク ## ファイルシステムとDBの信頼性を考える - ファイルシステムとは何か - DBとは何か - これらは何が違うのか - 検証・モデル検査をできる形に記述したい ## ファイルシステム - 可変長の文字列を格納するファイル - そのファイルにアクセスするための名前管理 - 同時アクセスした時に名前管理の一貫性を保証する - ファイルに同時に書き込まれた時の一貫性の保証はしない - ファイルの書き込みを制御するロック機構がある ## DB - 入力の属性名と型の組みを複数持つレコード - 特定の属性をキーとしたテーブル - レコードのinsert, delete, updateの直列化可能性を保証する機能がある ## ファイルシステムとDBの違い - 格納するものの形式 - それにアクセスする方法 - 直列化可能性を保証する手法 - これらが違うだけで本質的な違いはない ## ファイルシステムとDBのもつ追加機能 - 電源切った時にデータが残る(持続性persistency) - 書き込めたかどうかをtrue, falseで判定するatomic write - ひとつのノードが失われた時にデータを保護する多重性 - 適当なチェックポイントからDB、ファイルシステムを回復する機能 - 複数のコピーを調停するコミット機構 ## Gears OSを使って実現する - CodeGear - 処理の単位 - DataGear - データの単位 - metaGear - データの整合性 - 資源管理 非破壊的なRedBlackTreeでほとんどのものが記述できるのではないか ## 信頼性を上げる方法 - 証明 - GearsAgdaを使ってinvariantを証明する - テスト - モデル検査 - システムの構成要素全体にこれらの方法を適用したい - 既存システムの信頼性における問題点の解決 ## GearsOS上のファイルシステムやDB - RedBlackTreeでどちらも一応実現できてはいるが、できていないことも多い - 複数のreplicationを持てていない - GCがない RedBlackTreeのコピーをやると良いのではないか ## RedBlackTreeのコピー - 単なるコピーだが実際は複雑 - Treeをコピーしている間に変更されたら? - 頭から最後までコピーすることはできない - コピー前と後で同一であることを確認する必要がある ## コピーのアルゴリズム - insertはRedBlackTreeを辿って必要なノードまでTreeをコピーしながら下っていく - 見つかったら変更したTreeを返す - そのためにはStackを使ってTreeを辿っていく - まず左側を深さ優先で辿る - アロケートしたノードは別のContext上に作る必要がある - なぜならばGCしたいから - 全部のTreeをコピーしたら古いContextを消すことでGCになる - これはメモリ管理をモナドで表していることになる - リーフまできたらStackを巻き戻すCGを呼ぶ - この時左側はできているので右側を呼び出す - Stackのノードの情報だけでできるのか - Stackが二つ必要かもしれない - 全体と途中まで作りかけのTreeのStack ## 進捗など