チャネルプログラムの実行

IBM メインフレーム オペレーティング システムではチャネル プログラム実行( EXCP ) は、低レベルのデバイス アクセス用のシステム コールを生成するマクロであり、スーパーバイザー コール命令として実装されています。この場合、プログラマは、I/O チャネル、制御ユニット、およびデバイスによって実行されるチャネル プログラム(デバイス固有のコマンド (CCW) のリスト) を提供する必要があります。[1] [2] OS/360 および後継機種の EXCP [3] [4]については、『OS システム プログラマーズ ガイド』でより具体的に説明されています。[5] DOS/360 および後継機種の EXCP [6]については、『DOS スーパーバイザーおよび I/O マクロ』でより具体的に説明されています。[7] [8]この記事は主に OS/360 からz/OSまでを対象としていますが、TOS/360 およびz/VSEから DOS/360 までの詳細が一部異なります

データセットの指定

EXCPを使用すると、レガシーデバイスとレガシーデータセットを比較的高いパフォーマンスで操作できます。EXCPデバイスは、 OSの場合はデータ制御ブロック(DCB)を、DOSの場合はDTFPHを指定することにより、OPEN(つまり、アプリケーションで使用可能)になります。

I/O操作の指定

OS/360 から z/OS まで、プログラムはEXCP に入出力ブロック(IOB) を提供します。プログラムが複数の IOB に対して EXCP を実行する場合、システムは要求された順序でそれらを処理します。DASD の場合、IOB にはシークアドレスIOBSEEKが含まれます。このアドレスは MBBCCHHR という形式で表されます。ここで、M はエクステント、BB はデータセルのビン、CCHH はシリンダとヘッド、R はレコード番号です。

付属肢

「アペンデージとは、チャネル・プログラム実行中の入出力操作に対する追加制御を提供するプログラマ作成ルーチンである。」[9]アペンデージの包括的なリスト[10]EXCPコンテキストでは出口)により、許可プログラム[a]は、多くのシステム・セキュリティーおよびデータ整合性チェックをオーバーライドまたは拡張することができます。これらのアペンデージのほとんどは、OSの以前のインスタンスとの互換性のためにサポートされていますが、いくつかのアペンデージの機能はMVS用に変更または拡張されています。アペンデージは、DCBにおいてモジュール名IGG019xxの最後の2文字として指定されます(xxはWAからZ9まで)。これらのモジュール名は、インストール時に作成されるアペンデージ用に予約されています。IGG019xx形式のその他の名前は、IBMアクセス方式で使用するために予約されています。[b]アペンデージは、SYS1.SVCLIB(SVS以降のOSインスタンスではSYS1.LPALIB)に格納する必要があります。

データセットの整合性

通常、プログラムが EXCP のために DCB を開くと、OPEN は、関連付けられているデータ・セットの最初のボリュームの各エクステントを含むデータ・エクステント・ブロック(DEB)を作成します。ただし、並列マウントの場合、OPEN は、すべてのボリュームのすべてのエクステントを含む DEB を作成します。各 DEB は DCB に順方向および逆方向にチェーンされており、DCB は保護されていないユーザー・ストレージに常駐するのに対し、DEB は保護されているシステム・ストレージ (サブプール 253) に常駐するため、EXCP はシステム・セキュリティー手段としてチェーンを検査します。OS/VS1 および OS/VS2 では、EXCP は DEBCHK を使用して、DEB が OPEN によって作成されたことを確認します。DASD の場合、EXCP は IOB 内のシーク・アドレスがエクステントの 1 つの中に入っているかどうかを確認し、Set File Maskを使用して、たとえば、エクステントがシリンダー指向かトラック指向か、書き込みが許可されているかどうかを示します。これにより、指定されたトラック (シリンダー) からのシークが防止されます。プログラマがトラック(シリンダ)の終端を超えて読み取りを試みた場合、ユニットチェックが発生し、エラー回復によってチャネルプログラムが現在のエクステントの次のトラック(シリンダ)から再開されます。操作がエクステントの終端を超えた場合、EXCPはエクステントの終端付加を呼び出します。これによりIOBが更新され、EXCPに要求を再発行するか、要求を終了するかが要求されます。

レガシーデータセットのみ

EXCPは、直接アクセス・ストレージ・デバイス・アクセス方式と混同されることがあります。しかし、EXCPは直接アクセス・ストレージ・デバイス専用ではありません。むしろ、あらゆるレガシー・デバイス・タイプとあらゆるレガシー・データセット構成をサポートする、汎用の低レベル・デバイス・アクセス・インターフェースですあらゆるデバイス・タイプとあらゆるデータセット構成にアクセスするために MVS / 370以降のOSインスタンスでは、より汎用的な特権付き Start Input/Outputインターフェース(STARTIO)が利用可能です。ただし、これは公式にはサポートされていません。

