# HG changeset patch # User matac42 # Date 1683811410 -32400 # Node ID f3fea3b5eeb2b06cd6a07f70175f6968bd20ea99 # Parent ceebb580ba71f7f23cf114134603caa273f4263f init marp slide diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/Makefile Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,3 @@ +build: + marp template.md --theme cr.css + open template.html \ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/README.md Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,15 @@ +## 使用方法 + +基本的には`Marp for VSCode` Extensionを使用する + +Extensionをインストール後、次のVSCodeの設定を書き込む。 +テーマのパスは環境によって違うかもしれないので確認する。 +おそらく、VSCodeで開いているディレクトリからの相対パスを入れれば良い。 +```json + "markdown.marp.exportType": "html", + "markdown.marp.themes": ["template/cr.css"] +``` + +## CLIでの使用方法 + +Makefileを作成してある \ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/cr.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/cr.css Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,30 @@ +/* @theme cr */ + +@import 'default'; + +section { + background-image: url('./logo.svg'); + background-repeat: no-repeat; + background-position: right 2rem bottom 0.6rem; + background-size: 12%; +} + +h1 { + color: #828db2; + font-size: 2.1rem; +} + +h2 { + background-color: #828db2; + color: #fff; + padding: 0.3rem; + font-size: 2.1rem; +} + +p { + font-size: 1.3rem; +} + +ul, ol { + font-size: 1.2rem; +} diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/.DS_Store Binary file marp-slide/figs/.DS_Store has changed diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/cd.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/cd.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
get
key: name->value (filename)
get...
get
key: gearsDirectory->INodeNumber
get...
inode tree
inode tree
index tree
index tree
key: name->value (filename)
value: gearsDirectory->INodeNumber
key: name->value (filename)...
key: gearsDirectory->INodeNumber
value: newDirectory
key: gearsDirectory->INodeNumber...
gearsDirectory->currentDirectory = newDirectory
gearsDirectory->currentDirectory = newDirecto...
if exist
if exist
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/cgdg.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/cgdg.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
CodeGear
CodeGear
DataGear
DataGear
CodeGear
CodeGear
DataGear
DataGear
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/context.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/context.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
DataGear
DataGear
DataGear
DataGear
Context
Context
CodeGear
CodeGear
1.Output
1.Output
stubCodeGear
stubCodeGear
2.InputDataGearとして参照
2.InputDataGearとして参照
2.OutputDataGearのpointerを取得
2.OutputDataGearのpo...
CodeGear
CodeGear
4.Output
4.Output
3.goto
3.goto
DataGear
DataGear
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/copy_alloc.drawio --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/copy_alloc.drawio Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,1 @@ +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 \ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/copying-gc.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/copying-gc.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
Memory
Memory
Memory
Memory
Linked Data
Linked Data
Unlinked Data
Unlinked Data
Linked Data
Linked Data
Unlinked Data
Unlinked Data
Copy
Copy
GC
GC
Linked Data
Linked Data
Unlinked Data
Unlinked Data
Linked Data
Linked Data
Backup
Backup
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/data-access.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/data-access.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
Memory
Memory
Disk
Disk
Data
Data
Data
Data
Offset Conversion
Offset Conver...
Data Access
Data Access
Disk? Memory?
Disk? Memor...
to Memory
to Memory
to Disk
to Disk
Meta Level
Meta Level
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/disk-memory.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/disk-memory.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
Memory
Memory
Data
Data
Data
Data
Disk
Disk
Offset Conversion
Offset Conve...
Meta Level
Meta Level
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/inode.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/inode.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
2. inode tree
2. inode tree
1. index tree
1. index tree
key: filename
value: inum
key: filename...
get
key:filename
get...
get
key: inum
get...
key: inum
value: inode pointer
key: inum...
inodeFile TypePermission...
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/ls.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/ls.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
get
key: gearsDirectory->INodeNumber
get...
get
key: name->value (filename)
get...
inode tree
inode tree
index tree
index tree
key: name->value (filename)
value: gearsDirectory->INodeNumber
key: name->value (filename)...
key: gearsDirectory->INodeNumber
value: newDirectory
key: gearsDirectory->INodeNumber...
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/meta_cg_dg.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/meta_cg_dg.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.19.4\n2018-02-12 15:33:34 +0000 + + Canvas 1 + + + Layer 1 + + + + + + + + + + Meta Data Gear + + + + + + + + + Meta Data Gear + + + + + + Code Gear + + + + + Data Gear + + + + + + + + Data Gear + + + + + + + + MetaCode Gear + + + + + Code Gear + + + + + Data Gear + + + + + + + + Data Gear + + + + + + + + MetaCode Gear + + + + diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/mkdir.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/mkdir.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,4 @@ + + + +
put
key: name->value (filename)
value: gearsDirectory->INodeNumber
put...
put
key: gearsDirectory->INodeNumber
value: newDirectory
put...
inode tree
inode tree
index tree
index tree
inode tree
inode numberをkeyとし
inodeのpointerをvalueとして持つ
inode tree...
index tree
filenameをkeyとし
inode numberをvalueとして持つ
index tree...
Text is not SVG - cannot display
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/nondestructive_tree_modification.png Binary file marp-slide/figs/nondestructive_tree_modification.png has changed diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/test.drawio --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/test.drawio Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/figs/test.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/figs/test.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,1 @@ +
DataGear
DataGear
CodeGear
CodeGear
DataGear
DataGear
CodeGear
CodeGear
Viewer does not support full SVG 1.1
\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/logo.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/logo.svg Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,683 @@ + + + +image/svg+xml \ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/slide.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/slide.html Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,121 @@ +
+

