(57)【特許請求の範囲】
【請求項１】
各々がオペレーティング・システムを実行する複数の論理区画を含む論理的に区画化された同一の物理コンピュータにおいて実行され、同時使用ソフトウェア・ライセンスを管理する方法であって、
ａ）前記複数の論理区画によりアクセス可能であり、１以上のコンピュータ・プログラムの各々の前記複数の論理区画での同時使用数を表す大域カウントをそれぞれが含む各コンピュータ・プログラムに対応した１以上のライセンス記録から構成されるライセンス・リストを保持するパーティション・マネージャが、前記論理的に区画化されたコンピュータ内の前記複数の論理区画におけるコンピュータ・プログラムの同時使用を前記大域カウントを使用して追跡するステップと、
ｂ）前記複数の論理区画の各々に存在するライセンス・マネージャのうちの第１の論理区画に存在するライセンス・マネージャが、ユーザからの前記第１の論理区画内で前記コンピュータ・プログラムを使用する要求に応答して、前記パーティション・マネージャに前記大域カウントを増分する要求を送り、前記パーティション・マネージャが前記大域カウントを増分し、前記大域カウントを、前記ライセンス・マネージャに渡し、前記ライセンス・マネージャがコンピュータ・プログラムに関連付けられる同時使用ソフトウェア・ライセンスに指定される制限と比較し、前記制限を超える場合に前記第１の論理区画内で前記コンピュータ・プログラムを使用する要求を拒絶するステップと
を含む方法。
【請求項２】
前記ユーザからの前記コンピュータ・プログラムの使用を終了する要求に応答して、前記ライセンス・マネージャが前記大域カウントを減分する要求を前記パーティション・マネージャに送り、前記パーティション・マネージャが前記大域カウントを減分するステップをさらに含む、請求項１記載の方法。
【請求項３】
前記拒絶するステップにおいて、前記ライセンス・マネージャが、使用を要求する前記コンピュータ・プログラムを識別するプログラム識別子を前記パーティション・マネージャに渡すステップと、前記減分するステップにおいて、前記ライセンス・マネージャが、使用を終了する前記コンピュータ・プログラムを識別するプログラム識別子を前記パーティション・マネージャに渡すステップとを含む、請求項２記載の方法。
【請求項４】
各々がオペレーティング・システムを実行する複数の論理区画を含む論理的に区画化された同一の物理コンピュータにより読取り可能な第１のプログラムが記録された記録媒体であって、前記第１のプログラムは、前記コンピュータを、
ｉ）前記複数の論理区画によりアクセス可能であり、１以上の第２のプログラムの各々の前記複数の論理区画での同時使用数を表す大域カウントをそれぞれが含む各第２のプログラムに対応した１以上のライセンス記録から構成されるライセンス・リストを保持し、前記複数の論理区画における第２のプログラムの同時使用を追跡するように構成されるパーティション・マネージャ手段と、
ｉｉ）前記複数の論理区画の各々に存在し、各前記論理区画内で前記第２のプログラムを使用する要求に応答して、前記パーティション・マネージャ手段をアクセスするように構成されるライセンス・マネージャ手段として機能させ、
ａ）前記パーティション・マネージャ手段が、前記論理的に区画化されたコンピュータ内の前記複数の論理区画における前記第２のプログラムの同時使用を、前記大域カウンタを使用して追跡し、
ｂ）前記複数の論理区画のうちの第１の論理区画に存在するライセンス・マネージャ手段が、ユーザからの前記第１の論理区画内で前記コンピュータ・プログラムを使用する要求に応答して、前記パーティション・マネージャ手段に前記大域カウントを増分する要求を送り、前記パーティション・マネージャ手段が前記大域カウントを増分し、前記大域カウントを、前記ライセンス・マネージャ手段に渡し、前記ライセンス・マネージャ手段がコンピュータ・プログラムに関連付けられる同時使用ソフトウェア・ライセンスに指定される制限と比較し、前記制限を超える場合に前記第１の論理区画内で前記コンピュータ・プログラムを使用する要求を拒絶する、
コンピュータ実行可能なプログラムを記録した、記録媒体。
【請求項５】
前記ユーザからの前記コンピュータ・プログラムの使用を終了する要求に応答して、前記ライセンス・マネージャ手段が前記大域カウントを減分する要求を前記パーティション・マネージャ手段に送り、前記パーティション・マネージャ手段が、さらに前記大域カウントを減分する、請求項４記載の記録媒体。
【請求項６】
前記拒絶は、前記ライセンス・マネージャ手段が、使用を要求する前記コンピュータ・プログラムを識別するプログラム識別子を前記パーティション・マネージャ手段に渡し、前記減分で、前記ライセンス・マネージャ手段が使用を終了する前記コンピュータ・プログラムを識別するプログラム識別子を前記パーティション・マネージャ手段に渡す、請求項５記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にコンピュータ及びコンピュータ・ソフトウェアに関する。特に、本発明は一般に、コンピュータ上でコンピュータ・プログラムを使用する要求を選択的に承認または拒絶する、同時使用ライセンスの管理に関する。
【０００２】
【従来の技術】
同時使用ライセンスはソフトウェア業界において、コンピュータ・ソフトウェアを顧客に提供するための便利でしばしばコスト効率の良い方法として、ごく普通に使用される。顧客のコンピュータ上に導入されるコンピュータ・プログラムのコピー数を一般に制限する他のタイプのライセンスと異なり、同時使用ライセンスは一般に、コンピュータ・プログラムを同時にアクセスまたは使用可能なユーザの数を制限する。同時使用ライセンスの他のアプリケーションも存在するが、１つの特に有益なアプリケーションは、コンピュータ・プログラムの複数のコピーが、複数のユーザによりアクセス可能なサーバまたは他のマルチユーザ・コンピュータ上で実行される、ネットワーク化コンピュータ・システムである。こうしたシステムでは、顧客はしばしば料金を徴収してコンピュータ・プログラムをライセンス供与でき、この料金は顧客が予想するコンピュータ・プログラムへのアクセスを同時に必要とするユーザの数にもとづくが、これはしばしばシステムへのアクセスを有するユーザの総数よりも、大幅に少ない。
【０００３】
ソフトウェア・ベースのライセンス・マネージャが、コンピュータ・プログラムに関連付けられる同時使用ライセンスの条件にもとづき、それらのコンピュータ・プログラムの使用を制限するために、マルチユーザ・コンピュータ上などで便利に使用される。ソフトウェア・ベースのライセンス・マネージャにより、コンピュータ・プログラムの使用が所与のコンピュータに対して追跡され、コンピュータ・プログラムを使用する要求が、ライセンス・マネージャにより追跡される他の使用数にもとづき、自動的に承認または拒絶される。
【０００４】
多くの従来のライセンス・マネージャは、ソフトウェア・"キー"にもとづき、コンピュータ・プログラムを使用する要求を処理する。特に、顧客がコンピュータ・プログラムをライセンス供与するとき、顧客は製品識別子（ライセンス・コンピュータ・プログラムを識別する）、マシン識別子（コンピュータ・プログラムが実行される特定のコンピュータを識別する）、ライセンス識別子（ライセンス条件、例えばコンピュータ・プログラムの同時ユーザの最大許可数を識別する）を含むソフトウェア・コードを与えられる。また、キーは一般に暗号化され、それに含まれる情報が顧客または他の者により変更されて、ライセンス制限が侵されないようにする。
【０００５】
コンピュータ・プログラムが顧客のコンピュータ上に導入されるとき、ソフトウェア・キーがコンピュータ上のライセンス・マネージャに提供され、ライセンス・マネージャが、キー内のマシン識別子をコンピュータ内に保持されるものと比較することにより、製品が実際にコンピュータに対してライセンス供与されることを検証する。ユーザによるコンピュータ・プログラムを使用する続く要求は、ライセンス・マネージャにより、同時使用数をキー内で指定される数に制限するように処理される。
【０００６】
多くのライセンス管理方式により、マシン識別子は、基礎を成すコンピュータ・ハードウェアに関連付けらる固有で変更不能な識別子（例えばコンピュータの製造番号）に結合され、それにより無許可の当事者がコンピュータのマシン識別子を、認定コンピュータのものに合致するように変更し、最初に認定コンピュータにライセンス供与されたコンピュータ・プログラムを、無許可のコンピュータ上に不正に導入することを阻止する。しかしながら、マシン識別子を基礎を成すコンピュータ・ハードウェアの製造番号または他の固有の識別子に結合することは、コンピュータが論理区画化を使用する場合、重大な管理上の問題をもたらす。
【０００７】
特に、論理区画化により、単一の物理コンピュータが本質的に、複数の独立の"仮想"コンピュータ（論理区画と呼ばれる）のように動作することが可能になり、物理コンピュータ内の様々な資源（例えばプロセッサ、メモリ、入出力装置など）が、しばしば"ハイパバイザ"とも呼ばれる共用パーティション・マネージャにより、様々な論理区画間で割当てられる。各論理区画は別々のオペレーティング・システムを実行し、ユーザ及び論理区画上で実行されるソフトウェアから見ると、完全に独立なコンピュータとして動作する。
【０００８】
論理区画の独立性を考慮して、ライセンス管理のための従来のアプローチは、各論理区画内の別々のライセンス・マネージャを用いて、論理区画内に存在するアプリケーションのために、ライセンス管理操作を処理する。しかしながら、論理区画の論理的独立性にも関わらず、論理区画はそれらが同一の基礎を成すコンピュータ・ハードウェア上に存在する場合、依然同一のマシン識別子を共用する。
【０００９】
その結果、従来のアプローチでは、顧客は同一のソフトウェア・キーを用いて、ライセンス・コンピュータ・プログラムを同一の物理コンピュータ上の複数の論理区画上に導入できるかもしれない。更に、こうしたライセンス・マネージャは、一般に非区画化コンピュータ上で使用されるのと同一のプログラムであり、特定のプログラムが現在他の区画内で使用されているか否かを判断する能力を有さない。その結果、各論理区画内のライセンス・マネージャは、その論理区画内の同時使用数を、ソフト・キー内で示されるライセンス制限に合致するように制限し、全ての論理区画に渡る同時使用の総数が、ライセンス制限を超えることになる。本質的に、ライセンス制限は、単にプログラムを複数の論理区画上に導入することにより侵害される。
【００１０】
【発明が解決しようとする課題】
従って、論理的に区画化されたコンピュータ内において、同時使用ライセンスを管理し、特に複数の論理区画に渡るコンピュータ・プログラムの同時使用数を管理する改善された方法が待望される。
【００１１】
【課題を解決するための手段】
本発明は、論理的に区画化されたコンピュータ内の複数の論理区画に渡り、コンピュータ・プログラムの同時使用を追跡する装置、プログラム製品及び方法を提供することにより、従来技術に関連するこれらの及び他の問題を解決する。そこでは、特定の論理区画内でコンピュータ・プログラムを使用する要求を承認または拒絶するかに関する判断が、要求使用が、コンピュータ内の他の論理区画における他の使用と相まって、コンピュータ・プログラムに関連付けられる同時使用ソフトウェア・ライセンスに違反するか否かにもとづき、下される。従って、同時使用ソフトウェア・ライセンスのライセンス制限が、コンピュータ・プログラムが実行される特定の論理区画に関係なく、論理的に区画化されたコンピュータ上で行使される。
【００１２】
本発明の図示の実施例では、パーティション・マネージャ内、または論理的に区画化されたコンピュータ内の他の論理区画によりアクセス可能な他の共用資源内において、同時使用追跡が実行される。次に、ライセンス・マネージャにより各論理区画内において、ライセンス管理が処理される。ライセンス・マネージャは、必要に応じてパーティション・マネージャをアクセスし、全ての論理区画に渡る特定のコンピュータ・プログラムの同時使用の総数を制限する。従って、異なる論理区画内のライセンス・マネージャが互いに対話する必要なく、各論理区画の論理的独立性が維持される。
【００１３】
本発明を特徴付けるこれらの及び他の利点及び特徴が、本発明の一部を成す付属の特許請求の範囲で述べられる。しかしながら、本発明及びその利用を通じて得られる利点及び目的をより理解するために、本発明の典型的な実施例を示す図面及び付随の説明を参照されたい。
【００１４】
【発明の実施の形態】
図面を参照すると、同一の番号は図面を通じて同一の部品を表す。図１は、本発明に従うデータ処理装置またはコンピュータ１０を示す。装置１０は一般に例えば、ネットワーク・サーバ、中規模コンピュータ、メインフレーム・コンピュータなどの多数のマルチユーザ・コンピュータ・システムのいずれかを表す。しかしながら、本発明は他のデータ処理装置、例えばワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータなどのスタンドアロンまたはシングルユーザ・コンピュータ・システム、或いは埋め込み制御装置などの他のコンピュータ装置でも実現され得る。装置１０の１つの好適な実施例は、ＩＢＭから提供されるＡＳ／４００シリーズ・コンピュータなどの、中規模コンピュータである。
【００１５】
装置１０は一般に、主記憶装置１４を含むメモリ・サブシステムに接続される１つ以上のシステム・プロセッサ１２を含む。ここで主記憶装置１４は、例えばダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のアレイである。プロセッサ１２と主記憶装置１４との間には、更にキャッシュ・サブシステム１６が配置されて示され、これは一般に１つ以上のレベルのデータ・キャッシュ、命令キャッシュ、または組み合わせキャッシュを含み、周知のように、特定のキャッシュが個々のプロセッサまたは複数のプロセッサに作用する。更に、主記憶装置１４はシステム・バス１８及び複数のインタフェース装置を介して、多くのタイプの外部（Ｉ／Ｏ）装置に接続される。こうしたインタフェース装置には、入出力（Ｉ／Ｏ）バス接続インタフェース２０、ワークステーション制御装置２２、及び記憶制御装置２４などが含まれ、これらはそれぞれ、１つ以上の外部ネットワーク２６、１つ以上のワークステーション２８、及び直接アクセス記憶装置（ＤＡＳＤ）３０などの１つ以上の記憶装置への外部アクセスを提供する。
【００１６】
図２は、コンピュータ１０上で論理的に区画化されたコンピュータ環境を実現するために使用される、主なソフトウェア・コンポーネント及び資源を詳細に示し、ここではパーティション・マネージャ４６により管理される複数の論理区画４０、４２、４４が含まれる。周知のように、任意の数の論理区画がサポートされ得る。
【００１７】
図示の実施例では、論理区画４０が１次区画として動作し、論理区画４２及び４４が２次区画として動作する。この状況において１次区画は、コンピュータのための一部の区画管理機能を共用し、それらにはコンピュータ１０上の２次論理区画のパワーオンまたはパワーオフの処理や、２次論理区画のメモリ・ダンプの開始などが含まれる。このようにパーティション・マネージャ４６の一部は、１次区画４０内に存在するオペレーティング・システム５２内に配置される、１次区画制御ブロック５０により示される。他の区画管理サービスは、全ての論理区画によりアクセス可能であり、共用サービス・ブロック４８により表される。１次論理区画内の区画管理機能の実装は、例えばArmstrongらによる１９９９年５月１９日付けの米国特許出願第          号"Logical Partition Manager and Method"（出願人整理番号：RO9-99-025）で述べられている。しかしながら、本発明の他の実施例では、区画管理機能は任意の特定の論理区画内に実装される必要はない。
【００１８】
各論理区画はオペレーティング・システムを使用し（例えば論理区画４０、４２、４６のそれぞれに対して、オペレーティング・システム５２、５４、５６が対応）、これらのオペレーティング・システムが非区画化コンピュータのオペレーティング・システム同様、論理区画の基本動作を制御する。例えば、各オペレーティング・システム５２乃至５６は、カーネル、例えばＡＳ／４００システム認可内部コード（ＳＬＩＣ：system licensed internal code）上に存在する、ＩＢＭから提供されるＯＳ／４００オペレーティング・システムを用いて実現される。ブロック４８内の共用サービスは、ここでは区画認可内部コード（ＰＬＩＣ：partition licensed internal code）とも呼ばれる。
【００１９】
各論理区画４０乃至４４は、仮想メモリ６０により表される別々のメモリ空間内で実行される。更に、各論理区画４０乃至４４は、静的にまたは動的に、コンピュータ１０内の使用可能な資源の一部を割当てられる。例えば、各論理区画は１つ以上のプロセッサ１２の他に、仮想メモリ６０内の使用可能なメモリ空間の一部を割当てられる。論理区画はプロセッサなどの特定のハードウェア資源を共用でき、例えば所与のプロセッサが２つ以上の論理区画により使用される。代替実施例では、ハードウェア資源が同時に１つの論理区画にだけ割当てられる。
【００２０】
大容量記憶装置、バックアップ記憶装置、ユーザ入力、ネットワーク接続などの追加の資源が、一般に、周知のように１つ以上の論理区画に割当てられる。資源は、例えばバス・ベースまたは資源ベースなどにより、多様に割当てられ、複数の論理区画が同一のバス上の資源を共用する。一部の資源は複数の論理区画に同時に割当てられ得る。例えば、図２は３つの論理バス６２、６４及び６６を示し、バス６２上の直接アクセス記憶装置（ＤＡＳＤ）６８、制御パネル７０、テープ・ドライブ７２、及び光ディスク・ドライブ７４を含む複数の資源が、１次論理区画４０に割当てられる。一方、バス６４は資源ベースで割当てられる資源を有し、例えばローカル・エリア・ネットワーク（ＬＡＮ）・アダプタ７６、光ディスク・ドライブ７８、及びＤＡＳＤ８０は２次論理区画４２に割当てられ、ＬＡＮアダプタ８２及び８４は２次論理区画４４に割当てられる。バス６６は例えば、論理区画４４に特定的に割当てられるバスを表し、このバス上の全ての資源、例えばＤＡＳＤ８６及び８８は、同一の論理区画に割当てられる。
【００２１】
図２の特定の資源の図解は、単に模範例に過ぎず、別の実施例では、資源の任意の組み合わせ及び編成が、任意の論理区画に割当てられ得る。更に、一部の実施例では、他の論理区画のニーズをサービスするために、資源が動的に再割当てされる。更に、資源は、コンピュータを特定のハードウェア装置とインタフェースするために使用される入出力プロセッサ（ＩＯＰ）に関して、表されてもよい。
【００２２】
図２に示され、本発明の実施例を実現する様々なソフトウェア・コンポーネント及び資源は、様々なコンピュータ・ソフトウェア・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造などを用いて、多様に実装され、以下ではこれらを"コンピュータ・プログラム"または単に"プログラム"と称することにする。コンピュータ・プログラムは一般に、１つ以上の命令を含み、これらはコンピュータ内の様々なメモリ及び記憶装置内に様々な時刻に存在し、コンピュータ内の１つ以上のプロセッサにより読出され、実行されるとき、本発明の様々な態様を実現するステップまたは要素を実行するのに必要なステップを、コンピュータに実行させる。更に、本発明はこれまで完全機能型のコンピュータの状況において述べられ、また以下でも同様であるが、当業者であれば、本発明の様々な実施例が様々な形態のプログラム製品として分配され、本発明が、実際に分配を実行するために使用される特定のタイプの信号担持媒体に関係なく、同様に当てはまることが理解できよう。こうした信号担持媒体の例には、揮発性及び不揮発性メモリ素子、フロッピー及び他の取り外し可能ディスク、ハードディスク・ドライブ、磁気テープ、光ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤなど）などの記録可能媒体、及びデジタル及びアナログ通信リンクなどの伝送タイプの媒体が含まれる。
【００２３】
更に、後述の様々なプログラムは、それらが本発明の特定の実施例として実現されるアプリケーションにもとづき識別される。しかしながら、後述の特定のプログラム用語は便宜上使用されるだけで、本発明はこうした用語により識別または意味される特定のアプリケーションだけに、その使用が限られるものではない。
【００２４】
当業者であれば、図１及び図２に示される典型的な環境が、本発明を制限するものでないことが理解できよう。実際、当業者であれば、他の代替ハードウェアまたはソフトウェア環境が、本発明の範囲から逸れることなく使用され得ることが理解できよう。
【００２５】
区画化コンピュータ環境におけるライセンス管理：
本発明に従うライセンス管理は、共用サービスを用いて、１つ以上のライセンス・コンピュータ・プログラムの使用を大域的に追跡する。例えば、図２に示される実施例では、ライセンス管理が、各論理区画内に配置される１つ以上のライセンス・マネージャ９０を用いて実行される。各ライセンス・マネージャ９０は、使用トラッカ（use tracker）・ブロック９２により表される共用サービスへのアクセスを有し、これは追跡される全てのライセンス・コンピュータ・プログラムの活動使用のカウントを保持する。使用トラッカ９２はパーティション・マネージャ４６の共用サービス４８内に存在するように示されるが、他の実施例では、ライセンス使用の追跡が、他のコンポーネントにより実行され得る。
【００２６】
各論理区画内のライセンス・マネージャ９０は、区画内に存在するライセンス・アプリケーション９４を実行する要求を承認または拒絶する機能を処理する。そうするために、各ライセンス・マネージャは使用トラッカ９２内に実装される共用サービスにもとづき、コンピュータ１０内の全ての論理区画に渡る使用の大域カウントの指示を検索する。
【００２７】
コンピュータ１０内の様々な論理区画に渡り、１つ以上のコンピュータ・プログラムの使用を追跡するために、使用トラッカ９２はライセンス記録のデータベース、例えば図３に示されるライセンス・リスト１００の形式で保持する。リスト１００はリンク・リストとして実現され、複数のライセンス記録１０２を含み、各々は複数のフィールド１０４乃至１１４を含む。
【００２８】
各ライセンス記録のフィールド１０４は、ライセンス記録を特定的に識別するヘッダを提供する。フィールド１０６は、記録１０２が関連付けられる製品、すなわちライセンス・コンピュータ・プログラムを識別する製品識別子を提供する。
【００２９】
フィールド１０８は大域カウントを記憶し、これは全ての論理区画に渡るライセンス・コンピュータ・プログラムの現同時使用の総数を表す。フィールド１１０は"持続"フラグであり、これはライセンス・コンピュータ・プログラムの使用が、論理区画のパワーダウンを生き抜くか否かを示す。持続フラグがセットされない場合、論理区画の現使用カウントはパワーダウン時に廃棄される。
【００３０】
フィールド１１２は、コンピュータ内のＮ個の論理区画の各々に対する使用カウントを記憶する。このように任意の数の論理区画をサポートするために、可変の数のフィールドが提供され得る。更に、例えばリンク・リストなどの他のデータ構造も、可変数の論理区画をサポートするために使用され得る。
【００３１】
フィールド１１４は、リンク・リスト内の次のライセンス記録１０２を指し示すポインタを記憶する。最後のライセンス記録１０２は、フィールド１１４内にヌル値を記憶される。しかしながら、任意の数の代替データ構造が、各ライセンス記録１０２内に提供される情報を記憶するために使用され得る。
【００３２】
複数の論理区画に渡りライセンス管理をサポートするために、幾つかのサービスが使用トラッカ９２により、各ライセンス・マネージャ９０に対して使用可能にされる。特に、図示の実施例では、次のサービスが各論理区画内のライセンス・マネージャにとって使用可能になる。
int incrementCount(product_id、persistent)
product_idに関連付けられる製品のカウントを増分し、"持続"フラグをpersistent（真または偽）にセットする。
int decrementCount(product_id)
product_idに関連付けられる製品のカウントを減分する。
int getCount(product_id、partition_id)
要求区画内のproduct_idに関連付けられる製品のカウントを獲得する。
int setCount(product_id、count、persistent)
product_idに関連付けられる製品の区画カウントをcountにセットし、"持続"フラグをpersistent（真または偽）にセットする。
removeCount(product_id)
この区画内のproduct_idに関連付けられる製品の全ての使用を除去する。
【００３３】
前述のサービスでは、product_idはライセンス・コンピュータ・プログラムの識別子であり、countは区画カウントをセットする整数であり、persistentはライセンス・コンピュータ・プログラムに対する"持続"フラグをセットまたはリセットするために使用されるブール値であり、partition_idはコンピュータ内の別の論理区画を識別する。removeCount()を除く全てのサービスが、識別されたライセンス・コンピュータ・プログラムに対する結果の大域カウントを返却する。
【００３４】
本発明に従うライセンス管理を実行するにおいて、前述のサービスの使用が、図４乃至図８に示されるライセンス管理操作に関連して更に詳述される。図４は、論理区画の１つ内のライセンス・マネージャにより開始されるライセンス獲得ルーチン１４０を示す。ライセンス獲得ルーチン１４０は、ユーザからのライセンス・コンピュータ・プログラムを使用する要求に応答して、呼び出される。ブロック１４２に示されるように、ライセンス・マネージャ９０はこうした要求に応答して、incrementCount()要求をパーティション・マネージャに渡し、要求されるライセンス・コンピュータ・プログラムの製品識別子及び持続フラグの値を指定する。この機能呼び出しが１４４として示される。incrementCount()要求はカウント増分ルーチン１４６により処理され、このルーチンはブロック１４７で、ライセンス・リスト上で大域ロックを獲得することにより開始し、要求される製品識別子のライセンス記録を見い出そうとする。制御はブロック１４８に移行し、ライセンス記録が見い出されたか否かを判断する。
【００３５】
見い出されなかった場合、新たなライセンス・コンピュータ・プログラムが追跡されており、制御はブロック１４９に移行して、新たなライセンス・コンピュータ・プログラムのための新たなライセンス記録のための記憶を割当て、全てのカウントを０に初期化する。ライセンス記録はリンク・リストにも追加される。次にブロック１５０で、要求プログラムのライセンス記録の大域カウント及び区画カウントの両方を増分し、新たな大域カウントをライセンス・マネージャに返却する（１５２で示される）。更に、ブロック１５０は持続フラグを、このルーチンに提供された値にセットし、ライセンス・リスト上で以前に獲得された大域ロックを解除する。また、ブロック１４８に戻り、ライセンス記録が見い出された場合、制御は直接ブロック１５０に移り、ライセンス・コンピュータ・プログラムの新たなライセンス記録の生成をバイパスする。
【００３６】
一旦ライセンス・マネージャが大域カウントを検索すると、制御はブロック１５４に移行し、大域カウントが、ライセンス・コンピュータ・プログラムに関連付けられる同時使用ライセンスに対して指定される制限を超えるか否かが判断される。超えない場合、制御はブロック１５６に移行し、"承認"コードを要求元アプリケーションに返却し、アプリケーションの実行の進行を許可する。しかしながら、大域カウントが制限を超える場合、制御は代わりにブロック１５８に移行し、decrementCount()要求をパーティション・マネージャに渡し、再度ライセンス・コンピュータ・プログラムの製品識別子を指定する。この要求が１６０で示される。
【００３７】
decrementCount()要求に応答して、使用トラッカ９２はカウント減分ルーチン１６２を実行する。このルーチンはブロック１６３で、ライセンス・リスト上で大域ロックを獲得することにより開始し、要求される製品識別子に関連付けられるライセンス記録を見い出す。制御は次にブロック１６４に移行し、ライセンス・コンピュータ・プログラムに対する大域カウント及び区画カウントの両方を減分する。次にブロック１６５で、大域カウントが０か否かを判断する。そうである場合、制御はブロック１６６に移行し、ライセンス記録の記憶を解放し、リンク・リストから記録を除去する。制御は次にブロック１６７に移行し、大域カウントをライセンス・マネージャに返却し（１６８で示される）、ブロック１６３で獲得された大域ロックを解除する。これでカウント減分ルーチン１６２は完了する。更に、ブロック１６５に戻り、大域カウントが０でない場合、制御はブロック１６６をバイパスして、ブロック１６７に直接移行する。
【００３８】
一旦大域カウントがカウント減分ルーチン１６２により返却されると、ライセンス・マネージャ９０はブロック１７０で、返却された大域カウントが、コンピュータ・プログラムに関連付けられるソフトウェア・ライセンス内に示される限界以上か否かを判断する。否定の場合、元の要求以来、同時使用が解除されたものと思われ、制御はブロック１４２に戻り、ライセンス・コンピュータ・プログラムを使用するライセンスの獲得を再試行する。しかしながら、大域カウントが限界以上の場合、制御はブロック１７２に移行し、"拒絶"コードを要求元アプリケーションに返却する。これでライセンス獲得ルーチン１４０が完了する。別の実施例では、ブロック１７０が省略され、ライセンスを獲得しようとする初期の試みが不成功の場合、再試行は行われない。
【００３９】
図５は、ライセンス・マネージャに関連付けられる論理区画内の１ユーザによるライセンス・コンピュータ・プログラムの終了に応答して、ライセンス・マネージャ９０により呼び出されるライセンス解除ルーチン１８０を示す。ライセンス解除ルーチン１８０はブロック１８２で、decrementCount()要求をパーティション・マネージャに渡すことにより開始し、終了されるライセンス・プログラムの製品識別子を指定する。この要求が１８４で示される。要求に応答して、使用トラッカ９２はカウント減分ルーチン１６２を実行し（図４に関連して前述）、１８６で示されるように、新たな大域カウントがライセンス・マネージャに返却される。カウント減分ルーチン１６２の完了時に、制御はブロック１８８に戻り、アプリケーションの終了が進行することを示す応答（ＡＣＫ）コードをアプリケーションに返却する。
【００４０】
図６は、区画カウントを検索するために、ライセンス・マネージャにより実行される区画カウント獲得ルーチン２００を示し、これは区画カウントをシステム・オペレータに表示するなど、より高度なライセンス管理機能を実行する際使用される。区画カウント獲得ルーチン２００はブロック２０２で、getCount()要求をパーティション・マネージャに渡すことにより開始し（２０４で示される）、ライセンス・コンピュータ・プログラムの製品識別子、及び区画カウントの獲得が所望される区画の区画識別子の両方を指定する。要求に応答して、使用トラッカ９２はカウント獲得ルーチン２０６を実行する。このルーチンはブロック２０８で、ライセンス・リスト上で大域ロックを獲得することにより開始し、要求される製品識別子に関連付けられるライセンス記録を見い出す。次に、ブロック２１０で、要求区画に関連付けられるカウントが返却され（２１２で示される）、ライセンス・リスト上で以前に要求された大域ロックが解除される。これでカウント獲得ルーチン２０６は終了し、制御がブロック２１４に戻り、ライセンス・マネージャはその意図した目的のために、区画カウントを使用する。また、要求される製品識別子に対して、ライセンス記録が存在するか否かなどを検証するために、カウント獲得ルーチン２０６内でエラー・チェックを実行することも望ましい。
【００４１】
図７は、ライセンス・マネージャにより実行される区画カウント・セット・ルーチン２４０を示し、これはライセンス・コンピュータ・プログラムに対する区画カウントを所定値にセットする。ブロック２４２に示されるように、ライセンス・マネージャ９０がこうした要求に応答して、setCount()要求をパーティション・マネージャに渡し、要求されるライセンス・コンピュータ・プログラムの製品識別子、所望のカウント、及び持続フラグの値を指定する。この機能呼び出しが２４４として示される。setCount()要求はカウント・セット・ルーチン２４６により処理され、このルーチンはブロック２４７で、ライセンス・リスト上で大域ロックを獲得することにより開始し、要求される製品識別子のライセンス記録を見い出そうとする。制御はブロック２４８に移行し、ライセンス記録が見い出されたか否かを判断する。
【００４２】
見い出されなかった場合、新たなライセンス・コンピュータ・プログラムが追跡されており、制御はブロック２４９に移行して、新たなライセンス・コンピュータ・プログラムのための新たなライセンス記録のための記憶を割当て、全てのカウントを０に初期化する。ライセンス記録はリンク・リストにも追加される。次にブロック２５０で、区画カウントを要求と一緒に提供された値にセットし、それに従い大域カウントを調整し（一般に元の区画カウントを減算し、新たな区画カウントを加算することによる）、新たな大域カウントをライセンス・マネージャに返却する（２５２で示される）。更に、ブロック２５０は持続フラグを、このルーチンに提供された値にセットし、ライセンス・リスト上で以前に獲得された大域ロックを解除する。また、ブロック２４８に戻り、ライセンス記録が見い出された場合、制御は直接ブロック２５０に移り、ライセンス・コンピュータ・プログラムの新たなライセンス記録の生成をバイパスする。
【００４３】
一旦ライセンス・マネージャが大域カウントを検索すると、制御はブロック２５４に移行し、大域カウントが、ライセンス・コンピュータ・プログラムに関連付けられる同時使用ライセンスに対して指定される制限を超えるか否かが判断される。超えない場合、制御はブロック２５６に移行し、その意図した目的のために新たな大域カウントを使用する。しかしながら、大域カウントが制限を超える場合、制御は代わりにブロック２５８に移行し、setCount()要求をパーティション・マネージャに渡し、今度は旧区画カウント（カウントをセットする最後の試行の前のカウント）を、ライセンス・コンピュータ・プログラムの製品識別子及び旧持続フラグと一緒に指定する。この要求が２６０で示され、カウント・セット・ルーチン２４６により前述のように処理される。区画カウントを元の値にセットすることにより、元の大域カウントが返却され（２６２で示される）、処理はブロック２６４により示されるように、旧大域カウントを用いて進行する。
【００４４】
図８は、ライセンス・マネージャにより実行される区画カウント除去ルーチン２７０を示し、これは所与のライセンス・コンピュータ・プログラムに対する区画カウントを除去する（０にする）。区画カウント除去ルーチン２７０はブロック２７２で、removeCount()要求をパーティション・マネージャに渡すことにより開始し（２７４で示される）、ライセンス・コンピュータ・プログラムの製品識別子を指定する。要求に応答して、使用トラッカ９２はカウント除去ルーチン２７６を実行する。このルーチンはブロック２７８で、ライセンス・リスト上で大域ロックを獲得することにより開始し、要求される製品識別子に関連付けられるライセンス記録を見い出す。次に、ブロック２８０で、要求区画に関連付けられるカウントがゼロ化され、大域カウントがそれに従い調整され、ライセンス・リスト上で以前に要求された大域ロックが解除される。これでカウント除去ルーチン２７６は終了し、制御がブロック２８４に戻る（２８２で示される）。また、要求される製品識別子に対して、ライセンス記録が存在するか否かなどを検証するために、カウント除去ルーチン２７６内でエラー・チェックを実行することも望ましい。
【００４５】
コンピュータ１０により実行される別のしばしば好適なライセンス管理機能は、区画の終了の処理である。例えば、図９に示されるように、区画終了ルーチン２２０が、コンピュータ１０上の２次区画の終了に応答して、使用トラッカ９２により実行され得る。区画終了ルーチン２２０は一般に、２次区画が終了されたことが検出された後、パーティション・マネージャにより呼び出される。区画のパワーダウンを処理するために、本発明に関係しない追加のオペレーションも、パーティション・マネージャにより実行される。このルーチンはブロック２２２で、ライセンス・リスト上で大域ロックを獲得することにより開始する。次にブロック２２４で、ライセンス・リスト内の最初のライセンス記録を獲得し、制御は次にブロック２２６に移行し、ポインタがヌルか否か、すなわちライセンス・リスト内の最後のライセンス記録が処理されたか否かを判断する。
【００４６】
処理されるべき追加のライセンス記録が残っている場合、制御はブロック２２８に移行し、現在処理されているライセンス記録の持続フラグ（図３のフィールド１１０内に含まれる）がセットされているか否かを判断する。セットされていない場合、制御はブロック２３０に移行し、区画カウントをヌル値にセットし、大域カウントから、終了された区画に以前に関連付けられた区画カウントを減分する。制御は次にブロック２３２に移行し、次のライセンス記録を獲得する。これは通常、現在処理されているライセンス記録の次フィールド１１４に記憶されるポインタを検索することにより、達成される。ブロック２２８に戻り、持続フラグがセットされている場合、制御はブロック２３０をバイパスして、直接ブロック２３２に移行する。
【００４７】
一旦次のライセンス記録が獲得されると、制御はブロック２３２からブロック２２６に移行し、ブロック２３２で検索されたポインタがヌルか否か、すなわち全てのライセンス記録が処理されたか否かを判断する。まだ追加のライセンス記録が処理されなければならない場合、制御はブロック２２８に移行する。それ以外では、区画終了ルーチン２２０は終了し、区画の終了に関連付けられる追加の処理が完了される。
【００４８】
本発明の趣旨及び範囲から逸れることなく、これまでに述べた実施例に対する様々な変更が可能である。例えば、ライセンス・マネージャ内で要求使用の承認または拒絶を判断するのではなく、こうした機能が全ての区画にとってアクセス可能な共用サービス内で実現されてもよい。しかしながら、各論理区画がライセンス・パラメータをここで開示したように、別々に管理できるようにすることにより、一部の実施例では、各論理区画に対して、可変のライセンス要求をサポートすることが可能になる（例えばある論理区画では３つの同時使用で、別の論理区画では５つの使用など）。
【００４９】
更に、ライセンス記録を動的に追加及び除去するのではなく、ライセンス記録を追加及び除去するために、例えばライセンス・コンピュータ・プログラムの導入及び削除の一部として、別々のサービスが提供されてもよい。
【００５０】
本発明に従う実施例により、多数の利点が実現される。例えば、ここで開示したようなライセンス管理は、一般に区画の数に関係なく、コンピュータが特定の態様で区画化されたり、ライセンス・コンピュータ・プログラムの導入時に、ユーザがコンピュータ上で使用されようとする区画の数を知ることを要求しない。また、多くの実施例では、ライセンス・コンピュータ・プログラムの追跡が開始された後、区画は動的に追加または除去され得るので、区画がコンピュータに追加または除去されるとき、全ての区画に渡る使用の総数が保守される。
【００５１】
【関連出願】
本願は以下の特許出願に関連する。Armstrongらによる１９９９年５月１９日付けの米国特許出願第          号"Apparatus and Method for Specifying Maxmum Interactive Performance in a Logical Partition of a Computer System Independently from the Maximum Interactive Performance in Other Partitions"（出願人整理番号：RO9-99-021）、Armstrongらによる１９９９年５月１９日付けの米国特許出願第          号"Processor Reset Generated via Memory Access Interrupt"（出願人整理番号：RO9-99-022）、Armstrongらによる１９９９年５月１９日付けの米国特許出願第          号"Event-Driven Communication Interface for Logically-Partitioned Computer"（出願人整理番号：RO9-99-024）、及びArmstrongらによる１９９９年５月１９日付けの米国特許出願第      号"Logical Partition Manager and Method"（出願人整理番号：RO9-99-025）。
【００５２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５３】
（１）論理的に区画化されたコンピュータにおいて、同時使用ソフトウェア・ライセンスを管理する方法であって、
ａ）論理的に区画化されたコンピュータ内の複数の論理区画に渡るコンピュータ・プログラムの同時使用を追跡し、
ｂ）第１の論理区画内でコンピュータ・プログラムを使用する要求の許可が、コンピュータ・プログラムに関連付けられる同時使用ソフトウェア・ライセンスに違反する場合、その要求を選択的に拒絶する方法。
（２）コンピュータ・プログラムの同時使用の追跡が、複数の論理区画によりアクセス可能なパーティション・マネージャにより実行され、第１の論理区画内でコンピュータ・プログラムを使用する要求に応答して、パーティション・マネージャをアクセスする前記（１）記載の方法。
（３）コンピュータ・プログラムの同時使用の追跡が、複数の論理区画に渡るコンピュータ・プログラムの同時使用の数の大域カウントの保持を含む前記（２）記載の方法。
（４）パーティション・マネージャへのアクセスに応答して、そこから大域カウントを受信し、大域カウントが同時使用ソフトウェア・ライセンスにより許可される同時使用の最大数に少なくとも等しいとき、要求の選択的な拒絶が要求を拒絶する前記（３）記載の方法。
（５）ａ）コンピュータ・プログラムを使用する要求が承認される度に、大域カウントを増分し、
ｂ）コンピュータ・プログラムの使用が終了される度に、大域カウントを減分する前記（３）記載の方法。
（６）各論理区画がローカル・ライセンス・マネージャを含み、要求に応答してのパーティション・マネージャのアクセスが、第１の論理区画内のローカル・ライセンス・マネージャにより実行される前記（５）記載の方法。
（７）大域カウントの増分及び減分の各々が、プログラム識別子をパーティション・マネージャに渡す前記（６）記載の方法。
（８）第１の論理区画のローカル・ライセンス・マネージャ内で、要求使用の許可が同時使用ソフトウェア・ライセンスに違反するか否かを判断する前記（６）記載の方法。
（９）複数の論理区画に渡り、複数のコンピュータ・プログラムの同時使用を追跡する前記（１）記載の方法。
（１０）ａ）複数の論理区画を含む論理的に区画化されたコンピュータと、
ｂ）コンピュータ内に存在する第１のプログラムとを含み、第１のプログラムが、複数の論理区画に渡る第２のプログラムの同時使用を追跡し、第１の論理区画内で第２のプログラムを使用する要求の許可が、同時使用ソフトウェア・ライセンスに違反する場合、その要求を選択的に拒絶することにより、コンピュータ内で第２のプログラムの同時使用ソフトウェア・ライセンスを管理するように構成される装置。
（１１）第１のプログラムが、
ａ）複数の論理区画によりアクセス可能で、複数の論理区画に渡る第２のプログラムの同時使用を追跡するように構成されるパーティション・マネージャと、
ｂ）第１の論理区画内でコンピュータ・プログラムを使用する要求に応答して、パーティション・マネージャをアクセスするように構成されるライセンス・マネージャと
を含む前記（１０）記載の装置。
（１２）パーティション・マネージャが、複数の論理区画に渡る第２のプログラムの同時使用の数の大域カウントを保持することにより、第２のプログラムの同時使用を追跡するように構成される前記（１１）記載の装置。
（１３）ライセンス・マネージャが、パーティション・マネージャへのアクセスに応答して、そこから大域カウントを受信し、大域カウントが同時使用ソフトウェア・ライセンスにより許可される同時使用の最大数に少なくとも等しいとき、要求を選択的に拒絶するように構成される前記（１２）記載の方法。
（１４）ライセンス・マネージャが、第２のプログラムを使用する要求が承認される度に、大域カウントを増分し、第２のプログラムの使用が終了される度に、大域カウントを減分するように構成される前記（１２）記載の装置。
（１５）ライセンス・マネージャが第１の論理区画内に存在し、各追加の論理区画が関連付けられるローカル・ライセンス・マネージャを含む前記（１４）記載の装置。
（１６）大域カウントが第２のプログラムのプログラム識別子に関連付けられ、ライセンス・マネージャがパーティション・マネージャをアクセスするとき、プログラム識別子をパーティション・マネージャに渡すように構成される前記（１４）記載の装置。
（１７）パーティション・マネージャが複数の論理区画に渡る複数のプログラムの同時使用を追跡するように構成される前記（１１）記載の装置。
（１８）ａ）複数の論理区画と、
ｂ）複数の論理区画に渡るコンピュータ・プログラムの同時使用を追跡するように構成されるパーティション・マネージャと、
ｃ）複数のライセンス・マネージャと
を含み、各ライセンス・マネージャが複数の論理区画の中の関連付けられる論理区画内に存在し、各ライセンス・マネージャが、関連付けられる論理区画内でコンピュータ・プログラムを使用する要求に応答して、パーティション・マネージャをアクセスするように構成される装置。
（１９）ａ）論理的に区画化されたコンピュータ内の複数の論理区画に渡る第２のプログラムの同時使用を追跡し、複数の論理区画の中の第１の論理区画内で第２のプログラムを使用する要求の許可が、同時使用ソフトウェア・ライセンスに違反する場合、その要求を選択的に拒絶することにより、論理的に区画化されたコンピュータ内で第２のプログラムの同時使用ソフトウェア・ライセンスを管理するように構成される第１のプログラムと、
ｂ）第１のプログラムを有する信号担持媒体と
を含むプログラム製品。
（２０）信号担持媒体が記録可能媒体及び及び伝送タイプの媒体の少なくとも１つを含む前記（１９）記載のプログラム製品。
【図面の簡単な説明】
【図１】本発明に従うコンピュータのブロック図である。
【図２】図１のコンピュータ内の主なソフトウェア・コンポーネント及び資源のブロック図である。
【図３】本発明に従うライセンス・リスト・データ構造のブロック図である。
【図４】図１及び図２のコンピュータ内のライセンス・マネージャにより開始されるライセンス獲得ルーチンのプログラム・フローを示すフロー図である。
【図５】図１及び図２のコンピュータ内のライセンス・マネージャにより開始されるライセンス解除ルーチンのプログラム・フローを示すフロー図である。
【図６】図１及び図２のコンピュータ内のライセンス・マネージャにより開始される区画カウント獲得ルーチンのプログラム・フローを示すフロー図である。
【図７】図１及び図２のコンピュータ内のライセンス・マネージャにより開始される区画カウント・セット・ルーチンのプログラム・フローを示すフロー図である。
【図８】図１及び図２のコンピュータ内のライセンス・マネージャにより開始される区画カウント除去ルーチンのプログラム・フローを示すフロー図である。
【図９】図１及び図２のコンピュータ内のパーティション・マネージャにより実行される区画終了ルーチンのプログラム・フローを示すフロー図である。
【符号の説明】
１０  データ処理装置
１２  システム・プロセッサ
１４  主記憶装置
１６  キャッシュ・サブシステム
１８  システム・バス
２０  入出力（Ｉ／Ｏ）バス接続インタフェース
２２  ワークステーション制御装置
２４  記憶制御装置
２６  外部ネットワーク
２８  ワークステーション
３０、６８、８０、８６、８８  直接アクセス記憶装置（ＤＡＳＤ）
４６  パーティション・マネージャ
４８  共用サービス
５２、５４、５６  オペレーティング・システム
７０  制御パネル
７２  テープ・ドライブ
７４、７８  光ディスク・ドライブ
７６、８２、８４  ローカル・エリア・ネットワーク（ＬＡＮ）・アダプタ
９０  ライセンス・マネージャ
９２  使用トラッカ
９４  ライセンス・アプリケーション
【図１】
0003954774.tif 000002
【図２】
0003954774.tif 000003
【図３】
0003954774.tif 000004
【図４】
0003954774.tif 000005
【図５】
0003954774.tif 000006
【図６】
0003954774.tif 000007
【図７】
0003954774.tif 000008
【図８】
0003954774.tif 000009
【図９】
0003954774.tif 000010