Mercurial > hg > Papers > 2018 > mitsuki-sigos
comparison Slide/prosym.html @ 23:bb495c751e40
fix
author | mir3636 |
---|---|
date | Fri, 19 Jan 2018 07:45:21 +0900 |
parents | d5d62b74c219 |
children | 8edb996bce46 |
comparison
equal
deleted
inserted
replaced
22:f83f575b6194 | 23:bb495c751e40 |
---|---|
84 | 84 |
85 <div class='slide '> | 85 <div class='slide '> |
86 <!-- === begin markdown block === | 86 <!-- === begin markdown block === |
87 | 87 |
88 generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] | 88 generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] |
89 on 2018-01-18 15:29:57 +0900 with Markdown engine kramdown (1.13.2) | 89 on 2018-01-19 07:45:08 +0900 with Markdown engine kramdown (1.13.2) |
90 using options {} | 90 using options {} |
91 --> | 91 --> |
92 | 92 |
93 <!-- _S9SLIDE_ --> | 93 <!-- _S9SLIDE_ --> |
94 <h1 id="section">研究目的</h1> | 94 <h1 id="section">研究目的</h1> |
104 </ul> | 104 </ul> |
105 | 105 |
106 <!-- | 106 <!-- |
107 # OS の拡張性と信頼性の両立 | 107 # OS の拡張性と信頼性の両立 |
108 | 108 |
109 さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 | 109 - さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 |
110 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 | 110 - 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 |
111 その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 | 111 - その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 |
112 これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 | 112 - これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 |
113 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 | 113 - 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 |
114 このため信頼性と拡張性を両立させることが重要である。 | 114 - このため信頼性と拡張性を両立させることが重要である。 |
115 --> | 115 --> |
116 <!-- | 116 <!-- |
117 # 目次? | 117 # 目次? |
118 --> | 118 --> |
119 <p># メタ計算の重要性 | 119 |
120 - プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 | 120 |
121 - メタ計算はノーマルレベルの計算から切り離して記述したい。 | 121 </div> |
122 - そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。 | 122 <div class='slide '> |
123 - そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</p> | 123 <!-- _S9SLIDE_ --> |
124 <h1 id="section-1">メタ計算の重要性</h1> | |
125 <ul> | |
126 <li>プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> | |
127 <li>メタ計算はノーマルレベルの計算から切り離して記述したい。</li> | |
128 <li>そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。</li> | |
129 <li>そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</li> | |
130 </ul> | |
124 | 131 |
125 | 132 |
126 </div> | 133 </div> |
127 <div class='slide '> | 134 <div class='slide '> |
128 <!-- _S9SLIDE_ --> | 135 <!-- _S9SLIDE_ --> |
186 <li>Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。</li> | 193 <li>Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。</li> |
187 <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li> | 194 <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li> |
188 </ul> | 195 </ul> |
189 | 196 |
190 <div style="text-align: center;"> | 197 <div style="text-align: center;"> |
191 <img src="./fig/metaCS.pdf" alt="message" width="600" /> | 198 <img src="./fig/MetaGear.pdf" alt="MetaGear" width="600" /> |
192 </div> | 199 </div> |
193 | 200 |
194 | 201 |
195 </div> | 202 </div> |
196 <div class='slide '> | 203 <div class='slide '> |
197 <!-- _S9SLIDE_ --> | 204 <!-- _S9SLIDE_ --> |
198 <h1 id="gears-os-">Gears OS の構成</h1> | 205 <h1 id="gears-os-">Gears OS の構成</h1> |
199 | 206 <ul> |
200 | 207 <li>Gears OS は以下の要素で構成される。 |
201 </div> | 208 <ul> |
202 <div class='slide '> | 209 <li>Context</li> |
203 <!-- _S9SLIDE_ --> | 210 <li>TaskQueue</li> |
204 <h1 id="cbc--gears-os-">CbC による Gears OS 記述の問題点</h1> | 211 <li>TaskManager</li> |
205 <ul> | 212 <li>Worker</li> |
206 <li>Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。</li> | 213 </ul> |
207 <li>本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。</li> | 214 </li> |
208 <li>そのためのプロトタイプとして perl スクリプトを作成した。</li> | 215 </ul> |
209 </ul> | 216 |
217 | |
218 </div> | |
219 <div class='slide '> | |
220 <!-- _S9SLIDE_ --> | |
221 <h1 id="gears-os--1">Gears OS の構成図</h1> | |
222 | |
223 <div style="text-align: center;"> | |
224 <img src="./fig/gears_structure.pdf" alt="gears_structure" width="600" /> | |
225 </div> | |
226 | |
227 <!-- | |
228 # CbC による Gears OS 記述の問題点 | |
229 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 | |
230 - 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 | |
231 - そのためのプロトタイプとして perl スクリプトを作成した。 | |
232 --> | |
210 | 233 |
211 | 234 |
212 </div> | 235 </div> |
213 <div class='slide '> | 236 <div class='slide '> |
214 <!-- _S9SLIDE_ --> | 237 <!-- _S9SLIDE_ --> |
215 <h1 id="context">Context</h1> | 238 <h1 id="context">Context</h1> |
216 <ul> | 239 <ul> |
217 <li>Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li> | 240 <li>Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。</li> |
218 <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li> | 241 <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li> |
219 </ul> | 242 </ul> |
220 | 243 |
221 <p><img src="./fig/context.svg" alt="message" width="550" /></p> | 244 <p><img src="./fig/context.svg" alt="message" width="550" /></p> |
222 | 245 |
224 </div> | 247 </div> |
225 <div class='slide '> | 248 <div class='slide '> |
226 <!-- _S9SLIDE_ --> | 249 <!-- _S9SLIDE_ --> |
227 <h1 id="interface">Interface</h1> | 250 <h1 id="interface">Interface</h1> |
228 <ul> | 251 <ul> |
229 <li>interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。</li> | 252 <li>Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。</li> |
230 <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li> | 253 <li>Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。</li> |
231 </ul> | 254 <li>Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。</li> |
255 </ul> | |
256 | |
257 <pre lang="interface"><code>typedef struct Stack<Type, Impl>{ | |
258 union Data* stack; | |
259 union Data* data; | |
260 union Data* data1; | |
261 __code whenEmpty(...); | |
262 __code clear(Impl* stack,__code next(...)); | |
263 __code push(Impl* stack,Type* data, __code next(...)); | |
264 __code pop(Impl* stack, __code next(Type* data, ...)); | |
265 __code pop2(Impl* stack, __code next(Type* data, Type* data1, ...)); | |
266 __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...)); | |
267 __code get(Impl* stack, __code next(Type* data, ...)); | |
268 __code get2(Impl* stack, __code next(Type* data, Type* data1, ...)); | |
269 __code next(...); | |
270 } Stack; | |
271 </code></pre> | |
272 | |
273 | |
274 </div> | |
275 <div class='slide '> | |
276 <!-- _S9SLIDE_ --> | |
277 <h1 id="interface-1">Interface</h1> | |
232 | 278 |
233 <pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { | 279 <pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { |
234 struct Stack* stack = new Stack(); | 280 struct Stack* stack = new Stack(); |
235 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); | 281 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); |
236 stack->stack = (union Data*)singleLinkedStack; | 282 stack->stack = (union Data*)singleLinkedStack; |
332 | 378 |
333 | 379 |
334 </div> | 380 </div> |
335 <div class='slide '> | 381 <div class='slide '> |
336 <!-- _S9SLIDE_ --> | 382 <!-- _S9SLIDE_ --> |
337 <h1 id="section-1">比較</h1> | 383 <h1 id="section-2">比較</h1> |
338 | 384 |
339 | 385 |
340 </div> | 386 </div> |
341 <div class='slide '> | 387 <div class='slide '> |
342 <!-- _S9SLIDE_ --> | 388 <!-- _S9SLIDE_ --> |
343 <h1 id="section-2">今後の課題</h1> | 389 <h1 id="section-3">今後の課題</h1> |
344 <ul> | 390 <ul> |
345 <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> | 391 <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> |
346 <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li> | 392 <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li> |
347 <li>今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。</li> | 393 <li>今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。</li> |
348 <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li> | 394 <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li> |