comparison paper/sigos.tex @ 3:f126e8e89573

up
author mir3636
date Tue, 18 Apr 2017 18:06:39 +0900
parents 39aeddde8be2
children fd019b8f2781
comparison
equal deleted inserted replaced
2:39aeddde8be2 3:f126e8e89573
149 %create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 149 %create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。
150 %return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。 150 %return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。
151 151
152 \section{Gearef、GearImpl} 152 \section{Gearef、GearImpl}
153 Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 153 Context には Allocation 等で生成した Data Gear へのポインタが格納されている。
154 Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すためコードが煩雑になってしまう。 154 Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、コードが煩雑になってしまう。
155 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。 155 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。
156 Gearef に Context と型を渡すことでデータの参照が行える。 156 Gearef に Context と型を渡すことでデータの参照が行える。
157 また impliment のデータを参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。 157 また impliment のデータを参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。
158 GearImpl は Context と interface 名、interface の変数名を指定して参照する。 158 GearImpl は Context と interface 名、interface の変数名を指定して参照する。
159 159
160 \section{stub Code Gear} 160 \section{stub Code Gear}
161 Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。 161 Code Gear が必要とする Data Gear を取り出す際に Context を通す必要があるが、
162 しかし、Context を直接扱うのはセキュリティ上好ましくない。 162 Context を直接扱うのはセキュリティ上好ましくない。
163 そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 163 そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
164 stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。 164 stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。
165 165
166 \section{Context、stub Code Segment の自動生成} 166 \section{Context、stub Code Segment の自動生成}
167 167
168 Gears OS では 通常の計算の他に Context や stub などのメタ計算を記述する必要があが、Gears OS を現在の CbC の機能のみを用いて記述するとこのメタ計算の記述を行わなくてはならず、これには多くの労力を要する。 168 Gears OS では 通常の計算の他に Context や stub などのメタ計算を記述する必要があが、Gears OS を現在の CbC の機能のみを用いて記述するとこのメタ計算の記述を行わなくてはならず、これには多くの労力を要する。
169 この記述を助けるために Context を生成する generate\_context と stub Code Gear を生成する generate\_stub を perl スクリプトで作成した。 169 この記述を助けるために Context を生成する generate\_context と stub Code Gear を生成する generate\_stub を perl スクリプトで作成した。
170 170
171 \section{stub Code Segment の生成} 171 \section{stub Code Segment の生成}
172 stub Code Gear は Code Gear 間の継続に挟まれる Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。 172 stub Code Gear は Code Gear 間の継続に挟まれる Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。
173 stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。 173 Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。
174 stub Code Gear を 自動生成することによって Code Gear の記述量を約半分にすることができる。 174 stub Code Gear を 自動生成することによって Code Gear の記述量を約半分にすることができる。
175 175
176 stub を生成するために generate\_stub は指定された cbc ファイルの \_\_code型である Code Gear を取得し、引数から必要な Data Gear を選択する。 176 stub を生成するために generate\_stub は指定された cbc ファイルの \_\_code型である Code Gear を取得し、引数から必要な Data Gear を選択する。
177 generate\_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する。 177 generate\_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
178 この時既に stub Code Gear が記述されている Code Gear は無視される。 178 この時既に stub Code Gear が記述されている Code Gear は無視される。
198 この情報から確保される Data Gear のサイズなどを決定する。 198 この情報から確保される Data Gear のサイズなどを決定する。
199 199
200 \section{今後の課題} 200 \section{今後の課題}
201 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。 201 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。
202 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 202 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。
203
204 %しかし、現在のスクリプトでは stub
205
203 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 206 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。
204 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 207 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。
205 208
206 209
207 210