(57)【特許請求の範囲】
【請求項１】
トランザクションのための安全なサブスペースを生成する方法であって、
オペレーティング・システム・タスクから、アプリケーションのアドレス指定を制限するサブタスクを生成するステップを含み、
前記オペレーティング・システム・タスクは、該タスクに関連するディスパッチ可能単位アクセス・リスト（以下「ＤＵ−ＡＬ」と表記）を有し、該ＤＵ−ＡＬは、複数のサブスペース・アドレス環境及びベース・スペースとして定義されたホーム・スペースを含み、
更に、前記サブタスクを生成する際に、該サブタスクに関連するＤＵ−ＡＬを生成するとともに、該ＤＵ−ＡＬ内のホーム・スペースとして前記複数のサブスペース・アドレス環境のうち１つのサブスペース・アドレス環境を定義するステップを含み、
前記サブタスクに関連するＤＵ−ＡＬは、前記ホーム・スペースの定義のみを含む、方法。
【請求項２】
前記サブタスクは第１サブタスクを含み、前記サブスペースは第１サブスペースを含み、該第１サブタスク下で第１アプリケーションが実行され、前記方法は更に、前記生成するステップ及び前記定義するステップを繰り返して第２サブタスクを生成及び定義するステップを含み、該第２サブタスクは該第２サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして第２サブスペース・アドレス環境を有し、該第２サブタスク下で第２アプリケーションが実行される、請求項１記載の方法。
【請求項３】
前記第１アプリケーションまたは前記第２アプリケーションがアクセス・レジスタ・アドレス指定モードで実行されるにもかかわらず、前記第１サブスペースは前記第２アプリケーションから分離され、前記第２サブスペースは前記第１アプリケーションから分離される、請求項２記載の方法。
【請求項４】
前記オペレーティング・システム・タスクと前記第１サブタスクは前記第１サブスペースを共有し、前記オペレーティング・システム・タスクと前記第２サブタスクは前記第２サブスペースを共有する、請求項２記載の方法。
【請求項５】
前記生成するステップ及び前記定義するステップを他のサブタスクがＮ個になるよう繰り返すステップを含み、該Ｎ個のサブタスクはそれぞれ、関連するＤＵ−ＡＬ内のホーム・スペースとして別々のサブスペース・アドレス環境を有し、前記第１、第２及びＮ個のサブタスクのサブスペースはそれぞれ、前記第１、第２及びＮ個のサブタスクの他の任意のサブタスク下で動作するアプリケーションから分離される、請求項２記載の方法。
【請求項６】
前記生成するステップの前に、
前記サブスペースを生成するステップと、
前記オペレーティング・システム・タスクに関連するＤＵ−ＡＬに前記サブスペースを追加するステップと、
前記サブスペース内で動作するアプリケーションによりアクセスできるストレージ範囲を割当てるステップと、
サブスペース・グループ内分岐（ＢＳＧ）を実行して前記サブスペースをアクティブなアドレス指定環境にするステップと、
を含む、請求項１記載の方法。
【請求項７】
前記ＢＳＧを実行するステップは、ＢＳＧ命令を使用して、前記オペレーティング・システム・タスクに関連するＤＵ−ＡＬ内のアクセス・リスト・エントリ（ＡＬＥＴ）を指定することを含む、請求項６記載の方法。
【請求項８】
前記サブタスクは第１サブタスクを含み、該第１サブタスク下で第１アプリケーションが実行され、前記方法は更に、該第１サブタスクから第２サブタスクを生成及び定義するステップを含み、該第２サブタスクは該第２サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして前記１つのサブスペース・アドレス環境を有し、前記サブスペースは前記オペレーティング・システム・タスク、該第１サブタスク及び該第２サブタスクにより共有される、請求項１記載の方法。
【請求項９】
前記サブスペースは第１サブスペースを含み、前記方法は更に、前記生成するステップ及び前記定義するステップを繰り返して、前記オペレーティング・システム・タスクから、第３サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして第２サブスペース・アドレス環境を有する該第３サブタスクを生成及び定義するステップを含み、該第３サブタスク下で第２アプリケーションが動作し、前記第１アプリケーションと前記第２アプリケーションは、アクセス・レジスタ・アドレス指定モードで動作しているにもかかわらず、互いのアドレス環境にアクセスできない、請求項８記載の方法。
【請求項１０】
トランザクションのための安全なサブスペースを生成するシステムであって、
オペレーティング・システム・タスクから、アプリケーションのアドレス指定を制限するサブタスクを生成する手段を備え、
前記オペレーティング・システム・タスクは、該タスクに関連するディスパッチ可能単位アクセス・リスト（以下「ＤＵ−ＡＬ」と表記）を有し、該ＤＵ−ＡＬは、複数のサブスペース・アドレス環境及びベース・スペースとして定義されたホーム・スペースを含み、
更に、前記サブタスクを生成する際に、該サブタスクに関連するＤＵ−ＡＬを生成するとともに、該ＤＵ−ＡＬ内のホーム・スペースとして前記複数のサブスペース・アドレス環境のうち１つのサブスペース・アドレス環境を定義する手段を備え、
前記サブタスクに関連するＤＵ−ＡＬは、前記ホーム・スペースの定義のみを含む、システム。
【請求項１１】
前記サブタスクは第１サブタスクを含み、前記サブスペースは第１サブスペースを含み、該第１サブタスク下で第１アプリケーションが実行され、前記生成する手段及び前記定義する手段は更に、サブタスクの生成及び定義を繰り返して第２サブタスクを生成及び定義し、該第２サブタスクは該第２サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして第２サブスペース・アドレス環境を有し、該第２サブタスク下で第２アプリケーションが実行される、請求項１０記載のシステム。
【請求項１２】
前記第１アプリケーションまたは前記第２アプリケーションがアクセス・レジスタ・アドレス指定モードで実行されるにもかかわらず、前記第１サブスペースは前記第２アプリケーションから分離され、前記第２サブスペースは前記第１アプリケーションから分離される、請求項１１記載のシステム。
【請求項１３】
前記オペレーティング・システム・タスクと前記第１サブタスクは前記第１サブスペースを共有し、前記オペレーティング・システム・タスクと前記第２サブタスクは前記第２サブスペースを共有する、請求項１１記載のシステム。
【請求項１４】
前記生成する手段及び前記定義する手段は、サブタスクの生成及び定義を他のサブタスクがＮ個になるよう繰り返し、Ｎ個のサブタスクはそれぞれ、関連するＤＵ−ＡＬ内のホーム・スペースとして別々のサブスペース・アドレス環境を有し、前記第１、第２及びＮ個のサブタスクのサブスペースはそれぞれ、前記第１、第２及びＮ個のサブタスクの他の任意のサブタスク下で動作するアプリケーションから分離される、請求項１１記載のシステム。
【請求項１５】
前記生成する手段によるサブタスクの生成の前に、
前記サブスペースを生成する手段と、
前記オペレーティング・システム・タスクに関連するＤＵ−ＡＬに前記サブスペースを追加する手段と、
前記サブスペース内で動作するアプリケーションによりアクセスできるストレージ範囲を割当てる手段と、
サブスペース・グループ内分岐（ＢＳＧ）を実行して前記サブスペースをアクティブなアドレス指定環境にする手段と
を備える、請求項１０記載のシステム。
【請求項１６】
前記ＢＳＧを実行する手段は、ＢＳＧ命令を使用して、前記オペレーティング・システム・タスクに関連するＤＵ−ＡＬ内のアクセス・リスト・エントリ（ＡＬＥＴ）を指定する手段を含む、請求項１５記載のシステム。
【請求項１７】
前記サブタスクは第１サブタスクを含み、該第１サブタスク下で第１アプリケーションが実行され、前記システムは更に、該第１サブタスクから第２サブタスクを生成及び定義する手段を備え、該第２サブタスクは該第２サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして前記１つのサブスペース・アドレス環境を有し、前記サブスペースは前記オペレーティング・システム・タスク、該第１サブタスク及び該第２サブタスクにより共有される、請求項１０記載のシステム。
【請求項１８】
前記サブスペースは第１サブスペースを含み、前記生成する手段及び前記定義する手段は更に、前記オペレーティング・システム・タスクから、第３サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして第２サブスペース・アドレス環境を有する該第３サブタスクを生成及び定義し、前記第１アプリケーションと前記第２アプリケーションは、アクセス・レジスタ・アドレス指定モードで実行されるにもかかわらず、互いのアドレス環境にアクセスできない、請求項１７記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想サブスペース内のデータ（プログラムを含む）を同じサブスペース・グループ内のプログラム及び他の仮想サブスペースから分離することによって、コンピュータ・システムの動作の信頼性を高める。本発明は特に、アクセス・レジスタのアドレス指定モードでアプリケーションが実行されているにもかかわらず、サブスペースの分離を保証する。
【０００２】
【従来の技術】
一般に、プログラムとデータのファミリは、関係の面でも実行の面でも相互に絡み合い、異なるプログラム間で高速なスイッチングが欠かせず、ファミリ内でデータベースが共用される。このようなプログラムとデータのファミリは、（オペレーティング・システム下で動作する）ソフトウェア・サブシステムによりサポートされることが多い。サブシステムは通常、同時にファミリ内の多数の異種プログラムやデータベースにアクセスする多数のトランザクションを処理する。例えば、多店舗銀行業務の（窓口と機械の両方の）銀行出納トランザクションでは、（同じデータベース、つまり顧客の口座を共有する）預入プログラムと払出プログラム、与信プログラムとそのデータベース及び他の数多い関連プログラムとデータベースが、同時に使用されることがある。これらは全て、個々のサービス・リクエストにより呼び出される、１組のトランザクション・プログラムにより同時にアクセスされる。
【０００３】
このようなプログラムとデータは、その全てが１つ以上のＣＰＵからアクセスされる単一のアドレス・スペース（ＡＳ）にあるときは、可能な最大速度で利用できることが分かっている。ただし、その後の経験によれば、そのようなプログラムの実行に大きな障害のあることが認められている。それは、実行中のプログラムが不当なストア動作を行うことによって、他のプログラムの一部またはデータベースを消去してしまうことによる。この実行障害により、そのようなシステムに依存する多店舗銀行業務が一時停止する事態が生じている。プログラミング・システムの障害によって業務が一時的に停止することは、業務のスピードとは無関係に、通常は許容されないことである。また不当なストア動作によってシステム障害が発生しないとしても、その結果変更されたデータが無効になり、検出されないまま残る状態も許容できず、プログラム障害を検出することは困難である。
【０００４】
そのようなプログラム障害を防ぐ方法の１つは、異なるプログラム及びデータベースをそのシステム内で相互に分離し、或るプログラムがシステム内の他のプログラムやデータベースにアクセスできないようにすることである。このようなストレージ分離方法の例は、米国特許第５３６１３５６号に見られる。
【０００５】
この従来の特許では、サブスペース・グループと呼ばれる、制限された１グループのアドレス・スペース内のアドレス・スペース間で命令分岐を高速に行うため、ＢＳＧ（Branch in Subspace Group）命令が問題プログラム状態で（例えばアプリケーション・プログラムにより）実行される。サブスペース・グループは、ベース・スペースと任意個数のサブスペースの２種類のアドレス・スペースを含む。サブスペース・グループは、ディスパッチ可能単位（ＤＵ）それぞれに関連する制御テーブル内で設定される。このＤＵ制御テーブルは、ベース・スペースのＩＤ、サブスペース・グループ内の全サブスペースのＩＤを保持するアクセス・リストのＩＤ、ＣＰＵの制御が最後にサブスペースに与えられたかベース・スペースに与えられたかを示すインディケータ及びサブスペース・グループに最後に入力されたサブスペースのＩＤを保持する。ＢＳＧ命令のオペランドは、ターゲット仮想アドレスを保持する汎用レジスタと、該汎用レジスタに関連し且つターゲット・アドレス・スペースを定義するＡＬＥＴ（アクセス・リスト・エントリ・トークン）を保持するアクセス・レジスタとを定義する。ＡＬＥＴは、アクセス・リスト内のターゲット・サブスペースＩＤにインデックスを付け、その時、関連する仮想アドレスは、識別されたターゲット・アドレス・スペース内のターゲット命令を位置指定する。ＢＳＧ命令実行制御装置により、ＢＳＧの分岐がサブスペース・グループ内の命令にのみ制限される。
【０００６】
本発明者は、前記のプロセスに制限があることを発見した。つまり、安全なサブスペース分離は、１次と２次のスペース・アドレス指定についてのみ達成され、実行時にサブスペースがアクティブなとき、アクセス・レジスタのアドレス指定では達成されない、ということである。アクセス・レジスタのアドレス指定の利用を禁止すると、安全なサブスペース環境が得られるが、ＩＢＭ  Ｓ／３９０オペレーティング・システム等の多くのシステム上の、安全なサブスペースの一般的適用性が制限される。ＩＢＭ社は、Ｓ／３９０上で動作し、ＣＩＣＳ（顧客情報管理システム）と呼ばれるトランザクション・マネージャを市場に出している。ＣＩＣＳアプリケーションのＯＴＥ（オープン・トランザクション環境）内でトランザクションを分離するため、サブスペースを使用するというＣＩＣＳの指示は、ＣＩＣＳアプリケーション及び該アプリケーションが呼び出すリソース・マネージャでアクセス・レジスタのアドレス指定が可能な場合を除いて、一貫性がなく、許容できるものでもない。
【０００７】
本発明者は、前記の点を考慮して、サブスペース分離の概念や原理を更に展開し、サブスペースを安全に分離しつつアクセス・レジスタ・アドレス指定モードにおいて同概念や原理を適用できるようにする要請があることを発見した。
【０００８】
【発明が解決しようとする課題】
従来技術の欠点は、実行されるトランザクションのために安全なサブスペースを生成する方法を提供することを通して克服され、また他の利点も得られる。
【０００９】
トランザクションのために安全なサブスペースを生成するシステムが提供される。
【００１０】
【課題を解決するための手段】
実行されるトランザクションのための安全なサブスペースを生成する方法は、オペレーティング・システム・タスクから、アプリケーションのアドレス指定を制限するサブタスクを生成するステップを含み、サブタスクを生成する際に、該サブタスクに関連するディスパッチ可能単位アクセス・リスト（ＤＵ−ＡＬ）を生成するとともに、そのサブスペース・アドレス環境を、該ＤＵ−ＡＬ内のホーム・スペースとして定義するステップを含む。
【００１１】
トランザクションのための安全なサブスペースを生成するシステムは、アプリケーションのアドレス指定を制限するサブタスクをオペレーティング・システム・タスクから生成する手段と、サブタスクを生成する際に、該サブタスクに関連するディスパッチ可能単位アクセス・リスト（ＤＵ−ＡＬ）を生成するとともに、そのサブスペース・アドレス環境を、該ＤＵ−ＡＬ内のホーム・スペースとして定義する手段を備える。
【００１２】
繰り返すが、ここで提供されるのは、アクセス・レジスタ・アドレス指定モードでアプリケーションが実行されているにもかかわらず、安全なサブスペースを保証する方法である。安全なサブスペースが提供する環境下では、サーバ、トランザクション・マネージャまたはワーク・マネージャは、単一のアドレス・スペース内の別々のタスク下で処理される、複数の同時的なユーザ、トランザクションまたはワーク・リクエストからの分離と保護を提供する。サーバまたはマネージャのプログラムとデータは、複数のユーザに共通することがあるが、それでも他のサーバまたは他のアドレス・スペースから分離してプライベートにできる。すなわち、個々のユーザまたはタスクは、サーバやマネージャの機能にアクセスできるが、それぞれのプログラムとデータは分離したままで、個々のタスクに対してプライベートにできる。ユーザまたはタスクのアプリケーションがマルチタスク環境それ自体の生成を求める場合、アプリケーションが生成する追加のタスクは、要求側アプリケーションのサブスペース環境を共有することになるが、それでもその環境は他のユーザ・サブスペース環境から分離し保護される。サーバやワーク・マネージャはまた、自体のプログラムとデータのいくらかを、自体が処理しているユーザやワーク・リクエストから分離して保護するために、かかる機構を利用することもできる。
【００１３】
【発明の実施の形態】
本発明は、一般に、安全なサブスペース分離を達成するサブスペース環境を提供するとともに、安全サブスペースがアクティブなときにアクセス・レジスタ・アドレス指定を可能にする、ソフトウェア構造を定義する。これは、サブスペースのアドレス・スペース番号（ＡＳＮ）の第２テーブル・エントリ起点（ＳＳＡＳＴＥＯ）を保持するように、ディスパッチ可能単位（ＤＵ）のアクセス・リスト・エントリ（ＡＬＥＴ）の内容を定義することによって達成される。その際、１次、２次またはアクセス・レジスタのアドレス指定モードのいずれかでタスク下で動作するプログラムの安全アドレス指定環境で、サブスペース・タスクを生成することができる。
【００１４】
本発明を取り入れ、本発明の機能を利用したコンピューティング環境の実施例を図１に示す。コンピューティング環境１００は、例えばＩＢＭ社のエンタープライズ・システム・アーキテクチャ（ＥＳＡ）／３９０に基づく。ＥＳＡ／３９０については、Enterprise Systems Architecture/390 Principles of Operation、IBM publication No．SA22-7201-04、June 1997を参照されたい。
【００１５】
コンピューティング環境１００は、例えばメイン・ストレージ１０２、中央処理装置（ＣＰＵ）１０４及び入出力（Ｉ／Ｏ）デバイス１０６を含む。
【００１６】
一般に、データやプログラムをメイン・ストレージ１０２にロードするとき、入力デバイス１０６が用いられ、格納されたプログラムやデータにメイン・ストレージからアクセスするためＣＰＵ１０４が用いられる。メイン・ストレージ１０２は、連続した整数（または仮想アドレス）の列であるアドレス・スペース１０８及びストレージのバイト位置に各数を関連する変換パラメータを含む。通常、仮想アドレス１０８の全体は、メイン・ストレージ内にはない。１つ以上のプロセッサによりアクセスされ或いは使用されるプログラムやデータに関連する部分のみメイン・ストレージ内に存在する。
【００１７】
現在ディスパッチされているＴＣＢ（タスク制御ブロック）またはディスパッチ可能単位を保持するアドレス・スペースを、ここではベース・アドレス・スペースまたはベース・スペースと呼ぶ。ＩＢＭ社のＯＳ／３９０オペレーティング・システム（以下「ＯＳ／３９０」と略記）の現行バージョンでは、ベース・スペースは、前記Principles of Operationに詳しく説明されているように、ホーム・アドレス・スペース（ホーム・スペース）に等しい。ただし、他のオペレーティング・システムのベース・スペースは、ホーム・スペースとは区別することができる。また米国特許第５４９３６６１号も参照されたい。
【００１８】
図２は、例えばＩＢＭ社のＳ／３９０システム上で動作する前記のＣＩＣＳトランザクション・マネージャ下で発生するメイン・タスクの実施例を示す。メイン・タスクには、メイン・タスクのアドレス環境を識別するディスパッチ可能単位アクセス・リスト（以下「ＤＵ−ＡＬ」と略記）が関連する。このアクセス・リストは、１次と２次のアドレス指定のほか、ディスパッチ可能単位（例えばタスク、そのディスパッチ可能単位制御テーブル（ＤＵＣＴ））、ＩＢＭ社の出版物"IBM OS/390 MVS Assembler Services Reference"（GC 28-1910-09）に述べられているＡＴＴＡＣＨサービスを通して生成される関連ＤＵ−ＡＬ等）が生成されるときにホーム・スペースのアドレス・スペース・テーブル・エントリ（ＡＳＴＥ）で初期化される、アクセス・リスト・エントリ（ＡＬＥ２）を含む。ホーム・スペースＡＳＴＥにより初期化されたＡＬＥ２によって、アクセス・レジスタ・アドレス指定モードで動作しているプログラムが、ホーム・スペース全体にキー保護機構の境界内でアクセスできる。通常、ホーム・スペースとベース・スペースは、同じ空間を含む。ベース・スペースのアドレス指定範囲は予約でき、別個の範囲を個々のサブスペースに排他的に割当てることができる（前記Principles of Operationで定義されている）。その場合、アクティブなサブスペースで動作しているプログラムのアドレス指定範囲は、その現在のサブスペースに予約された範囲に制限される。ただし、この分離は、プログラムがアクセス・レジスタ・アドレス指定モードで動作しているときにはあてはまらない。アクセス・レジスタ（ＡＲ）修飾アドレス内のＡＬＥＴ２は、ホーム・スペース、すなわちベース・スペース及びサブスペースがアクセス特権を有さない全領域にプログラム・アドレス指定アクセスを与える。前記の通り、この問題のこれまでの解決法は、安全なベース・スペース・モードのとき、アクセス・レジスタ・アドレス指定モードを利用できないように、トランザクション・マネージャを制限することであった。
【００１９】
逆に、ここで提示する解決法は、アプリケーションのアドレス指定を制限するサブタスクを生成することによって、安全なサブスペース分離を達成し、アクセス・レジスタ・アドレス指定を可能にする。具体的には、この生成は、サブスペース・アドレス環境を、サブタスクに関連するＤＵ−ＡＬ内のホーム・スペースとして定義することを含む。サブタスクとそのＤＵ−ＡＬが生成され初期化されるとき、ＡＬＥ２値を、ホーム・スペースＡＳＴＥではなくサブスペースＡＳＴＥ起点に初期化することによって、サブタスクは、メイン・タスクのホーム・スペースにアクセスできず、従ってアクセス・レジスタ・アドレス指定を使用することができる。そのとき、アクティブなサブスペースで動作する任意のプログラムのアドレス可能性は、該プログラムが１次アドレス指定モードで動作しているかアクセス・レジスタ・アドレス指定モードで動作しているかにかかわらず、そのサブスペース・アドレス指定環境に制限される。実施例では、前記のＡＴＴＡＣＨサービスに（後述のように）変更が加えられ、サブスペース・アドレス指定環境でタスクを生成するオプションがサポートされる。生成側タスクの現在のサブスペース環境は、その場合、生成されるタスクのＤＵ−ＡＬ  ＡＬＥ２値をサブスペースのＡＳＴＥ起点に初期化するため用いられるサブスペース・アドレス指定環境になる。
【００２０】
ＯＳ／３９０においてこの構造が可能であるのは、ＤＵ−ＡＬのＡＬＥ２の内容がＳ／３９０ソフトウェア規約であるためである。これは、ホーム・スペース・セグメント・テーブル記述子（ＳＴＤ）を保持する制御レジスタ（ＣＲ）１３（前記Principles of Operationで定義されている、ハードウェア制御レジスタ）には影響を与えない。ＣＲ１３内のホーム・スペースＳＴＤは、アーキテクチャ的に定義されており、ホーム・スペース・モードで動作するときにアドレスと命令のために用いられるようにハードウェアにより実装される。プログラムは、ホーム・スペース・モードに対するＳＡＣ（前記Principles of Operationで定義されているハードウェア命令"アドレス・スペース制御設定"）を許可される必要があるので、問題プログラム状態のプログラムに関する安全サブスペースの分離概念は、ＣＲ１３の現行のアーキテクチャ定義を保つことでは実現されない。
【００２１】
本発明は、サブスペース・アクティブ環境内のアドレス指定機能の１態様に関係することに注意されたい。サブスペース・グループ内の分岐に関するアーキテクチャやハードウェアについては、前記の米国特許第５３６１３５６号を参照してほしい。
【００２２】
図３及び図４は、本発明の原理に従って、安全なサブスペース環境を生成する実施例を示す。メイン・タスク下で動作するタスク管理機能は、トランザクション分離環境で実行されるトランザクション毎に、安全なサブスペース環境を生成することにより、それぞれのトランザクションが互いに他の割当てメモリにアクセスできないようにすることができる。メイン・タスク下でトランザクション・マネージャがＮ個のサブスペースを生成するため、最初に個々のサブスペースに割当てられるホーム・スペース内のストレージを取得する（３００）。実施例として図３及び図４に示し、ここで説明する機能は、特に断らない限り、ＯＳ／３９０で利用できる。また、Ｓ／３９０システムで開始されるＣＩＣＳ領域当たり、１つのホーム・スペース／ベース・スペースが存在する。次に、例えばＯＳ／３９０の"ＩＡＲＳＵＢＳＰ"サービスを使用して、サブスペースに適したストレージ範囲が識別される（３１０）。他のストレージは全て、ストレージが取得されるとき、ベース・スペースとそのサブスペースに利用できる。図５は、４つの異なるストレージ領域が取得され識別された、ホーム／ベース・スペースの実施例を示す。
【００２３】
次に、サブスペースが、例えばＯＳ／３９０の"ＩＡＲＳＵＢＳＰ"生成サービスを使用して、生成される（３２０）。サブスペースを表すスペース・トークン（ＳＴＯＫＥＮ）が受信される。識別される範囲はサブスペースからは利用できないことに注意されたい。図６は、Ａ、Ｂ、Ｃ及びＤの４つの範囲のあるホーム・スペース及びこれに関連するサブスペースの実施例であり、対応する範囲がサブスペース内でまだアドレス指定できないことを示す。
【００２４】
その後、メイン・タスクのＤＵ−ＡＬに、例えばＯＳ／３９０の"ＡＬＥＳＥＲＶ"（アクセス・リスト・エントリ）ＡＤＤサービスを使用して、サブスペースが追加される（３３０）。サブスペースを表すＡＬＥＴが受信される（例えば図７のＡＬＥＴ３）。このサブスペースは、図７ではサブスペース１と表記されている。
【００２５】
サブスペースで動作しているトランザクションからアクセスできるストレージ範囲が、例えばＯＳ／３９０の"ＩＡＲＳＵＢＳＰ"割当てサービスを使用して、割当てられる（３４０）。例えばこのサービスは、ストレージＡを割当て、これを図７に示すように、サブスペース１で有効にする。ここで斜線の部分は有効ではないことを示す。
【００２６】
次に、所望の機能へのアクセス・リスト・エントリ（ＡＬＥ）を指定する分岐が実行され、サブスペースはアクティブなアドレス指定環境になる。実施例ではこれは、ＢＳＧハードウェア命令を含む（３５０）。ＢＳＧ命令の後、サブスペース（例えば図７のサブスペース１）は、タスクのアクティブな１次／２次アドレス・スペースになる。１次／２次アドレス指定からの命令とデータのアクセスは全て、サブスペースのアドレス指定範囲から発生しその範囲に制限される。ただし、この時点でアクセス・レジスタ・アドレス指定モードのアプリケーションは、依然として、ＡＬＥＴ２を介してホーム・スペースをアドレス指定することができる。本発明はこの課題に取り組んでいる。
【００２７】
前記の通り、ここに示す解決法は、アプリケーションのアドレス指定を制限するサブタスクを生成することである（３６０）。安全サブスペースを使用して、実行される各トランザクション毎にサブタスクを生成することができる。生成されたサブタスクはそれぞれ、そのサブタスクに関連するＤＵ−ＡＬ内にホーム・スペースとしてのサブスペース・アドレス環境を有する。その結果、サブタスクとメイン・タスク間でサブスペースが共有されるが、独立に生成されたサブタスク間ではサブスペースは分離される。サブスペースを共有する機能は、例えば前記のMVS Assembler Services Referenceに述べられているＡＴＴＡＣＨサービスを通して実現される。ただし、ここで述べるように、ＡＴＴＡＣＨＸマクロについて新しいパラメータ"ＡＤＤＲＥＮＶ"が定義される。ＡＴＴＡＣＨＸマクロは、プログラムからＯＳ／３９０のＡＴＴＡＣＨサービスを要求する手段である。この新しいパラメータにより、サブスペースを生成したタスクがサブタスクを生成し、そのサブタスクのアドレス可能性をサブスペースにより定義されるアドレス指定環境に制限することができる。このサブスペースで制限されたアドレス可能性を持つ生成済みのサブタスクを、"サブスペース・タスク"と呼ぶことができる。サブスペース・タスクは、サブスペース・タスクでもあるタスクのみを生成することができる。この新しいＡＴＴＡＣＨＸパラメータは、ＡＤＤＲＥＮＶ＝ＳＡＭＥとＡＤＤＲＥＮＶ＝ＳＵＢＳＰの２つのオプションをサポートする。ＡＤＤＲＥＮＶ＝ＳＡＭＥは、生成されるタスクが生成側タスクと同じ１次モードのアドレス指定環境で生成されることを指定する。１次モードのアドレス指定環境は、ＤＵ−ＡＬアドレス指定環境についてＯＳ／３９０のＡＬＣＯＰＹサービス処理を通して生成することのできるアドレス指定環境を含まない。ＡＤＤＲＥＮＶ＝ＳＡＭＥリクエストに対する生成されるタスクのホームＡＬＥＴ（ＡＬＥＴ２）ＡＳＴＥ指定は、生成側タスクのホームＡＬＥＴと同じＡＳＴＥ指定である。
【００２８】
ＡＤＤＲＥＮＶ＝ＳＵＢＳＰは、生成されるタスクが、ＡＴＴＡＣＨＸリクエストが発行されたときアクティブであったサブスペース・アドレス指定環境を持つことを指定する。ＡＴＴＡＣＨＸリクエストを発行するタスクは、ＡＴＴＡＣＨＸを発行する前に、サブスペースを所有し、サブスペースを現在のアクティブ・サブスペースとして設定する必要がある。新しいタスクは、アクティブなサブスペースで生成され、そのアドレス指定環境は、そのサブスペースからアクセスできるアドレスに制限される。ＡＴＴＡＣＨサービスは、このタスクをサブスペース・タスクとして指定する。
【００２９】
これらのサブスペース・タスクは、ＳＡＭＥまたは新しいＳＵＢＳＰアドレス指定環境を持つサブスペース・タスクのみを生成するだけである。サブスペース・タスクは、ベース／スペース・タスク、例えばサブスペース・タスクではないタスクは生成できない。
【００３０】
タスクがＡＤＤＲＥＮＶ＝ＳＵＢＳＰで生成されたとき、生成されたタスクは、アクティブ・サブスペースとしてのＳＵＢＳＰＡＣＥで制御を受け取る。タスクのホームＡＬＥＴは、ＳＵＢＳＰＡＣＥのＡＳＴＥに設定される。ホームＡＬＥＴを指定するＡＲ修飾アドレスは、サブスペースとそのアドレス指定環境を指定する。アクティブなサブスペースで動作するタスクは、該サブスペースの所有者であるか、または該サブスペースの所有者により生成されたサブスペース・タスクである。サブスペース・タスクはまた、そのサブスペースが他のサブスペース・タスクと共有されるという条件の下に、該他のサブスペース・タスクを生成することもできる。ただし、サブスペースの所有側タスクは、依然として、そのサブスペースを使用している任意のサブスペース・タスクの親または保護者のタスクである。従って、所有側タスクは、サブスペースを使用しているサブスペース・タスクが終了するまで、サブスペースを終了及び削除することはできない。
【００３１】
この構造により、サブスペースをアクティブに使用しているサブスペースがある場合には、そのサブスペースを所有するタスクがそのサブスペースを終了及び削除しようとしないことが保証される。これにより、サブスペースの削除を管理するプロセスと直列化が簡素化される。
【００３２】
１例として、ＣＩＣＳトランザクション・サーバのオープン・トランザクション環境（ＯＴＥ）では、オープンなＣＩＣＳアプリケーションは、ＯＴＥタスク下で動作するというオプションを有する。このタスクは、ＣＩＣＳのメイン・タスクまたは準再入可能（Ｑ／Ｒ）タスクにより、サブスペース・タスクとして生成される。Ｑ／Ｒタスクは、多くのＯＴＥタスクを生成し、それぞれのＯＴＥタスクは、複数のトランザクション間のトランザクション分離を提供するために、それ自体のサブスペースを有するサブスペース・タスクとして生成される。Ｑ／Ｒタスクは、オープン・トランザクションのためのアドレス指定環境を定義するサブスペースを所有する。トランザクションは、サブスペースが保護されたＯＴＥタスク下で動作する。ただし、トランザクションが再入可能な機能として再書き込みされていないＣＩＣＳ機能をリクエストする場合、ＣＩＣＳは、トランザクションをＱ／Ｒタスクに移動させ、Ｑ／Ｒタスク下で機能を実行する。このトランザクションがＱ／Ｒ下で実行されるとき、そのサブスペース環境は、トランザクションに関連するそのＤＵ−ＡＬ（Ｑ／Ｒタスクのディスパッチ可能単位アクセス・リスト）上でサブスペースを識別してからそのサブスペースに分岐する（ＢＳＧ）ＣＩＣＳによりアクティブにされる。サブスペースを共有することで、これが可能になる。サブスペースが共有されないとき、サブスペースの指定をＯＴＥタスクのアクセス・リストからＱ／Ｒタスクのアクセス・リストに、またその逆に移動させる必要がある。
【００３３】
図４に戻る。前記の生成機能を使用して、１次、２次及びアクセス・レジスタのモードにおけるアプリケーションのアドレス指定をサブスペースに制限するサブタスクが生成される。例えばこの構造は、前記ＯＳ／３９０のＡＴＴＡＣＨＸサービスを使用して得られる。この場合、サブタスクに関連するＤＵ−ＡＬのホーム・スペースは、サブスペース・アドレス環境に割当てられる（図８参照）。アプリケーションは、サブタスク下で動作していて制御を受け取ると、１次、２次またはアクセス・レジスタ・モードのアドレス指定を使用していて、サブスペースがアクティブなとき、他のサブスペース／トランザクション領域（例えば図８のＢ、Ｃ及びＤ）にアクセスできないように制限される。サブタスクのホーム・スペース（ＡＬＥＴ２）としてサブスペースを利用することで、ベース制御プログラムは、ＡＬＥＴ２を使用して引き続きベース制御プログラム（ＢＣＰ）構造にアクセスできるが、サブスペースに割当てられていないストレージをアドレス指定することは制限される。従って、サブタスク下で動作するアプリケーションは、他のトランザクション／アプリケーションがアドレス指定可能な領域にアクセスできない。
【００３４】
図３及び図４の処理、特にステップ３２０〜３６０は、トランザクションの分離を実現するため必要なサブスペース環境毎に繰り返される（３７０）。
【００３５】
図９は、４つの異なるサブタスクについてステップ３２０〜３６０を繰り返した結果の１例、及びその安全なサブスペース環境を示す。個々のサブタスク下で動作するトランザクション／アプリケーションは、異なるサブタスク下で動作するトランザクション／アプリケーションの割当てストレージにアクセスすることを制限される。例えば図１０に示すように、サブタスク１下のアプリケーションは、割当て済みストレージ領域Ｂ、Ｃ及びＤをアドレス指定できず、サブタスク２下のアプリケーションは、割当て済みストレージ領域Ａ、Ｃ及びＤをアドレス指定できず、サブタスク３下のアプリケーションは、割当て済みストレージ領域Ａ、Ｂ及びＤをアドレス指定できず、サブタスク４下のアプリケーションは、割当て済みストレージ領域Ａ、Ｂ及びＣをアドレス指定できない。ここでも、図９に示すように、定義済みタスクそれぞれにＤＵ−ＡＬが関連し、対応するサブスペースがＡＬＥＴ２のホーム・スペースとして定義される。
【００３６】
図１１は、図２のメイン・タスクとこれに関連するアクセス・リストの実施例を示す。ここでも本発明の原理に従い、安全なサブスペースを使用している。この実施例で、メイン・タスクは、例えば前記のＯＳ／３９０の修正済みＡＴＴＡＣＨＸサービスを使用して、第１サブタスク（タスクＡ１）と第２サブタスク（タスクＢ）を直接的に生成する。これらの生成プロセスのアドレス環境は、ＡＤＤＲＥＮＶ＝ＳＵＢＳＰとして定義される。タスクＡ１のアクセス・リストとタスクＢのアクセス・リストの両方で、ホーム・スペースが対応するサブスペース（それぞれＳＳ１、ＳＳ２）として定義される。タスクＡ１下で動作するトランザクションは、それ自体でサブタスク（例えばタスクＡ２）を生成することができる。ただし、タスクＡ２は、タスクＡ１と同じアドレス環境（すなわち、サブスペース１）を有すると定義される。この機能は、アプリケーションが自体でマルチタスク環境を生成できる点で有益である。この環境で生成されるサブタスクは全て、生成側タスクのサブスペースを共有するにとどまる。
【図面の簡単な説明】
【図１】  本発明の原理に従い、安全なサブスペース機構を使用するシステムのハードウェア・コンポーネントの１例を示す図である。
【図２】  従来のトランザクション・マネージャ用の、メイン・タスクとこれに関連するディスパッチ可能単位アクセス・リスト（ＤＵ−ＡＬ）構造の実施例を示す図である。
【図３】  本発明の原理に従い、安全なサブスペース機構を生成する実施例のフローチャートである。
【図４】  本発明の原理に従い、安全なサブスペース機構を生成する実施例のフローチャートである。
【図５】  図３及び図４の安全サブスペース機構例に従い、個々のサブスペースに割当てられるホーム／ベース・スペース・ストレージの実施例を示す図である。
【図６】  図３及び図４の安全サブスペース機構例に従い、ホーム・スペース・ストレージとこれに関連するサブスペースの割当ての実施例を示す図である。
【図７】  図３及び図４の安全サブスペース機構例に従い、メイン・タスク、これに関連するＤＵ−ＡＬ、及びホーム・スペースとサブスペースの割当ての実施例を示す図である。
【図８】  図３及び図４の安全サブスペース機構例と本発明の原理に従い、メイン・タスクからのサブタスクの生成及びこれに関連するＤＵ−ＡＬ内のホーム・スペースにサブスペース１が割当てられていることを示す、図７の構造の実施例を示す図である。
【図９】  図３及び図４の安全サブスペース機構例と本発明の原理に従い、メイン・タスク、これに関連するＤＵ−ＡＬ、及びそれぞれのホーム・スペースが関連するＤＵ−ＡＬ内で異なるサブスペースとして定義された関連する４つのサブタスクの実施例を示す図である。
【図１０】  例えば図９に示す４つのサブタスクを使用し、本発明の原理に従って得られる安全サブスペース分離の実施例を示す図である。
【図１１】  図３及び図４の安全サブスペース機構例と本発明の原理に従い、メイン・タスク、これに関連するＤＵ−ＡＬ、及び複数のサブタスクの生成の実施例を示す図である。
【図１】
0003725437.tif 000002
【図２】
0003725437.tif 000003
【図３】
0003725437.tif 000004
【図４】
0003725437.tif 000005
【図５】
0003725437.tif 000006
【図６】
0003725437.tif 000007
【図７】
0003725437.tif 000008
【図８】
0003725437.tif 000009
【図９】
0003725437.tif 000010
【図１０】
0003725437.tif 000011
【図１１】
0003725437.tif 000012