Mercurial > hg > Papers > 2018 > mitsuki-sigos
comparison Slide/prosym.html @ 21:d5d62b74c219
fix
author | mir3636 |
---|---|
date | Thu, 18 Jan 2018 15:50:01 +0900 |
parents | 016ee461da2a |
children | bb495c751e40 |
comparison
equal
deleted
inserted
replaced
20:57c060703f4a | 21:d5d62b74c219 |
---|---|
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 09:19:07 +0900 with Markdown engine kramdown (1.13.2) | 89 on 2018-01-18 15:29:57 +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="gears-os">Gears OS</h1> | 94 <h1 id="section">研究目的</h1> |
95 | 95 |
96 <ul> | 96 <ul> |
97 <li> | 97 <li>現代の OS では拡張性と信頼性を両立させることが要求されている。 |
98 <p>現代の OS では拡張性と信頼性を両立させることが要求されている。 | |
99 <!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分--> | 98 <!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分--> |
100 <!--信頼性を保証するには証明とモデル検査を用いる方法がある--></p> | 99 <!--信頼性を保証するには証明とモデル検査を用いる方法がある--></li> |
101 </li> | 100 <li>信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。</li> |
102 <li> | 101 <li>ノーマルレベルの計算とメタレベルの計算を切り離して記述するために Code Gear と Data Gear という単位を用いている。</li> |
103 <p>信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。</p> | 102 <li>Gears OS は Continuation based C(CbC) によってアプリケーションと OS そのものを記述する。</li> |
104 </li> | 103 <li>本研究では、CbC を用いた Gears OS の実装と、メタ計算の実例を示す。</li> |
105 </ul> | 104 </ul> |
106 | 105 |
107 | |
108 </div> | |
109 <div class='slide '> | |
110 <!-- _S9SLIDE_ --> | |
111 <h1 id="section">メタレベルの計算</h1> | |
112 | |
113 <ul> | |
114 <li>プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> | |
115 <li>メタ計算をノーマルレベルの計算から切り離して記述したい。</li> | |
116 <li>本研究ではノーマルレベルとメタレベルを共通して表現できる言語として Continuation based C を用いる。</li> | |
117 </ul> | |
118 | |
119 | |
120 </div> | |
121 <div class='slide '> | |
122 <!-- _S9SLIDE_ --> | |
123 <h1 id="continuation-based-c-cbc">Continuation based C (CbC)</h1> | |
124 <!-- | 106 <!-- |
125 Gears OS は Continuation based C ^\(CbC)によってアプリケーションと OS そのものを記述する。 | |
126 | |
127 CbCはノーマルレベルではメタ構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。 | |
128 メタレベルから見た Data Gear をノーマルレベルの Code Gear に接続するには stub という Meta Code Gear を用いる。 | |
129 stub と Meta はユーザーレベル Code Gear / Data Gear からスクリプトにより作成される。 | |
130 | |
131 ノーマルレベルからメタレベルを含んだコードへの変換に必要な情報はプログラムを構成する Code Gear と Data Gear の集まりから得る。 | |
132 この集まりを Interface として定義している。 | |
133 本研究では、Interfaceを用いたプログラミングと、メタ計算の実例を示す。 | |
134 | |
135 # OS の拡張性と信頼性の両立 | 107 # OS の拡張性と信頼性の両立 |
136 | 108 |
137 さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 | 109 さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。 |
138 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 | 110 時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。 |
139 その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 | 111 その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。 |
140 これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 | 112 これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。 |
141 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 | 113 検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。 |
142 このため信頼性と拡張性を両立させることが重要である。 | 114 このため信頼性と拡張性を両立させることが重要である。 |
143 --> | 115 --> |
144 <!--プログラムからデータを分離して扱うデータベースには、 | 116 <!-- |
145 プログラム中のデータ構造とRDBの表構造のずれにより、<u>インピーダンスミスマッチ</u>という問題がある。 | 117 # 目次? |
146 | 118 --> |
147 データベースのレコードをプログラム中のオブジェクトとして使える<u>OR Mapper</u>や、 | 119 <p># メタ計算の重要性 |
148 データベース自体も、表に特化したKey Value Storeや、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。 | 120 - プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 |
149 | 121 - メタ計算はノーマルレベルの計算から切り離して記述したい。 |
150 しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。--> | 122 - そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。 |
151 | 123 - そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。</p> |
152 | 124 |
153 </div> | 125 |
154 <div class='slide '> | 126 </div> |
155 <!-- _S9SLIDE_ --> | 127 <div class='slide '> |
156 <h1 id="section-1">メタ計算の重要性</h1> | 128 <!-- _S9SLIDE_ --> |
129 <h1 id="continuation-based-c-cbc">Continuation based C (CbC)</h1> | |
130 <ul> | |
131 <li>Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。</li> | |
132 <li>Code Gear は 関数呼び出し時の環境を使わずに次の Code Gear へと goto 文によって遷移する。</li> | |
133 <li>この goto 文による遷移を軽量継続と呼ぶ。</li> | |
134 <li>CbC は軽量継続を持ち、C と互換性のある言語である。</li> | |
135 </ul> | |
136 | |
137 | |
138 </div> | |
139 <div class='slide '> | |
140 <!-- _S9SLIDE_ --> | |
141 <h1 id="cbc-">CbC のコード例</h1> | |
157 <ul lang="Code_Gear"> | 142 <ul lang="Code_Gear"> |
158 <li>プログラムを記述する際、ノーマルな処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li> | |
159 <li>メタ計算はノーマルな計算から切り離して記述したい。</li> | |
160 <li>そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。</li> | |
161 <li>そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 | |
162 # Continuation based C (CbC)</li> | |
163 <li>Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。</li> | |
164 <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li> | 143 <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li> |
165 <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li> | 144 <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li> |
166 <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li> | 145 <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li> |
167 <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li> | 146 <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li> |
168 </ul> | 147 </ul> |
172 | 151 |
173 __code cs1(int c){ | 152 __code cs1(int c){ |
174 goto cs2(c); | 153 goto cs2(c); |
175 } | 154 } |
176 </code></pre> | 155 </code></pre> |
177 <p># Gears OS | 156 |
178 - Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。 | 157 |
179 - 並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。 | 158 </div> |
180 - またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。 | 159 <div class='slide '> |
181 - Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。 | 160 <!-- _S9SLIDE_ --> |
182 - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</p> | 161 <h1 id="gears-os">Gears OS</h1> |
162 <ul> | |
163 <li>Gears OS は Code Gear とデータの単位である Data Gear を用いて開発されており、CbC で記述されている。</li> | |
164 <li>並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。</li> | |
165 <li>Input/Output Data Gear の依存関係が解決された Code Gear を並列実行する。</li> | |
166 </ul> | |
167 | |
168 | |
169 </div> | |
170 <div class='slide '> | |
171 <!-- _S9SLIDE_ --> | |
172 <h1 id="data-gear">Data Gear</h1> | |
173 <ul> | |
174 <li>Data Gear は データの単位であり、int や文字列などの Primitive Type を持っている。</li> | |
175 <li>Code Gear は任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> | |
176 <li>接続された Data Gear 以外には参照を行わない。</li> | |
177 </ul> | |
178 | |
179 | |
180 </div> | |
181 <div class='slide '> | |
182 <!-- _S9SLIDE_ --> | |
183 <h1 id="gears-">Gears でのメタ計算</h1> | |
184 <ul> | |
185 <li>Gears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。</li> | |
186 <li>Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する。</li> | |
187 <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li> | |
188 </ul> | |
189 | |
190 <div style="text-align: center;"> | |
191 <img src="./fig/metaCS.pdf" alt="message" width="600" /> | |
192 </div> | |
183 | 193 |
184 | 194 |
185 </div> | 195 </div> |
186 <div class='slide '> | 196 <div class='slide '> |
187 <!-- _S9SLIDE_ --> | 197 <!-- _S9SLIDE_ --> |
322 | 332 |
323 | 333 |
324 </div> | 334 </div> |
325 <div class='slide '> | 335 <div class='slide '> |
326 <!-- _S9SLIDE_ --> | 336 <!-- _S9SLIDE_ --> |
327 <h1 id="section-2">比較</h1> | 337 <h1 id="section-1">比較</h1> |
328 | 338 |
329 | 339 |
330 </div> | 340 </div> |
331 <div class='slide '> | 341 <div class='slide '> |
332 <!-- _S9SLIDE_ --> | 342 <!-- _S9SLIDE_ --> |
333 <h1 id="section-3">今後の課題</h1> | 343 <h1 id="section-2">今後の課題</h1> |
334 <ul> | 344 <ul> |
335 <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> | 345 <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> |
336 <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li> | 346 <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li> |
337 <li>今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。</li> | 347 <li>今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。</li> |
338 <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li> | 348 <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li> |
339 </ul> | 349 </ul> |
340 | 350 |
341 <!-- | 351 <p><a href="プロシン発表時間 セッション7 1/21 10:40 - 12:00"></a></p> |
342 # ChildrenとAttribute | |
343 | |
344 # Eitherクラス | |
345 | |
346 # Jungleのサンプルコード | |
347 # Jungleの木の編集 | |
348 | |
349 # NodePath | |
350 | |
351 # ノードの追加 | |
352 | |
353 # 移動、ルートノードの追加、コミット | |
354 | |
355 # Jungleのサンプルコード | |
356 | |
357 # 検索APIの実装 | |
358 | |
359 # 関数findを用いた検索APIのサンプルコード | |
360 | |
361 # JungleでのIndexの実装 | |
362 | |
363 # Indexの実装 | |
364 | |
365 # Indexの実装 | |
366 | |
367 # HTML Rendering Engine | |
368 | |
369 # 構造 | |
370 # ContentTree | |
371 # Nodeが持つAttribute | |
372 # LayoutTree | |
373 # LayoutTreeの主な要素 | |
374 # useにおけるタグ対応表 | |
375 # multiComponent | |
376 # 設計 | |
377 # コードとギャップのある格納 | |
378 | |
379 # コードとギャップのない格納 | |
380 | |
381 # 性能評価 | |
382 | |
383 # まとめ | |
384 --> | |
385 <p><a href="プロシン発表時間 セッション4 1/7 8:50 - 10:10"></a></p> | |
386 <!-- === end markdown block === --> | 352 <!-- === end markdown block === --> |
387 </div> | 353 </div> |
388 | 354 |
389 | 355 |
390 </div><!-- presentation --> | 356 </div><!-- presentation --> |