GearsOSのファイルシステムとDB

+ +

琉球大学 理工学研究科 知能情報プログラム
+河野研究室

+

又吉 雄斗, 佐野 巧曜, 河野 真治

+
+
+

研究目的

+
    +
  • アプリケーションの信頼性を保証するために,
    +アプリケーションが動作するOSの信頼性を高める必要がある
  • +
  • 信頼性確保の方法として定理証明やモデル検査がある
  • +
  • 当研究室では,信頼性の保証を目的としたGearsOSを開発している
  • +
  • 証明や検証を容易に行えるよう,ファイルシステムのシンプルな実装を考えたい
  • +
+
+
+

RedBlackTreeを用いたFSの実装

+
+
+

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

+
    +
  • GearsAgda(Agda) +
      +
    • 形式手法による信頼性の向上
    • +
    +
  • +
  • GearsOS(CbC) +
      +
    • ユーザーレベルタスクマネージメント
    • +
    +
  • +
  • <span style="color: red; "> x.v6(CbC) </span> +
      +
    • スタンドアロンOS
    • +
    +
  • +
+
+
+

真ん中タイトル

+
+
+

Bullet Points

+
    +
  • Show all
  • +
  • at once
  • +
+
    +
  • or one
  • +
  • by one
  • +
+
+
+

Tables

+ + + + + + + + + + + + + +
HeaderHeader
TextText
+
+
+

CodeGear Transition

+
    +
  • CodeGear receives DataGear
  • +
  • CodeGear writes to the next DataGear
  • +
+
+
+

Code

+

raw_socket

+
__code raw_socket_init(){
+     int sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+     if(sock == -1){
+         perror("Failed to open socket");
+         exit(1);
+     }
+     uint8_t buf[1550];
+ 
+     goto raw_socket(sock, buf, sizeof(buf));
+ }
+
+
+
+

KaTeX

+

Render inline math such as .

+

+
+

References

+ +
+

スピーカーノート

\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/slide.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/slide.md Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,116 @@ +--- +marp: true +theme: cr +paginate: true +--- + +# GearsOSのファイルシステムとDB + + + +琉球大学 理工学研究科 知能情報プログラム +河野研究室 + +又吉 雄斗, 佐野 巧曜, 河野 真治 + +--- + +## 研究目的 + +- アプリケーションの信頼性を保証するために, + アプリケーションが動作するOSの信頼性を高める必要がある +- 信頼性確保の方法として定理証明やモデル検査がある +- 当研究室では,信頼性の保証を目的としたGearsOSを開発している +- 証明や検証を容易に行えるよう,ファイルシステムのシンプルな実装を考えたい + +--- + +## RedBlackTreeを用いたFSの実装 + + + +--- + +## 信頼性の保証を目的としたOS + +3種類のGears OS + +- GearsAgda(Agda) + - 形式手法による信頼性の向上 +- GearsOS(CbC) + - ユーザーレベルタスクマネージメント +- CbC x.v6 ← 今回の実装対象 + - スタンドアロンOS + +--- + +## Gears OS(CbC x.v6) + +- 当研究室にて,信頼性と拡張性の両立を目的として開発している +- CbCで記述されている +- Gearという概念があり,実行の単位をCodeGear,データの単位をDataGearと呼ぶ +- ノーマルレベルとメタレベルの処理を切り分けることが容易にできる + +--- + +## CodeGearとmetaCodeGearの関係 + +- ノーマルレベルとメタレベルの存在 + - CodeGearがDataGearを受け取り,処理後にDataGearを次のCodeGearに渡すという動作をしているように見える + - 実際にはデータの整合性の確認や資源管理などのメタレベルの処理が存在し,それらの計算はMetaCodeGearで行われる + +--- +## CodeGearとmetaCodeGearの関係 + +![w:1100](figs/meta_cg_dg.svg) + +--- + +## Context + +- GearsOS上全てのCodeGear,DataGearの参照を持つ +- OS上の処理の実行単位 +- Gearの概念ではMetaDataGearに当たる +- ノーマルレベルから直接参照されず,必ずMetaDataGearとしてMetaCodeGearから参照される + +--- + +## CodeGear遷移の流れ + +![w:1100](figs/context.svg) + +--- + +## RedBlackTree + +--- + +## 非破壊Tree + +- GearsOSにおける永続データは非破壊的な編集を行う木構造を用いて保存する +- ディレクトリシステム自体にバックアップの機能を搭載することが可能と考える + +--- + +## 非破壊Tree + +![w:1100](figs/nondestructive_tree_modification.png) + + +--- + +## ディスク上とメモリ上のデータ構造 + +--- + +## データのロールバックとバックアップ + +--- + +## トランザクション + +--- + +## 権限の表現 diff -r ceebb580ba71 -r f3fea3b5eeb2 marp-slide/template.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marp-slide/template.html Thu May 11 22:23:30 2023 +0900 @@ -0,0 +1,94 @@ +
+

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

