comparison user/Itsuki.md @ 63:f440c8f6f66f

backup 2021-05-22
author autobackup
date Sat, 22 May 2021 00:10:03 +0900
parents
children 937323467f4d
comparison
equal deleted inserted replaced
62:0c5df5736436 63:f440c8f6f66f
1 # GearsOSの分散ファイルシステムの設計
2 author: Takahiro Ikki, Shinji Kono
3 profile: 琉球大学
4 lang: Japanese
5 code-engine: coderay
6
7 ## メモ
8 従来のファイルシステムの問題を加える、
9
10
11
12
13 ## 研究概要
14 - 当研究室ではOSの信頼性と拡張性の保証を目的としたGearsOSを開発している。
15 - GearsOSは開発途上であり、実装が必要な機能が複数存在している。
16 - GearsOSの分散ファイルシステムを開発したい。
17 - 分散フレームワークChristieの構成をもとにGearsファイルシステムを構築する。
18
19
20 ## GearsOS概要
21 - GearsOSの目的を説明したい。証明やモデル検査に適した構成にetc
22 - メタとノーマルの分離など
23 #
24 - コンピュータの土台となるOSは高い信頼性が保証されている必要がある。
25 - OSのコードや処理の量は膨大となる。
26 - したがって定理支援証明やモデル検査などの形式手法を用いて検証したい。
27 - メタレベルとノーマルレベルの計算を分離して記述が行える。
28 - メタレベルの計算でプログラムの整合性を検証する。
29
30 ## Continuation based C(CbC)
31 - CbCとは当研究室で開発しているC言語の下位言語である。
32 - CbCは関数呼び出しでなく継続を導入している。
33 - スタック領域を用いずjmp命令でコード間を移動することにより軽量な継続を実現している。
34 -
35
36
37 ## Gearの概念
38
39 ## Christie
40 - 過去の記述↓
41 - Christieは当研究室で開発している分散フレームワークである.
42 - ChristieではデータをGearという単位で分割して記述を行う。
43 - Codegear、DataGear、CodeGearManager、DagaGearManagerの四種類が存在しする。
44 - CodeGear = スレッド、クラス
45 - DataGear = 変数データ
46 - CodeGearManager = ノード
47 - DataGearManager = データプール
48
49 ## Christie's Gear
50 ### CodeGear(以下CG)
51 - 設定されたkeyに全てのDGが格納されると動作し、DGを参照しながらクラス部分を実行できる。
52
53 ### DataGear(以下DG)
54 - CGに指定されたkeyに差し込まれる。
55 - アノテーションを使って記述する。
56 - ノードの同士がこのDGを差し込み合うことで通信を構成する。
57
58 ### CodeGearManager(以下CGM)
59 - CGを指定してsetupすることでCGを動かすことができる。
60 - putという操作でDGを対応したDGMに格納する。
61 ### DataGearManager(以下DGM)
62 - CGMが所持している。
63 - プールになっておりputされたDGが保存され、keyとデータが結び付けられる。
64
65 ![](http://ie.u-ryukyu.ac.jp/home/student/e16/e165713Remote_DataGearManager.pdf)
66 ![](http://ie.u-ryukyu.ac.jp/~e165713/images/remote_datasegment.pdf)
67
68
69
70
71 #### LocalDGMとRemoteDGM
72 - CGMはDGをputという操作を使って、自身や他ノードのDGMにDGを書き込ませる。
73 - DGMにはLocalDGMとRemoteDGMが存在する。
74 - LocalDGMは各ノード固有のデータベースである。
75 - RemoteDGMは他ノードのLocalDGMに対応するプールであり、接続しているノードの数だけ存在する。
76 - DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.
77 - Localであれば、LocalのCGMが管理するDGMに対しDGを格納。
78 - RemoteDGMを指定してputすることで、接続している任意のノードにDGを差し込ませることができる。
79
80 ## DataGearのアノテーション
81 - DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。
82 - DGアノテーションにはTake、Peek、TakeFrom、PeekFrom、の4つがある。
83 - Take
84 - DGMに保管された先頭のDGを読み込み、そのDGを削除する。
85 - Peek
86 - DGMに保管された先頭のDGを読み込むが、DGが消去されない。そのため特に操作をしない場合、同じデータを参照し続ける。
87 - TakeFrom
88 - Remote DGM nameを指定することで、その接続先のDGM からTake操作をおこえる。
89 - PeekFrom
90 - Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。
91
92
93 ## TopologyManager
94 - 通信形成をより簡潔に行ってくれる機能である。
95 - Topologyに参加を表明したノードを自動的に配線する。
96 - 自動的に接続しているノードに相対的にラベルをつける。
97 - 静的Topology形成
98 - dotファイルを与えることノード関係の構築を行う。
99 - ノード数が想定と一致しないと動作しない。
100 - 動的Topology形成
101 - 参加を表明したノードに対し、動的にノード同士の関係を作る。
102 - 例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与える。
103
104 ```Code
105 digraph test {
106 node0 -> node1 [label="right"]
107 node1 -> node2 [label="right"]
108 node2 -> node0 [label="right"]
109 }
110 ```
111
112 ## Christieのコード例
113 - メインがDGMなのでいらないかも
114 ```
115 public class StartHelloWorld extends StartCodeGear {
116
117 public static void main(String[] args){
118 CodeGearManager cgm = createCGM(10000);
119 cgm.setup(new HelloWorldCodeGear());
120 cgm.getLocalDGM().put("helloWorld","hello");
121 cgm.getLocalDGM().put("helloWorld","world");
122 }
123 }
124 ```
125 ```
126 hello world
127 ```
128
129
130 ```
131 public class HelloWorldCodeGear extends CodeGear {
132
133 @Take
134 String helloWorld;
135
136 @Override
137 protected void run(CodeGearManager cgm) {
138 System.out.print(helloWorld + " ");
139 cgm.setup(new HelloWorldCodeGear());
140 }
141 }
142 ```
143
144 ## GearsOSのファイルアクセス
145
146 ## ChristieAPI
147
148 ## FileSystem Implementation
149
150 ## 競合的アクセスを含む分散計算の検証
151
152 ## 比較とまとめ