comparison slide/CbCXv6.md @ 18:afc36230cf4f

slide chapter3,4
author tobaru
date Fri, 07 Feb 2020 20:06:13 +0900
parents
children 98cee2f6c919
comparison
equal deleted inserted replaced
17:6afd90dba6db 18:afc36230cf4f
1 # CbCインターフェースによる CbCXv6 の書き換え
2 - 並列信頼研
3 - 桃原 優
4
5 ---
6
7 # 目次
8 1. **OS の信頼性の保証**
9 2. CbC による Gears OS の開発
10 3. Xv6
11 4. CbCXv6 での Paging
12 5. CbC インターフェース
13 6. 評価
14 7. まとめ 
15
16 ---
17
18 # OS の信頼性の重要性
19 - OS のバグは日常生活に支障をきたす
20 - パスワードなしで root にアクセスできるバグ
21 - 日付設定でコンピュータが壊れる
22 - -> OS自体に信頼性が求められる
23
24 ---
25
26 # OS の信頼性の重要性
27
28 - 全てのOSのコードに対して検証を行うのは困難
29 - 複雑な機能が多い
30 - 短期間のアップデート
31
32 - ユーザーが検証を行うこともできない
33 - 資源管理はOSが行なってる
34 - そもそも資源管理が複雑
35 - アクセスされたり書き換えられるリスク
36
37 ---
38
39
40 # メタレベルとノーマルレベル
41 - ノーマルレベル
42 - ユーザーがプログラミング言語によって記述する部分の処理
43 - メタレベル
44 - ユーザーが記述しないOS 側の処理
45 - CPU
46 - メモリ
47
48 ---
49
50 # Continuation based C
51 - ノーマルレベルとメタレベルの処理を同じ言語で行えるようにした言語(以下CbC)
52 - Code Gear
53 - 基本的な処理の単位
54 - Data Gear
55 - データの単位
56
57 ---
58
59 # goto による継続
60
61 - Code Gear の処理の間を goto によって遷移していく
62
63 ![](https://i.imgur.com/etfQund.png)
64
65 ---
66
67 # Data Gear の継続
68 - goto の際に Data Gear も継続される
69
70 ![](https://i.imgur.com/3E0DGWA.png)
71
72 ---
73
74 # Meta Code Gear
75 - 実際にはノーマルレベルの間にメタレベルの処理がある
76 - Meta Level では Data Gear の見え方は変わる(Meta Data Gear)
77
78 ![](https://i.imgur.com/vy0NxrG.png)
79
80 ---
81
82 # 状態遷移モデル
83 - goto の遷移によって状態遷移モデルに落とし込める
84 - Code Gear に対しての入力に対して期待される出力がされているかで検査して**信頼性を保証する**
85
86 ----
87
88 # Agda による検証
89 - モデル検査
90 - 定理証明支援系である Agda を用いる。
91 - Agda
92 - Haure Logic という検証手法を扱える。
93
94 ---
95
96 # Haure Logic
97 - 検証手法
98 - 事前条件を使ってある関数を実行して事後条件を満たすことを確認する
99 - CbCと相性がいい
100 - 継続に事前条件(Input Data Gear)と事後条件(Output Data Gear)を持たせることができる
101
102 ---
103
104 # Geas OS
105 - CbC を使って信頼性の保証と拡張性を持たせる Gears OS の開発を行なっている
106 - Xv6 という OS を参考に書き換えをしている
107
108 ---
109
110 # メモリ管理
111 - OS の信頼性の1つであるメモリ管理部分を CbC で書き換える
112 - Page のバリデーションチェック
113 - サンドボックスによるエクセプション
114
115 ---
116
117 # インターフェース
118 - 書き換えを防ぐために見える Data Gear に違いが生じる
119 - -> Gears OS のノーマルレベルからメタレベルの記述が記述が煩雑になるためインターフェースを導入
120 - 機能の入れ替えによる他のメリット
121 - 煩雑な記述の解消
122 - 機能の入れ替え
123 - Agda による証明
124
125
126 ---
127
128 # 目次
129 1. OS の信頼性の保証
130 2. **CbC による Gears OS の開発**
131 3. Xv6
132 4. CbCXv6 での Paging
133 5. CbC インターフェース
134 6. 評価
135 7. まとめ 
136
137 ---
138
139 # CbC による Gears OS の開発
140 - a
141
142
143
144 ---
145
146
147 # Context
148 - a
149
150 ---
151
152 # 目次
153 1. OS の信頼性の保証
154 2. CbC による Gears OS の開発
155 3. **Xv6**
156 4. CbCXv6 での Paging
157 5. CbC インターフェース
158 6. 評価
159 7. まとめ 
160
161 ---
162
163 # Xv6
164 - MIT の講義用教材として作られたOS
165 - 企画課される前のCで書かれたUNIX V6 を書き換えた
166 - 1万行程の軽量なOS
167 - Linuxだと数千万行
168 - Xv6 を参考に CbC で書き直すことで Gears OS を実装する
169
170 ---
171
172 # カーネル空間
173 - OS の中核となるプログラムで Meta Level に相当する
174 - Xv6 ではカーネルとユーザープログラムは分離されている
175 - ユーザープログラムはカーネルに直接アクセスできない。
176 - 書き換えやアクセスを防ぐため
177 - 呼び出す場合は system call
178
179 ---
180
181 # カーネルが提供するもの
182 - プロセス管理
183 - メモリ管理
184 - ファイル管理
185 - I/O, read, write
186
187
188 ---
189
190 # カーネルの保護機構
191 - CPUのハードウェア保護機構を持っている
192 - ユーザー空間で実行されているプロセスが自身のメモリのみアクセスできるように保護
193 - system call
194 - ハードウェアが一時的に特権レベルをあげ、カーネルのプログラムが実行される
195
196 ---
197
198 # system call
199 - system call 呼び出し
200 - トラップ の発生
201 - ユーザープログラムの中断
202 - 処理がカーネルに切り替わる
203
204 ---
205
206 # system call
207 - ソースコード載せる
208
209 ---
210
211 # Xv6-rpi
212 - Xv6 は Arm のバイナリを出力するので様々なハードウェアで動かすことができる
213 - Raspberry Pi
214 - 携帯電話
215 - 実際にRaspberry Pi で動かすために xv6-rpi を用意して動作しているかコンソールで確認中
216 - CbCxv6 とは別
217
218
219 ---
220
221 # 目次
222 1. OS の信頼性の保証
223 2. CbC による Gears OS の開発
224 3. Xv6
225 4. **CbCXv6 での Paging**
226 5. CbC インターフェース
227 6. 評価
228 7. まとめ 
229
230 ---
231
232 # CbCXv6 での Paging
233 - OS の信頼性の1つであるメモリ管理部分の書き換えについて説明
234
235 ---
236
237 # 実メモリの直接操作
238 - 実メモリを直接扱うと様々な問題が生じる
239 - ユーザープログラムで空いているメモリ番地を探す必要
240 - フラグメンテーションが起こる
241 - メモリ間に扱うには小さな隙間ができる
242
243 ---
244
245 # Paging
246 - メモリ管理の手法
247 - Page と呼ばれる固定長のブロックに分割して、メモリとスワップ領域で Page を入れ替えて管理
248 - 仮想メモリとして扱うことでフラグメンテーションの解消と空き番地を探す必要がなくなる
249
250 ---
251
252 # Pagingの図
253 - 必要?
254
255 ---
256
257 # メタレベルでの Paging の操作
258 - Page Table に相当するデータを Input Data Gear で受け取って変更した後、Context にある Meta Data Gear に goto で遷移してアクセス
259 - メタレベルで処理することで本来カーネル側の処理である Page Table を操作できる
260
261 ---
262
263 # Paging の信頼性
264 - Input Data Gear に対しての Output Data Gear をバリデーションチェックすることで他のプロセスから書き換えられることを防ぐ
265 - サンドボックス
266 - 他のプロセスから書き換えられた時にエクセプションを飛ばす
267
268 ---
269
270 # Paging の書き換え
271 - Xv6 では実メモリから仮想メモリの変換をvm.cで行なっている。
272 - 次の章で書き換えについて説明する
273
274
275
276 ---
277
278 # 目次
279 1. OS の信頼性の保証
280 2. CbC による Gears OS の開発
281 3. Xv6
282 4. CbCXv6 での Paging**
283 5. **CbC インターフェース**
284 6. 評価
285 7. まとめ 
286
287 ---
288
289
290
291