プロセス計算
[Wikipedia|▼Menu]

プロセス計算(プロセスけいさん、: Process calculus)またはプロセス代数(プロセスだいすう、: Process algebras)は、計算機科学において並行システムを形式的にモデリングする各種手法の総称。プロセス計算は、独立エージェントやプロセスの集まりにおける相互作用/通信/同期を抽象的に記述するツールである。また、プロセス記述を操作・分析可能にする代数学的規則も提供し、プロセス間の等価性について(双模倣性を使った)形式的推論を可能とする。主な具体例としては、CSP、CCS、ACP がある[1]。近年ではこれら以外に π計算(英語)、アンビエント計算、PEPA などもある。
基本機能

プロセス計算には非常に様々な手法が存在するが(分子の相互作用の研究に特化し、確率論的振る舞いやタイミング情報を扱うものもある)、全てのプロセス計算に共通する機能もいくつか存在する[2]

独立したプロセス間の相互作用を、共有変数の更新ではなく通信(メッセージパッシング)として表現する。

プロセスやシステムの記述に少数のプリミティブとそれらプリミティブを組み合わせた演算子を使う。

プロセス演算子の代数学的規則を定義し、プロセスの表現を方程式を解くように操作可能とする。

プロセスの数学

プロセス計算を定義するには、通信手段を提供することを目的とした「名前(name)」または「通信路(channel)」を始点とする。多くの実装で、通信路内には効率向上のための複雑な構造があるが、理論モデルではそれらは抽象化によって消え去る。名前に加えて、古いプロセスから新たなプロセスを形成する手段が必要である。そして、以下のような演算子が一般に存在する[3]

プロセス群の並列合成(parallel composition)

データの送受信にどの通信路を使うかの指定

相互作用の逐次化

相互作用点の隠蔽

再帰またはプロセス複製

並列合成

2つのプロセス P {\displaystyle {\mathit {P}}} と Q {\displaystyle {\mathit {Q}}} の並列合成は P 。 Q {\displaystyle P\vert Q} のように記述され、逐次型計算モデルとプロセス計算の重要な違いとなっている。並列合成は P {\displaystyle {\mathit {P}}} と Q {\displaystyle {\mathit {Q}}} における計算を同時並行的かつ独立に進めることを可能にする。しかし同時に相互作用も可能で、同期や P {\displaystyle {\mathit {P}}} から Q {\displaystyle {\mathit {Q}}} (あるいは逆)への通信路による情報の受け渡しが可能である。エージェントやプロセスは1度に複数の通信路と接続可能である。

通信路は同期型と非同期型がある。同期通信路の場合、メッセージを送ったエージェントは相手がそのメッセージを受け取るのを待つ。非同期通信路ではそのような同期は不要である。一部のプロセス計算(特にπ計算)では、通信路そのものをメッセージとして(他の)通信路経由で送信することができ、プロセス間の連結トポロジーを変更できる。また一部のプロセス計算では、計算途中に通信路を生成することができる。
通信

相互作用は情報の流れる方向が決まっている場合が多い。すなわち、入力と出力は双対的相互作用プリミティブとして区別される。プロセス計算では一般に入力演算子(例えば x ( v ) {\displaystyle x(v)} )と出力演算子(例えば x ⟨ y ⟩ {\displaystyle x\langle y\rangle } )を定義して、それらを区別する。これらには相互作用点として名前がつけられ(ここでは x {\displaystyle {\mathit {x}}} )、双対的相互作用プリミティブとして同期に使われる。

情報を交換するには、出力プロセスから入力プロセスに情報が流れるということになる。出力プリミティブには送信すべきデータを指定する。 x ⟨ y ⟩ {\displaystyle x\langle y\rangle } の場合、 y {\displaystyle {\mathit {y}}} がそのデータである。同様に入力はデータを受信することを期待し、1つ以上の束縛変数を受信データと置換するためのプレースホルダーとして用いる。 x ( v ) {\displaystyle x(v)} の場合、 v {\displaystyle {\mathit {v}}} がそれである。一回の相互作用で交換できるデータの種類の選択は、個々のプロセス計算の大きな特徴の1つである。
逐次合成

場合によっては、相互作用を時間的に順番に行いたいことがある。例えば、「まず x {\displaystyle {\mathit {x}}} でデータを受信し、そのデータを y {\displaystyle {\mathit {y}}} に送信する」というようなアルゴリズム記述はよくある。逐次合成(Sequential composition)はそのようなプロセスで使われる。これは他の計算モデルでもよく使われる。プロセス計算では逐次化演算子は一般に入力や出力と結びついていることが多い。例えば、プロセス x ( v ) ⋅ P {\displaystyle x(v)\cdot P} は、入力を x {\displaystyle {\mathit {x}}} で待ち受ける。そして入力があったときだけプロセス P {\displaystyle {\mathit {P}}} を起動し、その際に受信データは x {\displaystyle {\mathit {x}}} によって識別子 v {\displaystyle {\mathit {v}}} と置換されている。
リダクション意味論

プロセス計算の計算の本質を含む操作的リダクション規則は、並列合成、逐次化、入力、出力のみで与えられる。リダクションの詳細は個々のプロセス計算で異なるが、本質はほぼ同じである。リダクション規則は次の通りである。 x ⟨ y ⟩ ⋅ P 。 x ( v ) ⋅ Q ⟶ P 。 Q [ y / v ] {\displaystyle x\langle y\rangle \cdot P\;\vert \;x(v)\cdot Q\longrightarrow P\;\vert \;Q[^{y}\!/\!_{v}]}

このリダクション規則は次のように解釈される。
プロセス x ⟨ y ⟩ ⋅ P {\displaystyle x\langle y\rangle \cdot P} はメッセージ y {\displaystyle {\mathit {y}}} を通信路 x {\displaystyle {\mathit {x}}} に送出する。双対的に、プロセス x ( v ) ⋅ Q {\displaystyle x(v)\cdot Q} は通信路 x {\displaystyle {\mathit {x}}} でメッセージを受信する。

メッセージが送信されると x ⟨ y ⟩ ⋅ P {\displaystyle x\langle y\rangle \cdot P} はプロセス P {\displaystyle {\mathit {P}}} となり、 x ( v ) ⋅ Q {\displaystyle x(v)\cdot Q} はプロセス Q [ y / v ] {\displaystyle Q[^{y}\!/\!_{v}]} となる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:22 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef