Inter User Communication Vehicle(IUCV)は、 IBMのVMシリーズオペレーティングシステムにおけるデータ転送メカニズムです。1980年にVM/SPリリース1で導入されました。[ 1 ]
IUCVは、2台の仮想マシン間、または仮想マシンとハイパーバイザーサービス間のポイントツーポイント通信チャネルの確立を可能にします。実質的に、IUCVは仮想マシン間のメッセージベースの通信形態を提供します。これは、後に分散システムで登場した、ネットワーク接続された物理マシン間のクライアント/サーバー通信を予見したものです。
IUCV は CP (VM ハイパーバイザー) によって実装され、セッションの確立、メッセージの受け渡し、フロー制御のあらゆる側面を制御します。
IUCVの基礎
IUCVの初期化
仮想マシンがIUCVサービスを使用するには、まず、CPが保留中の情報やステータスに関する情報を格納できるアドレス空間内の領域のアドレスを指定する必要があります。そのため、DECLARE BUFFERまずメソッドを呼び出す必要があります。
IUCVパス
IUCV用語では、2つのエンドポイント間のセッションはPATHと呼ばれます。セッションは各エンドポイントでPath IDによって識別されます。Path IDは、セッションエンドを所有する仮想マシンにのみ関連します。パスは常に接続されたチャネルであり、コネクションレス型のパスは存在しません。
道を確立する
パスを確立するには、開始仮想マシンがCONNECTメソッドを呼び出して、パス ターゲット ID を指定する必要があります。パス ターゲット ID は、別の仮想マシン名またはCP システムサービスの名前のいずれかです。これらはすべて '*' 文字で始まりますが、この文字は仮想マシン名では有効な文字ではありません。
ターゲットが IUCV 自体を初期化している場合、ターゲットには保留中の着信パス接続が通知され、その後、メソッドACCEPT(パスの確立を完了する) またはSEVERメソッド (保留中のパスを効果的に閉じる) のいずれかを使用できます。
パスが確立されると、2 つのパス エンドポイント間でメッセージを渡すことができます。
IUCVメッセージ
IUCV メッセージは境界付きで、つまり始まりと終わりを持ちます。エンドポイントへのパス上で複数のメッセージが保留中の場合、IUCV はメッセージをマージしません。
メッセージはメソッドを用いてパス上に送信されますSEND。その後、もう一方のエンドポイントはメソッドを用いてメッセージを受信できますRECEIVE。元のメッセージが応答を要求していた場合、受信側のエンドポイントはメソッドを用いてREPLY応答を送信します。
フロー制御
パス上で複数のメッセージを保留状態にすることができます。パス上で保留可能なメッセージ数はパス確立時に指定されますが、65535を超えることはできません。保留メッセージの上限に達したパス上でメッセージを送信しようとすると、エラーが発生します。
一時停止と再開
このメソッドを使用することで、データ転送を一時的に中断することができますQUIESCE。パスが中断されている間は、RESUMEパスを最初に中断した仮想マシンによってこのメソッドが呼び出されるまで、そのパス上でのメッセージ転送は許可されません。
投票
仮想マシンは、メソッドTEST MESSAGEとTEST COMPLETIONメソッドを使用してIUCV通知をポーリングできます。保留中の通知がない場合、仮想マシンはさらに情報が利用可能になるまで待機します。
明示的なパス終了
どちらかのエンドポイントがこのSEVERメソッドを発行すると、パスは切断(クローズ)状態になり、もう一方のエンドポイントに通知されます。この時点では、パス上で新しいメッセージは送信できませんが、もう一方のエンドポイントは保留中のメッセージを取得することは可能です。もう一方のエンドポイントもこのSEVERメソッドを発行すると、パスは事実上切断されます。
暗黙的なパス終了
パスが暗黙的に閉じられるのは、
- 仮想マシンがログオフする
- 仮想マシンがリセットされる
- 仮想マシンは、
RETRIEVE BUFFERメソッドを使用してIUCV操作を終了します。
どちらの場合でも、パスのもう一方の端では、動作は明示的なパス終了と同じになります。
IUCVの使用
B2F0命令
IUCVメソッドは、'B2F0'x命令を用いて呼び出されます。この命令は、仮想スーパーバイザ状態(例えばゲストスーパーバイザ)で呼び出されなければならず、呼び出されない場合はオペレーション例外プログラム割り込みが生成されます。この命令は、CPによってIUCV要求として解釈されます。
IPARML
IPARMLはIucv PARaMeter Listの略です。これは、呼び出されるメソッドとそのパラメータを記述する 制御ブロックです。B2F0命令が完了すると、CPによっていくつかのフィールドが変更され、B2F0命令の完了ステータスが示されます。
通知
CPは、外部割り込みコードX'4000'を仮想マシンに保留させることで、保留中のメッセージまたはステータス情報を仮想マシンに通知します。割り込みが発生すると、保留中のステータスに関する情報が、メソッドで指定されたアドレス位置に提供されますDECLARE BUFFER。
マクロ
CPマクロ
CP には、命令や IPARML への入力を含む適切なコードを生成する特定のマクロ (IUCV) があり、これにより、このようなメソッドに関するパラメータの詳細をデフォルトに設定したり、競合をチェックしたりすることができます。
CMSマクロ
CMS は IUCV アプリケーション要求を処理できます。CMS には独自の IUCV マクロセット (CMSIUCV) があり、これにより複数のアプリケーションが仮想マシン内で IUCV 機能を共有できるようになります。
承認
一部の IUCV 機能へのアクセスは、CP ディレクトリ (仮想マシンとその仕様のリスト) 内のステートメントによって制御されます。
IUCV ALLOW仮想マシンは、directory ステートメントを介して他のすべての仮想マシンからの通信を受け入れることを許可したり、IUCV ANYステートメントを介して他の任意の仮想マシンとの通信パスを確立することができます。また、IUCV ステートメントで仮想マシン名を指定することにより、仮想マシンが他の特定の仮想マシンへのパス接続要求を発行することを許可することもできます。例:IUCV TARGETVMデフォルトでは、ユーザーは常に自分自身に接続できます。
IUCV ステートメントは、IUCV 接続に対する CP によるアクセス制御を制御します。さらに、仮想マシンは接続試行を拒否することで独自のアクセス制御を適用できます。
IUCVの使用例
CPシステムサービス
CP システム サービスは、それ自体は仮想マシンではないが、仮想マシンがハイパーバイザー機能を非同期的に実行したり、特定のハイパーバイザー機能にアクセスしたりできるようにする IUCV エンドポイントです。
いくつかの例を挙げると
- *MSG:メッセージシステムサービス。仮想マシンがIUCVを介して、'CP MESSAGE'やコンソールI/Oの結果など、特定の仮想マシンコンソール出力を受信できるようにします。これは、PROP(The PROgrammable Operator)やフルスクリーンCMSなどのVMサブシステムで使用されます。
- *SPL: スプールファイルへの非同期アクセスを可能にします。RSCS (リモートスプール通信サブシステム)は、このシステムサービスを使用するアプリケーションの一例です。
GCS
VMのGCS(グループ制御システム)は、IUCVを使用して仮想マシン間の共有メモリ領域のメンテナンスを行います。暗黙的なパス終端を使用することで、GCSリカバリ仮想マシンは、グループに参加したものの予期せず離脱した仮想マシンが共有領域に対して保持していたロックが適切に解除されることを保証できます。
VM TCP/IP
VM TCP/IP(VM用TCP/IPスタック)はIUCVを使用して、仮想マシンがソケット操作を実行できるようにしたり、仮想マシンがネットワークインターフェースとして動作してTCP/IPスタックとの間でフレームまたはデータグラム全体をやり取りできるようにしたりします。LinuxのS/390およびz/Architecture実装では、この機能を使用してVM TCP/IPスタックへのネットワークインターフェースを実装しています。
参照
参考文献
- ^ Thompson, Samuel A. 「CMSでのIUCVの使用」(PDF) . SHARE . 2019年8月17日閲覧。