キーワードのまとめです。
4. コンカレントプログラミング
コンカレントプログラミング
- 複数の計算あるいはアルゴリズムを、同一期間に同時実行させつつ相互に同調(コンカレント)させて、次の期間開始までに互いに完遂させるという計算形態
抽象データタイプ
- タイプの名称の定義、それに許される操作と内部構造によって定義される
集中型システム
- 一つのコンピュータなどにのみ機能を依存している処理形態
分散型システム
- 複数のコンピュータなどに分散して機能を持たせる処理形態
プロセス統合機構の使いやすさ
- プロセス統合機構のモジュール化の容易さ
プロセス統合機構の表現能力
- プロセスがリソースをアクセスして良いかどうかの条件を記述する能力
- 表現能力は基本的には以下の二つの要素で決まる
- 条件記述に許される演算の完全度
- 条件記述に用いることのできる情報の種類
ガーデドコマンド
- ガードは一種の命題であり、コマンドが実行される前に真でなければならない
select文
- select文が現れると全てのガードが評価され、値が真である分岐の一つが選ばれて実行される
パイプ
- メッセージの流れ路
ストリーム
- メッセージの流れ路
チャネル
- メッセージを伝達する媒介
ポート
- メッセージを伝達する媒介
入出力文
- プロセス間のデータ転送命令
入出力スーパバイザ
- データチャネルおよび入出力機器のモニタ
- データチャネルや入出力機器の使用を制御するとともに、チャネルと入出力機器のスケジュリングを行う
ロッキング
- MVSに後になって採用された手法
- ロックはBOOLEANセマフォアpp
メッセージ転送
- オブジェクト間、またはプロセス間で情報を転送すること
モジュール化
モニタ
- オブジェクトモデルの一つの実現法
- 主に集中型システムにおけるリソース管理に用いられる
- 抽象データタイプにリソース管理に有効な機能と制約を備えたもの
条件変数
- 待ち状態の理由を区別するため、”条件”という変数の型を導入している
- 条件変数は、プロセスの待ち行列として実現する
wait
signal
多重モニタコール
- モニタが別のモニタのプロシージャを呼ぶこと
- 問題点として、デッドロックの可能性がある
- 対策としては以下の方法がある
- 多重呼び出しを必要としないようにオペレーティングシステムの構造を定める
- プロセスが待ち状態に入った時、そのプロセスが保有している全てのモニタの所有を解除する
- モニタ内にホール(モニタの所有が解除されてプログラムを自由に一時停止できる場所)を許す
- 対策としては以下の方法がある
非確定性
- select文で記述できる
- select文が現れると全てのガードが評価され、値が真である分岐の一つが選ばれて実行される
- もし複数の分岐が真である場合にはどれかが適当に選ばれる
オブジェクトモデル
パス表現
- モニタ機構の概念に基づき、宣言的にプロセス同期を指定する方式
- パスPascalの基本命令
- ; 順序指定、プロシージャの実行は指定された順番で行えわなければならないことを規定
- n:() リソースの制限、最大n個の同時実行が許されることを規定する
- [] リソースの同時アクセス、[]内のプロシージャをどれかのプロセスが実行している限り、他のプロセスは[]内のプロシージャを同時に実行できることを示す
優先度
リモートプロセデュア・コール
- 他のプロセスで定義されているプロシージャをリモートプロシージャという
DP
- distributed process
- プロセス間通信をプロシージャで行う
CSP
- communicating sequential process
- 出力(入力)コマンドの実行完了を別のプロセスの入力(出力)コマンドが実行されるまで待たせることにより同期を行う
Adaタスキング
- Adaは抽象データ型を本格的に支援する汎用プログラミング言語
- 並列処理を本格的に支援する初めての汎用言語でもある
Adaのランデブ
- Adaのプロセス同期機構
スケジュリング
- Adaではユーザーが制御できる待ち行列はエントリ待ち行列のみであり、それらはFCFS(到着順)方式に基づいて処理される
- したがって優先度はユーザがwhen条件を用いて記述しなければならない
タイムアウト
- delay文で記述する
select
accept A(...) do
...
end;
or
accept B(...) do
...
end;
or
delay 5*MINUTES --タイムアウト
...end select;
プロセス故障
- プロセス統合機構は、一つのプロセスの故障が他のプロセスに波及しないようにすべきである
- プロセスの故障に関しては以下が重要
- プロセスの故障検出
- 故障からの回復
- 故障検出は以下の2種類の例外処理を規定するのが現実的な方法
- 応答を返さないプロセスを検出するためのタイムアウト機能
- プロセス進行中に生じる演算や処理の例外