comparison presen/slide.html @ 26:8644cade9765

update
author mir3636
date Thu, 16 Feb 2017 09:19:18 +0900
parents 327435666caa
children fecc23286565
comparison
equal deleted inserted replaced
25:327435666caa 26:8644cade9765
85 85
86 <div class='slide '> 86 <div class='slide '>
87 <!-- === begin markdown block === 87 <!-- === begin markdown block ===
88 88
89 generated by markdown/1.2.0 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13] 89 generated by markdown/1.2.0 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13]
90 on 2017-02-16 08:10:32 +0900 with Markdown engine kramdown (1.9.0) 90 on 2017-02-16 09:18:39 +0900 with Markdown engine kramdown (1.9.0)
91 using options {} 91 using options {}
92 --> 92 -->
93 93
94 <!-- _S9SLIDE_ --> 94 <!-- _S9SLIDE_ -->
95 <h1 id="section">メタ計算の重要性</h1> 95 <h1 id="section">メタ計算の重要性</h1>
104 </div> 104 </div>
105 <div class='slide '> 105 <div class='slide '>
106 <!-- _S9SLIDE_ --> 106 <!-- _S9SLIDE_ -->
107 <h1 id="code-gear--data-gear">Code Gear と Data Gear</h1> 107 <h1 id="code-gear--data-gear">Code Gear と Data Gear</h1>
108 <ul> 108 <ul>
109 <li>Code Gear とはプログラムの処理の単位である。</li>
109 <li>Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。</li> 110 <li>Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。</li>
110 <li>Data Gear はデータの単位であり、Code Gear は 任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> 111 <li>Data Gear はデータの単位であり、Code Gear は 任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li>
111 </ul> 112 </ul>
112 113
113 114
148 </div> 149 </div>
149 <div class='slide '> 150 <div class='slide '>
150 <!-- _S9SLIDE_ --> 151 <!-- _S9SLIDE_ -->
151 <h1 id="context">Context</h1> 152 <h1 id="context">Context</h1>
152 <ul> 153 <ul>
153 <li>Gears OS では Context と呼ばれる接続可能な Code/Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li> 154 <li>Gears OS には Context と呼ばれる接続可能な Code/Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li>
154 <li>Gears OSは必要なCode/DataGearに参照したい場合、このContext を通す必要がある。</li> 155 <li>Gears OSは必要なCode/DataGearに参照したい場合、このContext を通す必要がある。</li>
155 </ul> 156 </ul>
156 157
157 158
158 </div> 159 </div>
211 <!-- _S9SLIDE_ --> 212 <!-- _S9SLIDE_ -->
212 <h1 id="interface-">interface の記述</h1> 213 <h1 id="interface-">interface の記述</h1>
213 <ul lang="impl"> 214 <ul lang="impl">
214 <li>interface を記述することで Context を通して Code Gear が参照できるようになった。</li> 215 <li>interface を記述することで Context を通して Code Gear が参照できるようになった。</li>
215 <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li> 216 <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li>
216 <li>return で interface を返し、その先で指定した Code Gear へ継続できるようになる。</li> 217 <li>return で interface を返し、その先で inter face の持つ Code Gear へと継続できるようになる。</li>
217 </ul> 218 </ul>
218 <pre><code>Stack* createSingleLinkedStack(struct Context* context) { 219 <pre><code>Stack* createSingleLinkedStack(struct Context* context) {
219 struct Stack* stack = new Stack(); 220 struct Stack* stack = new Stack();
220 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); 221 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
221 stack-&gt;stack = (union Data*)singleLinkedStack; 222 stack-&gt;stack = (union Data*)singleLinkedStack;
233 234
234 235
235 </div> 236 </div>
236 <div class='slide '> 237 <div class='slide '>
237 <!-- _S9SLIDE_ --> 238 <!-- _S9SLIDE_ -->
238 <h1 id="contextstub-code-segment-">Context、stub Code Segment の自動生成</h1> 239 <h1 id="contextstub-code-gear-">Context、stub Code Gear の自動生成</h1>
239 <ul> 240 <ul>
240 <li>Gears OS では通常の計算の他に Context や stub などの meta computation を記述する必要がある。</li> 241 <li>Gears OS では通常の計算の他に Context や stub などの meta computation を記述する必要がある。</li>
241 <li>現在の CbC で Gears OS を記述すると、この meta computation の記述も行わなくてはならず、これには多くの労力を要する。</li> 242 <li>現在の CbC で Gears OS を記述すると、この meta computation の記述も行わなくてはならず、これには多くの労力を要する。</li>
242 <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> 243 <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li>
243 </ul> 244 </ul>
244 245
245 246
246 </div> 247 </div>
247 <div class='slide '> 248 <div class='slide '>
248 <!-- _S9SLIDE_ --> 249 <!-- _S9SLIDE_ -->
249 <h1 id="generate-context">generate context</h1> 250 <h1 id="stub-code-gear-">stub Code Gear の生成</h1>
250 <ul> 251 <ul>
251 <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得</li> 252 <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li>
252 <li>generate_context は context.h から Data Gear、c ファイルから Code Gear の取得 253 <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li>
254 <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。</li>
255 <li>引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li>
256 <li>cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。</li>
257 </ul>
258
259
260 </div>
261 <div class='slide '>
262 <!-- _S9SLIDE_ -->
263 <h1 id="context-">Context の生成</h1>
264 <ul>
265 <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li>
266 <li>generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。</li>
267 <li>取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。</li>
268 <li>generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。</li>
269 <li>これらを自動生成することで Gears OS の記述量を約半分にすることができます。
253 <img src="./fig/generate_context.svg" alt="message" width="800" /></li> 270 <img src="./fig/generate_context.svg" alt="message" width="800" /></li>
254 </ul> 271 </ul>
255 272
256 273
257 </div> 274 </div>