学位論文要旨



No 213383
著者(漢字) 脇田,建
著者(英字)
著者(カナ) ワキタ,ケン
標題(和) 継続と並行トランザクション : 並行計算のための抗張可能な言語機構
標題(洋) Continuations and Concurrent Transactions : Extensible Language Constructs for Concurent Computing
報告番号 213383
報告番号 乙13383
学位授与日 1997.05.26
学位種別 論文博士
学位種類 博士(理学)
学位記番号 第13383号
研究科
専攻
論文審査委員 主査: 東京大学 教授 米澤,明憲
 東京大学 教授 辻井,潤一
 東京大学 教授 萩谷,昌己
 東京大学 講師 品川,嘉久
 東京工業大学 助教授 柴山,悦哉
内容要旨

 ハードウェア技術の進展、ネットワーク環境の整備、インターネットへの容易な接続などの環境の変化に伴い、分散環境において質の高いアプリケーションを効率的に開発することが求められている。分散環境下でのプログラミング作業は、並行性、同期、通信などに配慮せねばならず、従来の逐次的プログラミングに比べて著しく困難である。したがって、効率的に分散プログラミングを行うためには、これらの事象を考慮して設計されたプログラミング言語、すなわち、分散プログラミング言語の利用が必須である。

 分散プログラミング言語に関する研究の成果にはめざましいものがある。しかし、依然として分散プログラミングは非常に困難であり、さらなる研究が必要な段階にある。分散プログラミングを困難にする主因に分散アプリケーションが要求するセマンティクスと分散プログラミング言語が提供する機能のセマンティクスの間の大きなギャップがある。本研究ではこのギャップを小さくすることを目標として、並行オブジェクトモデルに基づく核言語に、拡張可能な言語機構を与えること及び大域的な言語機構を与えることの二点よりアプローチした。

 核言語に拡張性を与えるための枠組みとしては一級継続(first class continuation)の概念を導入することを提案する。継続(continuation)は、逐次言語の制御構造のセマンティクスを与えるために表示的意味論の研究において編み出された概念である。Schemeに代表されるプログラミング言語では、継続を関数として扱える機能、すなわち一級継続を取り入れた。このことにより、プログラマは任意の制御構造をプログラミング言語に付加できるようになった。本研究では、並行オブジェクトモデルに一級継続の概念を取り入れることによって、プログラマが並行プログラミング言語に任意の制御構造及び任意の通信機構を追加できる枠組みを構築した。このために、並行オブジェクト指向モデルに内在する二種の計算、すなわちメソッド実行とメッセージ通信に対応した二種の一級継続機構、すなわちメソッド継続(method continuation)とメッセージ継続(message continuation)を提案する。

 メソッド継続は、従来の一級メッセージ機構に同期のセマンティクスを付加したものである。メソッド継続を利用することによって、任意の制御構造を核言語に付加できるようになる。メソッド継続の関数的な振舞いは従来の継続と同様であるために、従来の継続プログラミングをそのまま応用することができる。これに加えて、並行動作するオブジェクト間で一級継続を受け渡すことにより、明示的なコンテキスト切り替え、柔軟な割り込み機構などのような、より複雑な分散制御構造を実現することが可能となる。

 メッセージ継続の枠組みは、送信中のメッセージがメッセージ送信の継続を表現していることに着目して考案した。この枠組みでは、通信形態を抽象化するCommunicatorという概念を導入した。Communicatorは核言語にあらたにプログラマ定義のメッセージ送信の文法を追加するとともに、そのメッセージ送信が実行された際のメッセージの振舞いを定義する。Communicatorでは、送信中のメッセージが一級メッセージ(first class message)として表現されている。この一級メッセージを操作するためにはいくつかの基本プリミティブが提供されている。これらのプリミティブを組み合わせることによってプログラマはさまざまな通信機構の振る舞いを定義し、それらを核言語にユーザー定義の通信機構として追加することができる。例としては、マルチキャスト、未来型通信、Concurrent Aggregates、暗号化メッセージとその複合、通信のモニタリングなどが挙げられる。

 一級継続機構の設計を通して重要な点に枠組みの安全性がある。一般に、プログラミング言語の拡張機能はともするとその強力な記述力が禍して核言語の基本的な性質を破壊しかねない。本提案の一級継続機構では、一級継続の基本操作に同期のセマンティクスを与えることによって、この問題に対して根本的な解を与えている。たとえば、メソッド継続機構はメソッド実行の原子性を保持し、メッセージ継続ではメッセージの同一性を保持する。

 分散アプリケーションの大域的な振舞いの制御は分散プログラミングにおいて重要であるにも関わらず、これまでの研究ではほとんど触れられていない。分散プログラミング言語に大域的な制御機構がないために、現状ではデッドロック処理、分散停止問題、大域的並行性制御などの典型的な分散アルゴリズムをプログラムのモジュール性を維持しつつ記述することはほとんど不可能である。本研究では、データベースのトランザクション機構を並行計算モデルに導入することによって大域的な制御を可能とする枠組みを与える。

 トランザクション機構は分散データベースの研究で提唱された並行性制御機構である。データベース内の各処理はそれぞれ独立したトランザクションとよばれる逐次実行列として扱われる。トランザクションの論理的な振舞いは原子的に実行される相互に干渉しあわない並行実行単位として特徴づけられる。この並行性制御の仕組みは大域的な同期を実現しているので、上述の問題に対してエレガントな解を与えると期待される。しかし、データベースのトランザクション機構はトランザクション内部の並行性については扱っておらず、これをそのまま並行計算に応用することはできない。本論分で提案する並行トランザクションモデルはトランザクション機能を並行プログラミング言語で利用できるように設計された新たなトランザクションモデルである。

 並行トランザクション機構を用いるとプログラマは任意のプログラム断片を並行トランザクションとして宣言できる。並行トランザクション機構はこのプログラム断片の実行に対して他の並行実行プロセスに対して、原子性と孤立性を保証する。従来のトランザクションシステムとの大きな違いはトランザクション内部に並行性を許す点、およびトランザクションの入れ子を許す点である。前者は核言語が並行言語であること、後者は再帰的なメソッド呼び出しの中でトランザクションが再帰的に呼び出され得ることに起因しており、いずれも並行言語にトランザクション機構を融合する上で必要不可欠な性質である。

 並行トランザクションの原子性と孤立性は、プログラマにトランザクションの内部の実行が仮想的に他の並行プロセスから完全に隔離された環境で実行されているかのような幻想を与える。したがって、プログラマはトランザクション外部で実行しているプロセスとの並行性制御については考慮する必要がなくなり、同期制御の問題をトランザクション内部に局所化できるために、問題の分析が大幅に容易になるとともに、同期の記述が簡潔になる。具体的な応用例としては、デッドロックの回避、並列探索問題、分散スナップショットの作成、大域的並行性制御などがあげられる。

 並行トランザクションを実装する上では、並行性、ネストの導入に伴い、従来のトランザクションシステムの並行性制御の仕組みに加えて分散終了判定、脱出操作の遅延、ネストしたトランザクション間の並行性制御、非トランザクションとトランザクション間の並行性制御などが必要となる。これに対して、マルチバージョンを用いた、二層施鍵方式を拡張したアルゴリズムを用いて並行トランザクションが実現できることを示した。

 一級継続と並行トランザクションは互いに直行した概念である。したがって、両者を一つのシステムに統合することが可能である。このことによって、トランザクションの内部でユーザー定義の制御構造や通信機構を利用できるばかりでなく、ユーザー定義の制御構造や通信機構の定義の中でトランザクションを用いることで、原子的な制御構造や原子的な通信機構の構築が可能となる。

 このように統合されたシステムの実装機構はかなり複雑である。実際、通常はトランザクション機構の実装については、並行性制御、コミット処理、ログの管理などが別個に語られており、システム全体の振る舞いを把握することが困難である。これに対して、核言語の操作的意味を拡張する形で一級継続機構と並行トランザクション機構の操作的意味を与えた。これによって、並行計算、一級継続、トランザクションの意味を統合的に扱い、簡潔な記述を与えた点は本研究の重要な成果の一つである。