直接アクセスデータセットの簡素化された操作

EXCPのバリエーションとして、直接アクセス・ストレージへのアクセスのみに使用され、既存の直接アクセス・ストレージ・レコードの読み取りと更新のために提供される実行直接アクセス・プログラム(XDAP)があります。XDAPはレコードの追加には使用できませんが、BSAMまたはBPAMと併用することで、このようなデータセットへのレコードの追加を実行できます。また、いくつかのOSコンポーネント(特にリンケージ・エディター、IEWL)は、この方法でXDAPを使用しています。

通信機器へのアクセス

EXCP は、エミュレータ モード (EP) またはパーティション エミュレータ モード (PEP )で動作するIBM 2701、2702および2703通信コントローラ、および IBM 370x または Amdahl 470x フロントエンド プロセッサ (およびそれぞれの後継機) に接続された通信デバイスにアクセスするためにも使用できます。

上司との関係

EXCPのフロントエンドは常にタスク制御ブロック(TCB)モードになっています。これはアプリケーションの通常モードです。[12] EXCPはタイプ1 SVCです。

MVS/370以降のOSインスタンスでは、EXCPプロセッサはチャネルプログラムの実行をスケジュールするためにSTARTIOを呼び出します。EXCPプロセッサのバックエンドは常にサービス要求ブロック[c] (SRB)モード[12]ですが、バックエンドにはエミュレーションコードが含まれており、MVS以前のOSインスタンス、特にEXCP用に開発された付属物がほぼ以前と同様に機能し、これらの付属物が元々設計されたTCBモードであるように見えるようにします。この違いにより、特定のロールユアオウンアクセス方式やアプリケーションをMVSに変換することが複雑になる可能性があります。

チャンネルプログラム

System/360チャネルプログラムは、チャネルとI/Oデバイスによって実行される一連のコマンドです。チャネルプログラムは主記憶の任意の場所に配置できます。チャネルプログラムはチャネルコマンドワード(CCW)のシーケンスであり、転送インチャネル(TIC)と呼ばれる分岐が実行されるか、チャネルがステータス修飾子を返さない限り、連続して実行されます。各CCWは、以下のダブルワード(8バイト)です。[13] [d]

ビット0 7 8 31  +--------+------------------------+ |コマンド | データアドレス | +--------+------------------------+ 32 36 40 47 48 63 +------+---+---------+------------+ |フラグ |000|予約済み|カウント | +------+---+---------+------------+

コマンドフィールドの下位ビット(0~7)には、6つのコマンドが定義されています。上位4ビット(または6ビット)は、一部のコマンドの修飾子('M')として使用されるか、無視されます。コマンドは以下のとおりです。

 0100 - センス 1000 - チャネル内転送(TIC) 1100 - 逆から読む --01 - 書き込み --10 - 読む --11 - コントロール

データ アドレス (8-31) は、データの転送先または転送元となる主記憶バッファー領域の 24 ビット アドレスです。

フラグビット(32〜36)は次のように定義されます。

少しID名前説明
32CDチェーンデータこのコマンドを続行するには、次のCCWで指定された記憶領域を使用します。
33CCチェーンコマンドこのコマンドが完了すると次の連続CCWを実行します。CC
またはCDが設定されていない場合、チャネルプログラムはこのコマンドの実行後に終了します。
34SLI長さ表示を抑制するこのコマンドの不正な長さを無視します
35スキップスキップこのコマンドのデータ転送を抑制します
36PCIプログラム制御の割り込みこのコマンドの実行開始時に割り込みを生成する

カウント フィールド (48 ~ 63) は、このコマンドによって転送されるバイト数を示します。

I/O操作を開始するコマンドの8ビットすべてがデバイスに渡されます。「修飾ビットは、コマンドの実行方法をデバイスに指定します。」例えば、IBM 2305 DASDの場合、書き込みコマンド('MMMMMM01'BX)は次の値を持つ場合があります。[17]

ビット値16進数説明
0001 100119X年自宅住所を記入
0001 0101'15'X書き込みレコード0
0001 0001'11'X消去
0001 1101'1D'X書き込み回数、キー、データ
0000 0001'01'X特別なカウント、キー、データを書き込む
0000 0101'05'Xデータの書き込み
0000 1101'0D'Xキーとデータを書き込む