+ +

琉球大学 理工学研究科 知能情報プログラム
+河野研究室

+

又吉 雄斗

+
+
+

研究目的

+
    +
  • アプリケーションの信頼性を保証するために,
    +アプリケーションが動作するOSの信頼性を高める必要がある
  • +
  • 信頼性確保の方法として定理証明やモデル検査がある
  • +
  • 当研究室では,信頼性の保証を目的としたGearsOSを開発している
  • +
  • GearsOSで未実装の機能であるファイルシステムの実装を目指す
  • +
+
+
+

真ん中タイトル

+
+
+

Bullet Points

+
    +
  • Show all
  • +
  • at once
  • +
+
    +
  • or one
  • +
  • by one
  • +
+
+
+

Tables

+ + + + + + + + + + + + + +
HeaderHeader
TextText
+
+
+

CodeGear Transition

+
    +
  • CodeGear receives DataGear
  • +
  • CodeGear writes to the next DataGear
  • +
+
+
+

Code

+

raw_socket

+
__code raw_socket_init(){
+     int sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+     if(sock == -1){
+         perror("Failed to open socket");
+         exit(1);
+     }
+     uint8_t buf[1550];
+ 
+     goto raw_socket(sock, buf, sizeof(buf));
+ }
+
+
+
+

References

+ +
+

スピーカーノート

\ No newline at end of file diff -r ceebb580ba71 -r f3fea3b5eeb2 slide/slide.html --- a/slide/slide.html Mon Apr 17 22:32:20 2023 +0900 +++ b/slide/slide.html Thu May 11 22:23:30 2023 +0900 @@ -10,7 +10,7 @@ GearsOSにおける<br />inodeを用いたファイルシステムの構築 - + @@ -77,7 +77,7 @@
- Matayoshi Yuto, Shinji Kono + Matayoshi Yuto, Sano Yoshiaki, Shinji Kono, 琉球大学
@@ -315,28 +315,28 @@

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 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(...));
-}
-
+__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(...)); +} +
diff -r ceebb580ba71 -r f3fea3b5eeb2 slide/slide.md --- a/slide/slide.md Mon Apr 17 22:32:20 2023 +0900 +++ b/slide/slide.md Thu May 11 22:23:30 2023 +0900 @@ -1,5 +1,5 @@ title: GearsOSにおける
inodeを用いたファイルシステムの構築 -author: Matayoshi Yuto, Shinji Kono +author: Matayoshi Yuto, Sano Yoshiaki, Shinji Kono, profile: 琉球大学 diff -r ceebb580ba71 -r f3fea3b5eeb2 slide/slide.pdf.html --- a/slide/slide.pdf.html Mon Apr 17 22:32:20 2023 +0900 +++ b/slide/slide.pdf.html Thu May 11 22:23:30 2023 +0900 @@ -10,7 +10,7 @@ GearsOSにおける<br />inodeを用いたファイルシステムの構築 - + @@ -62,7 +62,7 @@
- Matayoshi Yuto, Shinji Kono + Matayoshi Yuto, Sano Yoshiaki, Shinji Kono, 琉球大学
@@ -299,28 +299,28 @@

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 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(...));
-}
-
+__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(...)); +} +