審査要旨

 コンピュータのハードウエア技術の進展、ネットワーク環境の整備、インターネットへの容易な接続などの環境の変化に伴い、分散環境におけるプログラミングの重要性が強く再認識されている。分散環境下でのプログラミング作業は、並行性、同期、通信などに配慮せねばならず、従来の逐次的プログラミングに比べて著しく困難である。この困難さを軽減し、良い分散ソフトウエアを効率良く構築するためには、適切に設計された分散・並行プログラミング言語が必要とされる。

 並行・分散プログラミングを困難にする主因に、並行・分散アプリケーションが要求するセマンティクスと並行プログラミング言語が提供する機能のセマンティクスの間の大きなギャップがある。本研究では、このギャップを小さくすることを目標として、並行オブジェクトモデルに基づく核言語に、(1)拡張可能な言語機構を与えること及び、(2)大域的な言語機構を与えることの二点よりアプローチしている。

 本論文は7章よりなっている。第1章は序論で、研究の背景や研究成果などが述べられている。第2章では、本研究で提案される並行プログラミング言語の核となり、また後の理論的解析や考察の枠組を提供する並行核言語を与えている。

 第3章では、並行・分散言語に拡張性を与えるための枠組みとして一級継続(first class continuation)の概念の導入を提案している。継続(continuation)は、逐次言語における制御構造のセマンティクスを与えるための表示的意味論の研究から得られた概念で、Schemeに代表されるプログラミング言語では、継続を関数として扱える機能、すなわち一級継続を取り入ている。この結果、プログラマは任意の制御構造をプログラミング言語に付加できるようになった。本研究では、並行オブジェクトモデルに一級継続の概念を取り入れることによって、プログラマが並行・分散プログラミング言語に任意の制御構造及び任意の通信機構を追加できる枠組みを構築した。そこでは、並行オブジェクト指向モデルに内在する二種類の計算、すなわちメソッド実行とメッセージ通信に対応した二種類の一級継続機構、(1)メソッド継続(method continuation)と、(2)メッセージ継続(message continuation)を提案している。

 メソッド継続は、従来の一級メッセージ機構に同期のセマンティクスを付加したもので、メソッド継続を利用することによって、任意の制御構造を核言語に付加可能にする。メソッド継続の関数的な振舞いは従来の継続と同様であるために、従来の継続プログラミングをそのまま応用することができる。これに加えて、並行動作するオブジェクト間で一級継続を受け渡すことにより、明示的なコンテキスト切り替え、柔軟な割り込み機構などのような、より高度な並列・分散制御構造を実現することが可能となる。

 メッセージ継続の枠組みは、送信中のメッセージがメッセージ送信の継続を表現していることに着目し考案されている。この枠組みでは、通信形態を抽象化するCommunicatorという概念を導入している。Communicatorは、核言語に新たにプログラマ定義のメッセージ送信の文法を追加するとともに、そのメッセージ送信が実行された際のメッセージの振舞いを定義する。Communicatorでは、送信中のメッセージが一級メッセージ(first class message)として表現されている。この一級メッセージを操作するためには幾つかの基本プリミティブが提供されている。これらを組み合わせることによって、マルチキャスト、未来型通信、Concurrent Aggregates、暗号化メッセージとその復号、通信のモニタリングなどが簡潔に記述できる。

 第4章では分散アプリケーションの大域的な振舞いの制御記述に関して、並行トラザクションという概念を提案している。この概念は並行・分散プログラミングにおいて重要であるにも関わらず、これまでの研究ではほとんど触れられていない。並行・分散プログラミング言語に大域的な制御機構がないために、現状ではデッドロック処理、分散停止問題、大域的並行性制御などの典型的な分散アルゴリズムを、プログラムのモジュール性を維持しつつ記述することはほとんど不可能である。本研究では、データベースのトランザクション機構を並行計算モデルに導入することによって大域的な制御を可能とする枠組みを与えいる。

 並行トランザクション機構を用いるとプログラマは任意のプログラム断片を並行トランザクションとして宣言できる。並行トランザクション機構は、このプログラム断片の実行に対して、他の並行実行プロセスが存在する場合に、原子性と孤立性を保証する。従来のトランザクションシステムとの大きな違いはトランザクション内部に並行性を許す点、およびトランザクションの入れ子を許す点である。

 第5章では、上で与えたトランザクション機構の操作的意味論を与えている。一級継続と並行トランザクションを統合したシステムの実装機構はかなり複雑である。実際、通常はトランザクション機構の実装については、並行性制御、コミット処理、ログの管理などが別個に語られており、システム全体の振る舞いを把握することが困難である。本章では、これに対して、核言語の操作的意味を拡張する形で一級継続機構と並行トランザクション機構の操作的意味を与えた。これによって、並行計算、一級継続、トランザクションの意味を形式理論としても統合的に扱うことが可能となった。

 第6章では一級継続と並行トランザクションの両者を一つのシステムに統合するこに関する、様々な議論を展開している。特に、トランザクションの内部でユーザ定義の制御構造や通信機構が利用可能になることや、ユーザー定義の制御構造や通信機構の定義の中でトランザクションを用いることで、原子的な制御構造や原子的な通信機構の構築が可能となることを指摘している。

 第7章は、本研究の成果をまとめとともに、研究の今後の展開に関して幾つかの可能性を示唆している。

 以上要するに、本論文は、並行・分散アプリケーションプログラムを記述する並行・分散プログラミング言語において、記述の容易さや簡潔さを可能にする言語拡張機構に関する二つの新しいアプローチを提案し、その形式意味論を含めた深い考察を行なっており理学上の貢献が大きい。よって本論文は理学博士を与えるにふさわしいものであると審査員全員一致で判定した。

UTokyo Repositoryリンク