view abst.txt @ 0:581d76326ace

abst
author mir3636
date Wed, 22 Mar 2017 19:04:51 +0900
parents
children
line wrap: on
line source

198417651

Gears OS におけるコード記述

宮城光希 河野真治

Gears OS は Continuation based C によってアプリケーションとOSそのものを記述する。
OSの下ではプログラムの記述は通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等、記述しなければならない処理が存在する。これらの計算を Meta Computation と呼ぶ。
Meta Computation を通常の計算から切り離して記述するために、Code Gear、Data Gear という単位を提案している。
Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在する。

code gear 間の接続はつぎのcode gearの番号とthread structure に相当するcontextによって行われる。
ユーザーレベルではmeta構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。
metaレベルから見たdata gearをユーザーレベルのcode gearに接続するにはstub というmeta code gear を用いる。
stubとmetaはユーザーレベルcodegear とdatagearからスクリプトにより作成される。

変換に必要な情報はプログラムを構成するcode gearとdata gearの集まりから得る。この集まりをinterfaceとして定義している。
interfaceはオブジェクト指向言語のクラスや関数型言語の型クラスに対応し再利用や実装の切り分けに使うことができる。

本論文では、interfaceを用いたプログラミングと、メタ計算の実例を示す。



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が入る。
本論文ではGears OSでの並列処理の構成方法について述べる。並列処理をメタレベルで行うことにより、並列処理で重要なチューニングや性能測定あるいはデバッグをメタ計算を切り替えることにより、ノーマルレベルの計算を変更することなく行うことができることを示す。



非破壊木構造データベース Jungle のサービス利用法にそった改良


仲松栞 照屋のぞみ 河野真治

プログラムからデータを分離して扱うデータベースには、
プログラム中のデータ構造と表構造とのインピーダンスミスマッチという問題がある。
データベースのレコードをプログラム中のオブジェクトとして使えるOR Mapperや、
データベース自体も、表に特化したKey Value Store、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。
しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。

そこで当研究室では、これらの問題を解決するためにプログラム内部に木構造を格納できるデータベース Jungle を提案している。
Jungleは、木構造の変更を非破壊的に行う。
Jungleは、読み込みは高速に行える反面、書き込みの手間は木の形・大きさに依存しており、最悪の場合O(n)となってしまう。
実際にJungleを使用したアプリケーションを作成した場合、アプリケーションにそった木構造の変更アルゴリズムを採用する必要がある。
いくつかの方法を提案し、PostgreSQLとMongoDBとの比較を行った。