next up previous
Next: 研究の成果 Up: 「KLICの実行時システ ムの改良・拡張」に関する成果概要 Previous: 研究の背景と目的

研究の内容

本研究では実行時システムの改良・拡張に主眼を置いた。すなわちKLIC のコ ンパイラによる KL1 から C への変換には原則として手をつけず、実行方式の 基本は変えずに、実行時にリンクされるライブラリの改良のみを行なう。この 方式をとることにより、既存の KL1 プログラムとの整合を保ったまま改良・ 拡張を行なうことができる。

改良・拡張を加えるポイントは数多くあるが、本研究では当面以下の諸点に着 目した改良・拡張を行なう。

世代方式ガーベジコレクタの実現
KLIC 処理系は実行管理用も含めすべてのデータ構造に単一のヒープ領域 を用いるが、これはメモリ管理を一元化して簡潔にする利点が大きい反面、短 寿命のガーベジを多く生成し、ガーベジコレクションのオーバヘッドを大きく している。

そこで、現在の KLIC に欠けている世代 GC を付け加えることによって、KLIC の設計にあたって短寿命のガーベジに対する効率的なメモリ管理を実現する。 また、世代 GC はキャッシュの有効な利用によって処理性能にも大きく寄与す る可能性が高いので、性能向上のためのチューニングを行ない、その効果を評 価する。

デバッグ機能の強化
KLIC 処理系は通常の論理型言語処理系と同様の機能を持つトレーサが備 わっているが、並列に動作する場合は各プロセッサ上のトレーサの入出力を一 本化しているに過ぎないなど、より統合化されたデバッグ機能が必要である。 現在のトレーサは全面的に C で記述されているため、複雑な処理の記述には 不適切で、実際トレース条件の指定などについては現在のトレーサは単純な述 語単位の指定程度しかできず、並列動作する複雑なプログラムのデバッグのた めには十分とはいいがたい。

そこで、全プロセスを統括してトレースする制御プロセスを KL1 自身で記述 することによって、並列動作の統合的制御と、柔軟な制御を提供するトレーサ を作成する。

自動負荷分散機構の実現
KLIC においては計算負荷の分散はプログラマの「プラグマ」による指定 によって行なっている。この方式は、単純な自動負荷分散が困難なプログラム に対して、解法アルゴリズムに沿った適切な負荷分散を指定できるという利点 を持っている一方、プログラマの負担が大きくなる欠点を持っていた。

そこで、プログラマがある負荷分散についてある程度のヒントをプログラム中 に指定することによる、半自動的な負荷分散機構を設計し、そのための管理ア ルゴリズムを設計、実装を通じて評価する。

上位レベル言語の設計
KLIC では、プロセス群がメッセージを交換し合うようなプログラミング・ スタイルによって、大規模なソフトウェアの構築にも耐えるシステムとなって いる。しかし、このようなスタイルを用いても、各プロセスの実現については、 良く似た機能を持つプロセスの記述などにおいて、特段の支援機構を持ってい ない。

そこで、良く似た機能を持つプロセスの記述のために有益な、継承機構を持つ ような簡易な上位レベル言語を設計、実装を通じてその設計を評価、実行時シ ステムの改良・拡張の方向性を探る。



www-admin@icot.or.jp