注記

  1. ^ 付属物の使用許可にはいくつかの種類があります。
    • APF 承認を受け、システム (0 ~ 7) キーまたはスーパーバイザー モードで実行されているプログラムは、任意の追加機能を使用できます。
    • プログラムは、アクセス メソッドの使用のために OPEN によって自動的に選択される任意の付加物を使用できます。
    • プログラムはIPL時にIEAAPP00で定義された任意の付加物を使用することができる。[11]
  2. ^ IGG = I/Oサポートコンポーネントのプレフィックス; 019 = オープンSVCサブコンポーネント; xx = サブ機能
  3. ^ OS/360、OS/VS1、SVS には SRB モードはなく、付加物は割り込みが無効な状態で実行されます。
  4. ^ 後継者は追加のフラグとフォーマットを追加します
    動的アドレス変換機能を備えたSystem/370
    チャネル間接データアドレス指定機能[14]と間接データアドレス[15] CCWフラグを追加します。
    システム/370-XA
    31ビットアドレスのフォーマット1 CCW [16]を追加

参考文献

S/360
IBM System/360 Principles of Operation (PDF) (第7版). IBM . 1967年1月. A22-6821-6 . 2019年12月4日閲覧.
S/370
IBM System/370 動作原理(PDF) (第11版). IBM. 1987年9月. GA22-7000-10.
S/370-XA
IBM System/370 - 拡張アーキテクチャー - 動作原理(PDF) (第2版). IBM. 1987年1月. SA22-7085-1.
z/ARCH
z/Architecture - 動作原理(PDF)(第14版). IBM . 2022年5月. SA22-7832-13 . 2019年12月4日閲覧
DFSMSdfp
z/OS バージョン 2 リリース 4 DFSMSdfp 拡張サービス。IBM。20208 月。SC23-6861-40。
  1. ^ レイノ・ハンヌラ (1974). 『コンピュータとプログラミング:System/360-370アセンブラ言語によるアプローチ』ホートン​​・ミフリン. p. 431. ISBN 978-0-395-16796-0
  2. ^ Gopal K. Kapur (1970年1月1日). IBM 360 アセンブラ言語プログラミング. John Wiley & Sons. pp. 453–454, 456–459, 461. ISBN 978-0-471-45840-1
  3. ^ Robert H. Johnson (1989年6月). MVS: concepts and facilities. Intertext Publications. p. 558. ISBN 978-0-07-032673-6
  4. ^ 「第4章 独自のチャネル・プログラムの実行」(PDF) . z/OS バージョン2リリース4 DFSMSdfp Advanced Services (PDF) . IBM. 2020年8月. pp.  151– 210. SC23-6861-40.
  5. ^ IBM System/360 オペレーティング・システム システム・プログラマーズ・ガイド(PDF) . IBM. 1967年3月. C28-6550-2.
  6. ^ Gary A. Stotts (1990年8月1日). DOS/VSE: オペレーティングシステム入門. QED Information Sciences. p. 18. ISBN 978-0-89435-332-1
  7. ^ DOSスーパーバイザとI/Oマクロ(PDF) . IBM. GC24-S037-12.
  8. ^ IBM z/VSE バージョン 6 リリース 1 システムマクロ ユーザーズガイド(PDF) . IBM. 2015. SC34-2709-00. 2019年12月18日時点のオリジナル(PDF)からのアーカイブ。 2019年12月18日閲覧
  9. ^ 「付録」(PDF) . 『OS Data Management for System Programmers - Release 21』(PDF) . IBM Systems Reference Library(第12版). IBM Corporation. 1973年4月. p. 46. GC28-6550-ll . 2022年6月28日閲覧
  10. ^ DFSMSdfp、pp. 199–200、EXCPおよびEXCPVR付録。
  11. ^ DFSMSdfp、pp. 201–202、承認された付録リスト(IEAAPP00)。
  12. ^ ab Software AG. 「Natural zIIP Processing: TCBs, SRBs and Enclaves」 . 2021年3月22日閲覧
  13. ^ S360、pp.84–121、入出力操作。
  14. ^ S370、pp. 13-45–13-46、チャネル間接データアドレス指定。
  15. ^ S370、p. 13-38、チャネルコマンドワード。
  16. ^ S370-XA、p. 15-24-15-25、チャネルコマンドワード。
  17. ^ IBM Corporation (1971年8月). IBM 2835ストレージ制御およびIBM 2305固定ヘッド・ストレージ・モジュールのリファレンス・マニュアル(PDF) . p. 17. 2019年12月5日閲覧
「https://en.wikipedia.org/w/index.php?title=Execute_Channel_Program&oldid=1316777083」から取得