# HG changeset patch # User one # Date 1492847518 -32400 # Node ID a7d96c2f588b4192bb2b2f2be29d06dc71ce849c # Parent 8e5011d1947d529ce03ebe3f81d48fc19beff1e9 Update diff -r 8e5011d1947d -r a7d96c2f588b paper/sigos.tex --- a/paper/sigos.tex Sat Apr 22 16:23:28 2017 +0900 +++ b/paper/sigos.tex Sat Apr 22 16:51:58 2017 +0900 @@ -71,6 +71,8 @@ % 和文概要 \begin{abstract} + 現代の OS では拡張性と信頼性を両立させることが要求されている。 + 信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。 Gears OS は継続を中心とした言語で記述されており、メタ計算をノーマルレベルと分けて記述することができる。並列処理はメタ計算によって記述されており、CbC自体には並列処理の機能はない。Gears OS のプログラムはCode Gear とData Gear の集まりであるinterfaceによって行われる。Gears OSでのスレッドはinterfaceの集合で出来ており、code gear data gearを接続するcontextというmeta data gear を持つ。 並行実行する場合は新しくcontextを生成し、それを時分割または、物理的なCPUに割り当てることによって実現される。 つまり、contextそのものがスレッドとなる。 Gears OSでの同期機構はdata gear を待ち合わせることによって行われる。例えば、GPU上で実行する場合は必要なdata gearをGPU内部に転送し、それらが揃った時点で並列実行される。data gear の待ち合わせはメモリ上のdata gearのmeta data gear に待ち合わせ用のキューを作ることによって行われる。キューにはGears OSのスレッドつまりcontext meta data gearが入る。 @@ -232,6 +234,7 @@ GPUへのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。 % session 名変えたい +% __exit は そのcontext(thread)での終わりを示している(説明追加) \section{Task の設定の Meta Computation の問題} 現在の Gears OS では 並列実行する Task の設定を Code\ref{src:setting_task} のように行っている。 Code\ref{src:setting_task} では 実行する CodeGear、揃っていない Input Data Gear の数、Input/Output Data Gear への参照等の設定をノーマルレベルで記述している。 diff -r 8e5011d1947d -r a7d96c2f588b paper/src/par_goto.c --- a/paper/src/par_goto.c Sat Apr 22 16:23:28 2017 +0900 +++ b/paper/src/par_goto.c Sat Apr 22 16:51:58 2017 +0900 @@ -1,3 +1,4 @@ -__code createTask(Integer *integer1, Integer *integer2, Integer *output) { - par goto add(integer1, integer2, output); +__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) { + par goto add(integer1, integer2, output, __exit); + goto next(...); }