(57)【要約】  本発明は、マルチ・プロセッサ又はマルチ・コンピュータ環境内で共有されるリソースへのアクセスを、これらのプロセッサが物理的に並列に作業している間も含めて、管理する方法に関する。そのようなアクセス管理は、そのような並列環境を使用するマルチ・タスク・アプリケーション内でのプロセスの機能を安定させ又は最適化するために、そのようなリソース（例えば共有されるメモリ）へのアクセスの制御を実行するために特に有益である。  この方法は、特に、その起動期間のうちの少なくとも１つ（ＳｃｈＡ）に、アクセッシングと称される第１のタスク（ＴＡ）が、前記ターゲット・リソースへのアクセスを求めるリクエスト（ＩｎｓｔｒＡ）に応答して、アクセスを求める前記リクエストの直後に、前記ターゲット・リソースへの連続的と称されるアクセスを、すなわち、アクセッシング・タスクの全起動期間（ＳｃｈＡ）にわたって少なくとも１つの第２タスク（ＴＢ）による前記ターゲット・リソース（ＳｈＭＰｉ）へのアクセスを排除するように、割り当てることを含む。
2008529115.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つの演算装置（μＰｒｏＸ，μＰｒｏＹ）において同時に数個のタスクを実行することのできる複数の計算手段を含む並列コンピュータ・システムにおいて実行される少なくとも１つのコンピュータ・アプリケーション（ＡＰＰ）の中で複数のプログラム・タスク（ＴＡ，ＴＢ）を順次起動を通して管理するシステム・ソフトウェアで実行されるアクセス管理方法であって、この方法は、前記タスク（ＴＡ，ＴＢ）によりアクセス可能な少なくとも１つの共有されるターゲット・リソースと称されるリソース（ＳｈＭＰｉ）へのアクセスを管理し、
アクセッシング・タスクと称される第１のタスク（ＴＡ）が、その起動期間のうちの少なくとも１つ（ＳｃｈＡ）に、前記ターゲット・リソースへのアクセスを求めるリクエスト（ＩｎｓｔｒＡ）に応答して、アクセスを求める前記リクエストの直後に、前記ターゲット・リソースへの排他的と称されるアクセスを、すなわち、前記アクセッシング・タスクの前記起動期間（ＳｃｈＡ）の残余全体の間に少なくとも１つの第２タスク（ＴＢ）による前記ターゲット・リソース（ＳｈＭＰｉ）へのアクセスを排除するように、受信することを特徴とする方法。
【請求項２】
前記演算装置の少なくとも１つ（μＰｒｏＸ）は、前記並列コンピュータ・システムのメモリ空間（ＲＡＭ）内に格納されている存在データと称される少なくとも１つのデータ（ＰｒｉＡ）の値の関数として、所与のリソースへのアクセスを要求するプログラム命令の実行を中断させ、障害管理ソフトウェア・エージェントへのコールをトリガーすることのできる中断メカニズム（ＰＦＩｎｔＸ）を含み、この方法は、
−  前記アクセッシング・タスク（ＴＡ，ＴＢ）の起動の期間（ＳｃｈＡ，ＳｃｈＢ）において、前記ターゲット・リソースへのアクセスを要求（３３，３７）する第１命令（ＩｎｓｔｒＡ，ＩｎｓｔｒＢ）の実行を中断（ＰＦＩｎｔＸ，ＰＦＩｎｔＹ）するステップと、
−  前記メモリ空間に格納されているアクセス・データ（ＫＳｉ）と称される少なくとも１つのデータをフォールト・ハンドラ（ＰＦＨ）がテストし（３４）、前記ターゲット・リソースが前記アクセッシング・タスク（ＴＡ，ＴＢ）を排除する排他的アクセスで他のタスクに現在割り当てられているか否かを示すステップと、、
−  そのような排他的アクセスが他のタスク（ＴＡ）に既に割り当てられている場合に、前記アクセッシング・タスク（ＴＢ）の実行を一時停止（３９）又はその起動期間を終止するステップと、
−  そうでない場合には、前記ターゲット・リソース（ＳｈＭＰｉ）に適用される排他的アクセスの前記アクセッシング・タスク（ＴＡ）への割り当てを表す少なくとも１つのアクセス・データ（ＫＳｉ）の前記メモリ空間に格納（３４）するステップと、
−  前記アクセッシング・タスク（ＴＡ）の前記起動の期間（ＳｃｈＡ）の最後の命令の実行中又はこの最期の命令の後に、前記ターゲット・リソース（ＳｈＭＰｉ）を解放するために、前記ターゲット・リソースについて得られたその排他的アクセスを表す前記アクセス・データ（ＫＳｉ）を改変（３０３）するステップと、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ターゲット・リソースの前記アクセス・データをテストする前記ステップが前記リソースが、前記アクセッシング・タスクのために自由であることを示すときには、前記テスト・ステップに続く排他的アクセスを格納するステップがこのテスト・ステップと共に前記並列コンピュータ・システムの機能の中の単一の原子的動作（３４）を構成することを特徴とする請求項２に記載の方法。
【請求項４】
スケジューラ（ＳＣＨ）と称されるソフトウェア・エージェントによるタスク（ＴＡ）の一時停止（ＳＣＨＡＬ）の後又は一時停止のときに、前記タスクが排他的アクセスを保持している全ての共有されるリソースを識別して解放するために、前記一時停止されたタスク（ＴＡ）に対応する全ての前記存在データ（ＰｒｉＡないしＰｒｋＡ）をテスト（３０２）することを含む終止ステップを更に含むことを特徴とする請求項２又は３の１つに記載の方法。
【請求項５】
前記タスクの起動の期間（ＳｃｈＡ）を開始させるスケジューラ（ＳＣＨ）と称されるソフトウェア・エージェントによるタスク（ＴＡ）の解放（ＳＣＨＡＬ）の前又は解放のときに、前記起動期間中これらの共有されるリソースの１つに対するこのタスクによる各第１アクセス・リクエストが中断ステップ（ＰＦＩｎｔＸ）をトリガーするように、前記タスク（ＴＡ）によりアクセスされ得る全ての前記共有されるリソース（ＳｈＭＰｉないしＳｈＭＰｋ）に前記タスクについて対応する全ての前記存在データを初期化するステップ（３３）を更に含むことを特徴とする請求項２ないし４の１つに記載の方法。
【請求項６】
前記存在データ初期化ステップ（３３）は、解放された前記タスク（ＴＡ）に対応して、前記タスクが監視されるべきか否か、すなわち前記アクセス管理方法が前記タスクに適用されるべきか否かを示す、管理データ（ＭｍＡ）と称されるデータの値のテスト（３１）の結果に従うことを特徴とする請求項５に記載の方法。
【請求項７】
少なくとも１つの新しいタスク（ＴｈｒＢ２）が現存するタスク（ＴｈｒＢ１）から少なくとも１つの生成ソフトウェア・エージェント（ＣＬＯＮＥ，ＣＳＵＰ）によってインスタンス化又は生成され、この生成は、前記現存するタスク（ＴｈｒＢ１）に対応して前記共有されるリソースに関連する存在データ（ＰｒｉＢ１）から出発して、前記新しいタスク（ＴｈｒＢ２）に対応する、共有されるリソース（ＳｈＭＰｉ）に関連する少なくとも１つの存在データ（ＰｒｉＢ２）を生成（２２，２３）することを含むことを特徴とする請求項１ないし６の１つに記載の方法。
【請求項８】
前記新しいタスク（ＴｈｒＢ２）に対応する少なくとも１つの存在データ（ＰｒｉＢ２）は、前記存在データが関連する前記共有されるリソース（ＳｈＭＰｉ）の割り当てに対して行われた改変に応じて、割り当てソフトウェア・エージェント（ＭＡＰ，ＭＳＵＰ）により更新されることを特徴とする請求項７に記載の方法。
【請求項９】
少なくとも１つの監視されるタスク（ＴＡ）を含む少なくとも１つのアプリケーション（ＡＰＰ）の実行は、前記タスク（ＴＡ）が監視されなければならないことを示す少なくとも１つの管理データ（ＭｍＡ）を記憶するランチャと称されるソフトウェア・エージェント（ＬＣＨ）により開始させられることを特徴とする請求項６ないし８の１つに記載の方法。
【請求項１０】
前記方法は、ユニックス又はリナックス型のオペレーティング・システム内で実行され、“生成”又は“クローン”又は“マップ”型のシステム・コールの、或いはスケジューラ・ソフトウェア・エージェント（ＳＣＨ）の、或いはコンテキスト・チェンジ・マネージャの解放及び一時停止ルーチンの、或いはページ・フォールト・ハンドラ・ソフトウェア・エージェント（ＰＦＨ）の、或いはカーネル・メモリ・ストラクチャ・データ・テーブル（ＫＭＳｔｒ）の改変又は計装化を含むことを特徴とする請求項１ないし９の１つに記載の方法。
【請求項１１】
少なくとも１つのシステム・コールが、改変されたルーチンの事前ロードされたライブラリを用いるダイナミック・インターポジション手法を通して計装化されることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記方法はコンピュータ・ネットワークの少なくとも１つのノードの中で実行されることを特徴とする請求項１ないし１１の１つに記載の方法
【請求項１３】
請求項１ないし１２の１つに記載の方法を実行するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチ・プロセッサ又はマルチ・コンピュータ環境内で共有されるリソースへのアクセスを、これらのプロセッサが物理的に並列に作業している間も、管理する方法に関する。そのようなアクセス管理は、そのような並列環境を使用するマルチ・タスク・アプリケーション内でのプロセスの機能を安定させ又は最適化するために、そのようなリソース（例えば共有されるメモリ）へのアクセスの制御を実行するために特に有益である。
【背景技術】
【０００２】
並列環境は一般に現存するハードウェア・エレメントから、より大きな計算能力を得るために設計され使用される。大抵の場合に、これは、本質的にこれを念頭において設計された技術的な又は科学的なアプリケーションにおける煩わしくて複雑な計算の実行に当てはまる。
【０００３】
このような環境は、数個のプロセッサを単一のコンピュータに統合することにより作られ得、これは、これに要求される計算作業をそれらに分配する。時には数個のコンピュータがネットワークで結合されて、ユーザの介入を殆ど又は全く受けずに一定の作業負荷を分担するように管理される。
【０００４】
これらのいろいろな特定のエレメント（プロセッサ又はコンピュータ）が、後に再順序付けされる別々のタスクに対して同時に作業を行うことができるときには、例えば、単一のエレメントの作業時間を数個の仮想作業区域で分け合うことによりシミュレートされる並列性と対立するものとしての物理的並列性という用語が使用される。
【０００５】
マルチ・プロセッサ又はマルチ・コンピュータを必要とする物理的並列能力を備えた現存する環境は、大抵、全体として最大の計算能力を得るように設計され最適化される。そのために、いろいろなエレメントは、なるべく遠くに切り離され、エレメント間で殆ど協調すること無く、作業する。
【０００６】
例えばコスト或いは柔軟性についての理由から、大型の中央コンピュータの代わりに単独の又はグループを成すマイクロ・コンピュータ又はワークステーションを使用しようとすることが良くある。そのような機械は、より大きな能力を求めて並列に作業するマルチ・プロセッサ・バージョンとして存在し、或いは外部に対して単一の並列作業環境を構成する、すなわち外部に対して単一のレスポンデントとして振舞う、ネットワーク自体の中で並列に作業するために、グループ化され得る。
【０００７】
従って、膨大な計算アプリケーション、特に、企業経営領域、或いはワークステーション・ネットワーク、或いは通信ネットワークにおいて普通のトランザクション型のマルチ・タスク・アプリケーション、とは異なる或いは違うアプリケーションを実行するためにそのような並列環境を使用することは興味あることであろう。そのようなアプリケーションは、様々な構造を良く有し、同じ環境内で共有されるリソースを使用する数個のタスクを非常に良く含む。
【０００８】
しかし、これらのオペレーティング・システム又はこれらのアプリケーションは、モノ・プロセッサ・マシンのために設計されるので、物理的並列の場合のように実際に同時に実行されている２つのタスク間の干渉を処理するように設計されていないことが良くある。従って、同時に実行される数個のタスクが単一のデータにアクセスしなければならないときには（“競合状態”）、タスクによる読み出しの結果は、その読み出しの前又は後に別のタスクによる変更が生じたか否かによって非常に異なり得る。
【０００９】
また、マルチ・タスク・オペレーティング・システムの大多数は、実際に並列に作業する環境を管理するために設計されておらず、まして、共有されているリソースを直接アクセスで管理するためには設計されていない。共有タイプのアクセスのうち、初めに“マップ”型の命令により定められる共有されるメモリ・ゾーンのような、プログラム命令からのアドレス指定によりアクセス可能なものは直接アクセスと見なされ得る。
【００１０】
“オープン”、“リード”又は“ライト”のようなシステム・コールを用いて“パイプ”又は“ソケット”タイプのメッセージを渡すためのリソースのような、システム・コールを必要とする他の共有されるリソースに対立するものとして、並列の数個のタスクによる、直接アクセスを通してのこのタイプの共有リソースへのアクセスは、一般にシステム・ソフトウェアによって少し管理されるか或いは全く管理されない。従って、直接アクセスを通しての共有リソースへのアクセスの管理は、大抵、並列環境では殆ど完全にアプリケーションのタスクである。
【００１１】
従って、このタイプの環境では、これのために設計されていない現存するアプリケーションの使用は、それらがこの目的のために僅かに改変されるか或いは全く改変されなければ（レガシー・アプリケーション）、しばしば多数の問題を引き起こす。場合によっては、例えば単一のアプリケーションの中で別々のタスク間での干渉が管理されないために実行がランダムになるか或いは不可能にさえなり得る。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の１つの目的は、広範或いは柔軟或いは良好に働く、並列環境内での共有されるリソースへのマルチ・タスクでのアクセスの管理又は制御を可能にすることである。
【００１３】
アプリケーションの機能が実行可能であったとしても、その実行は、このアプリケーションの機能の管理を実行するために問題を引き起こす可能性のある非確定的側面を非常にしばしば含む。そのような機能管理は、１つ以上のコンピュータの中での（それらが孤立していても例えば“クラスタ”の形でネットワーク化されていても）そのようなアプリケーションの実行を信頼可能化し、追跡又はデバッグ又は分散（“ロード・バランシング”）できるように、探求され得る。
【００１４】
しかし、このタイプの機能管理は、後に同様の又は同一の仕方でそのランニングを再生できるように、１つ以上のタスクの働きをロギングすることをしばしば含む。これらのロギング又は再生動作を、それに伴う性能低下を制限しながら、実行するためには、特に、それらの動作がもたらす結果において、管理されるタスク或いは管理されるアプリケーションに比して確定的である動作をこのランニングがなるべく含むことが有利である。
【００１５】
従って、並列構造を含む１つ以上のハードウェア環境内でこのようなアプリケーションを管理することをこの様に可能にするために、このアプリケーションで実行される動作のなるべく多くについて確定的挙動を得られることが重要である。
【００１６】
本発明の１つの目的は、共有されるリソースにアクセスする全ての又は一部の動作について、並列環境で確定的な挙動を得ることである。
【課題を解決するための手段】
【００１７】
このために、本発明は、各々のタスクが、それがシステムにより起動させられている期間全体の間、共有されているリソースへの排他的アクセスを得られるように、特に直接アクセスで、共有されるリソースへのアクセスを管理または制御することを可能にする方法を提案する。
【００１８】
この方法は、特に、少なくとも２つの演算装置において同時に数個のタスクを実行することのできる複数の計算手段を含む並列コンピュータ・システムにおいて実行される少なくとも１つのアプリケーションの中で複数のプログラム・タスクを順次起動（ｓｅｑｕｅｎｔｉａｌ  ａｃｔｉｖａｔｉｏｎ）を通して管理するシステム・ソフトウェアにおいて実行される。この関係で、この方法は、前記タスクによりアクセス可能な少なくとも１つの共有されるリソース（ターゲット・リソースと称される）へのアクセスを管理する。
【００１９】
この管理はアクセッシング・タスク（ａｃｃｅｓｓｉｎｇ  ｔａｓｋ）と称される第１のタスクを含み、このタスクは、その起動期間のうちの少なくとも１つの間に前記ターゲット・リソースへのアクセスを求めるリクエストに応答して、アクセスを求める前記リクエストの直後に、前記ターゲット・リソースへの排他的（又は“連続的”）と称されるアクセスを、すなわち、アクセッシング・タスクの起動期間の残余全体の間に少なくとも１つの第２タスクによる前記ターゲット・リソースへのアクセスを排除するように、受ける。
【００２０】
この方法は、並列コンピュータ・システムにおいて有利に実行され、その並列コンピュータ・システムでは、演算装置の少なくとも１つは、前記コンピュータ・システムのメモリ空間内に格納されている存在データと称される少なくとも１つのデータの値の関数として、所与のリソースへのアクセスを要求するプログラム命令の実行を中断させ、障害管理ソフトウェア・エージェントへのコールをトリガーすることのできる中断メカニズムを含む。
【００２１】
本方法は、次のステップ、すなわち
−  アクセッシング・タスクの起動の期間において、ターゲット・リソースへのアクセスを要求する第１命令の実行を中断するステップ、
−  前記メモリ空間に格納されているアクセス・データと称される少なくとも１つのデータを障害マネージャがテストし、前記ターゲット・リソースが前記アクセッシング・タスクを排除する排他的アクセスで他のタスクに現在割り当てられているか否かを示すステップ、
−  そのような排他的アクセスが他のタスクに既に割り当てられている場合に、アクセッシング・タスクの実行を一時停止又はその起動期間を終止するステップ、
−  それとは反対の場合には、前記ターゲット・リソースに適用される排他的アクセスのアクセッシング・タスクへの割り当てを表す少なくとも１つのアクセス・データを前記メモリ空間に格納するステップ、
−  アクセッシング・タスクの起動の期間の最後の命令の実行中又はこの最期の命令の後に、ターゲット・リソースを解放するために、ターゲット・リソースについて得られたその排他的アクセスを表すアクセス・データを改変するステップ、
をも含む。
【００２２】
有利には、本発明は、ターゲット・リソースのアクセス・データをテストするステップが、リソースがアクセッシング・タスクのために自由であることを示すときには、前記テスト・ステップに続く排他的アクセスを格納するステップがこのテスト・ステップと共に並列コンピュータ・システムの機能の中の単一の原子的動作を構成することを特徴とする。
【００２３】
より具体的には、本方法は次のステップ、すなわち
−  スケジューラと称されるソフトウェア・エージェントによるタスクの一時停止の後又は一時停止のときに、前記一時停止されたタスクが排他的アクセスを保持している全ての共有されるリソースを識別して解放するために、一時停止されたタスクに対応する全ての存在データをテストすることを含む終止ステップ、
−  前記タスクの起動の期間を開始させるスケジューラと称されるソフトウェア・エージェントによるタスクの解放の前又は解放のときに、前記起動期間中これらの共有されるリソースの１つに対するこのタスクによるこの第１アクセス・リクエストがそのような中断ステップをトリガーするように、前記タスクによりアクセスされ得る全ての共有されるリソースに前記タスクについて対応する全ての存在データを初期化するステップ、
のうちの１つ以上を含む。
【００２４】
１つの特徴によれば、存在データ初期化ステップは、解放されたタスクに対応して、前記タスクが監視されるべきか否か、すなわちアクセス管理方法が前記タスクに適用されるべきか否かを示す、管理データと称されるデータの値のテストの結果に従う。
【００２５】
本発明によれば、少なくとも１つの監視されるタスクを含む少なくとも１つのアプリケーションの実行は、前記タスクが監視されなければならないことを示す少なくとも１つの管理データを記憶するランチャと称されるソフトウェア・エージェントにより開始させられ得る。
【００２６】
本発明によれば、アクセス管理を実行するソフトウェア構造のセットアップは、特に、現存するタスクから始まる、少なくとも１つの生成ソフトウェア・エージェントによる少なくとも１つの新しいタスクの生成又はインスタンス化を含むことができる。このタスク生成は、前記現存するタスクに対応して前記共有されるリソースに関連する存在データから出発して、前記新しいタスクに対応する、共有されるリソースに関連する少なくとも１つの存在データを生成することを含む。
【００２７】
更に、新しいタスクに対応する少なくとも１つの存在データは、マッピングに対して行われた改変に応じて、又は前記存在データが関連する共有されるリソースの割り当てに応じて、割り当てソフトウェア・エージェント（例えばマッピング・エージェント）により更新される。
【００２８】
本発明は、このセットアップとその更新との少なくとも一方を、システム内の、特にシステム・ソフトウェアの、純粋にソフトウェアのエレメントの改変又は計装化によって実行することも提案する。
【００２９】
そのような改変又は計装化は、特に、改変されたルーチンが事前ロードされているライブラリを用いるダイナミック・インターポジション手法により、少なくとも１つのシステム・コールのために、実行され得る。
【００３０】
本発明による方法は、特にユニックス又はリナックス型のオペレーティング・システム内で実行され得、そして“生成”又は“クローン”又は“マップ”型のシステム・コールの、或いはスケジューラ・ソフトウェア・エージェントの、或いはコンテキスト・チェンジ・マネージャの解放及び一時停止ルーチンの、或いはページ・フォールト・ハンドラ・ソフトウェア・エージェントの、或いはカーネル・メモリ・ストラクチャ・データ・テーブルの改変又は計装化を含む。
【００３１】
従ってこれは、例えば、ミドルウェア型の１つ以上の機能性管理アプリケーションにより管理されるクラスタを構成するネットワークなどのコンピュータ・ネットワークの少なくとも１つのノードの中で有利に実行され得る。従って本方法は、特に命令のシーケンスのロギング及び再生のときに、この機能管理の性能及び機能の拡張又は最適化を可能にする。
【００３２】
同じ環境において、本発明は、並列型の１つ以上のコンピュータ・システムに使用され或いは並列型システムを構成し、そして場合によってはネットワークで使用される、本発明の実行を含むシステムをも提案する。
【００３３】
本発明の他の特徴及び利点は、決して限定的ではない実施態様の方法についての詳細な記述と、添付図面とから明らかになろう。
【発明を実施するための最良の形態】
【００３４】
図１において並列マルチ・プロセッサ環境の機能の例が示されており、それはマルチ・プロセッサ環境（例えばリナックス型のシステム）における第１プロセッサμＰｒｏＸ  及び第２プロセッサμＰｒｏＹを含む。これら２つのプロセッサは、単一の作業メモリ空間ＲＡＭの中で並列に夫々タスクＴＡ及びＴＢを各々実行し、スケジューラによって調整される。各タスクＴＡ及びＴＢの起動期間中、そのプログラムＥＸＥＡ、ＥＸＥＢからの命令のシーケンスＳｃｈＡ、ＳｃｈＢがプロセッサμＰｒｏＸ、μＰｒｏＹにおいて実行される。このシーケンスからの命令ＩｎｓｔｒＡ、ＩｎｓｔｒＢの実行中、プロセッサは、レジスタＲｅｇＡ，ＲｅｇＢ、スタックＰｉｌＡ，ＰｉｌＢなどの、その内部のリソースを使用することができる。
【００３５】
作業メモリＲＡＭの中に、数個の共有されるメモリ・ゾーンＳｈＭＰｉないしＳｈＭＰｋが例えば“マップ”型の命令により確定されて、いろいろなタスクＴＡ及びＴＢからそれらの物理的アドレスにより直接アクセスされ得る。
【００３６】
図１は従来技術からの事態を示しており、タスクＴＡ及びＴＢは共通の期間にわたって並列に実行され、単一の共有されるメモリ・ゾーンＳｈＭＰｉへのアクセスを要求する命令ＩｎｓｔｒＡ及びＩｎｓｔｒＢを各々含む。これら２つのアクセス・リクエストは各プロセッサのメモリ管理ユニットＭＭＵによって独立に処理１１，１３され、互いに無関係にこの共有されるメモリ・ゾーンに到達１２，１４する。
【００３７】
システム・コール型の一定の命令からだけアクセス可能であるリソースについては、これらの命令を実行するシステム・ルーチンを計装化すること、すなわちこれらのルーチンを改変すること或いはこれらのシステム・コールを遮断（ｉｎｔｅｒｃｅｐｔ）するか又はこれらのシステム・コールに反応するエレメントをシステムに挿入することが可能である。ロギング及び再生による機能管理の関係では、この計装化は、後にそれを同一に再生できるようにするために、或いはこの動作が確定的になって記録不要となるようにこの動作を改変するために、特にその動作の記録を可能にすることができる。
【００３８】
これに反して、システム・コール無しで、従って潜在的に任意のプログラム命令から直接アクセス可能なリソースについては、大抵のオペレーティング・システムは、特にユニックス又はリナックス型のものは、この共有されるメモリ・ゾーンＳｈＭＰｉのレベルでこれらのアクセスの到着を制御することを可能にしない。
【００３９】
この問題を解決するために、図２及び３に示されているように、本発明は、現在他の機能のために使われている一定の現存するハードウェア機能を改変又は拡張するように、一定のシステム・ソフトウェア・エレメントのコードを改変すること、或いは一定の他のものを付け加えること、を提案する。
【００４０】
特に、現在のプロセッサのハードウェア特性を改変せずに、ユニックス又はリナックス型のシステム・ソフトウェアの少数のエレメントを改変することによって、この問題を解決することが可能である。従って、その上位互換性を犠牲にすること無く機能を付け加える少数の改変を現存するシステム・ソフトウェアにもたらすことによって、少し改変されたか又は改変されていないマルチ・タスク・アプリケーションを実行し管理するために、ありふれたタイプの、従って経済的で良く保証されている、機械を使用することが可能である。
【００４１】
このために、本発明は、例えばインテル社のペンティアム（Ｐｅｎｔｉｕｍ）プロセッサやＡＭＤ社のアスロン（Ａｔｈｌｏｎ）などの、ＰＣタイプのアーキテクチャに使用されるプロセッサのような最近の幾つかのマイクロ・プロセッサに存在する一定のメカニズムを使用する。これらの、特にペンティアム２以後の、プロセッサは、そのメモリ管理ユニットの中に仮想メモリ管理メカニズムを統合している。このメカニズムは、作業メモリにおいて確定されている一定のページを、それらが使用されない時にハードディスクに“アンロード”し、また、物理的メモリ内の対応するスペースを解放するためにそれらをそこに格納するために、使用される。現在実行中のアプリケーションのために、これらのページは依然として作業メモリにおいてリストされるが、それらは、タスクが実際にそれにアクセスできるようにハードディスクから物理的メモリに再び“ロード”されなければならない。
【００４２】
この仮想メモリを管理するために、図３に示されているように、システム・ソフトウェアは仮想メモリ・マネージャＶＭＭを含んでおり、これは、仮想化可能なメモリの各ページについて、いろいろなアプリケーション・プロセスの各々の中にページ・テーブル・エントリ（“Ｐ．Ｔ．Ｅ．”）を生成する。プロセスの形で、すなわちそれに属する実行コンテキストで各々実行される２つのタスクＴＡ及びＴＢについて、ページＳｈＭＰｉないしＳｈＭＰｋの各々は、タスクＴＡのプロセスでページ・テーブル・エントリＰＴＥｉＡないしＰＴＥｋＡを、またタスクＴＢのプロセスでページ・エントリ・テーブルＰＴＥｉＢないしＰＴＥｋＢを得る。
【００４３】
仮想メモリ・マネージャＶＭＭはページ・ローダ・ソフトウェアＰＬを含んでおり、これはメモリ・ページをハードディスク上の“スワップ”ファイルにロードしアンロードするが、それは例えばマイクロソフト社のウィンドウズ・システムにおいて拡張子“．ｓｗｐ”を有するファイルである。ＳｈＭＰｉページの各々のロード及びアンロードの間、物理的メモリにおけるその存在又は不存在の状態は、ＶＭＭマネージャによって、それに対応するページ・テーブル・エントリＰＴＥｉＡ及びＰＴＥｉＢの各々に格納され維持３０される。これらのテーブルＰＴＥｉＡ及びＰＴＥｉＢの中では、この存在状態は夫々データ・ビットＰｒｉＡ及びＰｒｉＢの形で、存在については値１で不在については値０で、格納される。
【００４４】
各プロセッサμＰｒｏＸ及びμＰｒｏＹの中で、メモリ・マネージャＭＭＵＸ又はＭＭＵＹはページ・フォールト・インターラプト・メカニズムＰＦＩｎｔＸ又はＰＦＩｎｔＹを含み、これを、実行されたプログラム命令ＩｎｓｔｒＡ又はＩｎｓｔｒＢから生じたアクセス・リクエストが通過する。もしプロセッサμＰｒｏＸにより実行されるタスクＴＡからの命令ＩｎｓｔｒＡがメモリ・ページＳｈＭＰｉに関連するアクセスを要求３３したならば、このプロセッサの中断メカニズムＰＦＩｎｔＸは、対応するエントリ・テーブルＰＴＥｉＡ内のその存在ビットＰｒｉＡの値を読むことによって、このページが物理的メモリＲＡＭ内に存在するか否か検査する。
【００４５】
もしこのビットＰｒｉＡがそのページの存在を示すならば、中断メカニズムＰＦＩｎｔＸはアクセスを許可する。反対の場合、この中断メカニズムＰＦＩｎｔＡは、タスクＴＡの実行を中断させて、システム・ソフトウェアの仮想メモリ・マネージャＶＭＭに含まれる“ページ・フォールト・ハンドラ”ソフトウェア・エージェントＰＦＨにエラーのパラメータを送る。このフォールト・ハンドラＰＦＨはそのとき実行されて、このエラーの結果をシステム・ソフトウェア内でアプリケーションに関して管理する。
【００４６】
図２は、本発明によって共有されるリソースへのアクセスを管理するためにこれらの現存するメカニズムがどのように改変改造若しくは転用されるかを示す。
【００４７】
そのような並列環境で実行されるアプリケーションＡＰＰからのこれらのアクセスを管理するために、図２に示されているように、例えばユニックス又はリナックス型のシステムにおいて、このアプリケーションの実行を開始させるためにランチャ・ソフトウェアＬＣＨが使用される。その開始時に、アプリケーションＡＰＰに、実行“スレッド”ＴｈｒＡ１を含み、タスク・デスクリプタＴＤＡを形成するデータベースを用いるプロセスの形の第１タスクＴＡが生成される。
【００４８】
このタスク・デスクリプタＴＤＡ内に、ランチャは、ここで管理ビットＭｍＡと称される通常使用されないデータ・ビットの状態を１に変更することによって、このタスクＴＡが管理或いは“監視”されなければならないという事実を格納２１する。
【００４９】
ここで共有されるメモリ・ページＳｈＭＰｉ，ＳｈＭＰｊ，及びＳｈＭＰｋと称される、作業メモリ内のいろいろな共有されるメモリ・ゾーンは、タスクＴＡ内でページ・メモリ構造ＰＭＳｔｒＡを形成するデータ・テーブルにリストされる。この構造ＰＭＳｔｒＡにおいて、共有されるページは、前記のように仮想メモリ・マネージャＶＭＭにより使用されるデータ・ビットＰｒｉＡ１ないしＰｒＫＡ１を各々組み込んだページ・テーブル・エントリＰＴＥｉＡ１ないしＰＴＥｋＡ１の形で記述され更新される。通例、このページ構造ＰＭＳｔｒＡは、タスクＴＡと同時に生成されて、共有されるメモリにおける変化と共に、それらの変化を保証する“マップ“型のルーチンのようないろいろなシステム・ルーチンによって、更新２０される。
【００５０】
管理されるアプリケーションＡＰＰの実行中に、この第１タスクＴＡから又は同様に生成された他のものから、“生成”型の命令ＣＲＥによって他のタスクが生成され得る。新たに生成されたタスクＴＢも、スレッドＴｈｒＢ１とタスク・デスクリプタＴＢと、ページ・メモリ構造ＰＭＳｔｒＢとを含む。その親タスクからの継承関係ＩＮＨを通して、同様に最新に保たれるその存在ビットＰｒｉＢ１ないしＰｒｋＢ１を伴ういろいろなページ・テーブル・エントリＰＴＥｉＢ１ないしＰＴＥｋＢ１を含む。
【００５１】
監視されるタスクＴＡからの新タスクＴＢの生成ＣＲＥ時に、新タスクのデスクリプタＴＤＢも管理ビットＭｍＢを含み、その値は親タスクからの管理ビットＭｍＡから継承ＩＮＨされる。
【００５２】
管理されるアプリケーションＡＰＰの実行中に、初めに単一のスレッドＴｈｒＢ１を有するプロセスの形で機能したタスクＴＢの中に他のスレッドが生成され得る。
【００５３】
現存して監視されるタスクＴＢの中で、“クローン”命令のようなシステム・コールによって新しいスレッドＴｈｒＢ２が生成される。通例、マルチ・スレッド・プロセスの形のタスクは、そのページ構造ＰＭＳｔｒＢの中にエントリ・テーブルＰＴＥｉＢ１ないしＰＴＥｋＢ１の唯一のセットを含む。本発明により、“クローン”システム・コールのような新しいスレッドを生成することのできるシステム・ルーチンの機能は、例えばそれに補助部分ＣＳＵＰを統合することによって、改変される。この改変は、現存するタスクＴＢにおける新しいスレッドＴｈｒＢ２の生成が、テーブルＰＴＥｉＢ１ないしＰＴＥｋＢ１の現存するセットの読み出し２２と、同じ共有されるページＳｈＭＰＩないしＳｈＭＰｋに対応して特に新しいスレッドＴｈｒＢ２で機能するページ・テーブル・エントリＰＴＥｉＢ２ないしＰＴＥｋＢ２の新しいセットの生成２３とを含むように、設計される。この改変は、例えば、同じ出願人からのフランス（ＦＲ）特許第２  ８２０  ２２１号に記載されているように、システム内の共有されるライブラリのロードを通してのダイナミック・インタポジションの手法を用いることによって、これらのルーチンＣＬＯＮＥの計装化により行われ得る。
【００５４】
この生成は、新しいテーブルＰＴＥｉＢ２ないしＰＴＥｋＢ２もそれらの親テーブルＰＴＥｉＢ１ないしＰＴＥｋＢ１と同様に、それらをこの更新を管理するシステム・ルーチンＭＡＰに更新のために登録することにより、又はこれらのシステム・ルーチンＭＡＰを例えばそれらに補助部分ＭＳＵＰを統合することによって計装化することにより、最新に保たれる２４，２５ことを保証するように、行われる。
【００５５】
図３は、２つのプロセッサμＰｒｏＸ及びμＰｒｏＹで並列に実行される２つのモノ・スレッド・タスクＴＡ及びＴＢを含む例に適用されたこの構造を使用するアクセス管理の機能を示す。各タスク内でクローニングされた各スレッドＴｈｒＢ２へのページ・テーブル・エントリＰＴＥの構造の拡張は、監視されるタスク（それらがモノ・スレッドであってもマルチ・スレッドであっても）に属する全てのスレッドから生じたどんなアクセスをも同様に管理することを可能にする。
【００５６】
ここに記載される実施態様では、本発明によるアクセス管理は、共有されるメモリ・ページへの、それらのコヒーレンス（又は整合性）がシステム・ソフトウェアによって保証される起動期間の全体にわたって排他的であるアクセスを、プロセスＴＡ又はＴＢの意味での、また各スレッドＴｈｒＢ１又はＴｈｒＢ２の意味での、各タスクに保証するために、構成される。そのような期間はここではシステム・ソフトウェアのスケジューラＳＣＨにより割り当てられ管理される起動期間であると記述される。同じ意図で他のタイプのコヒーレンス期間が選択され得ることは明らかである。
【００５７】
また、それへのアクセスが管理または制御されるところの共有されるリソースは、ここでは、特定のメモリ・ゾーンとして又はメモリ・ページとして確定される共有されるメモリの形で記述される。他のタイプのリソースへも、それらに対応するシステム・ルーチンの類似の計装化によって同じ思想が適用され得る。
【００５８】
本発明の実施は、システム・ソフトウェアの幾つかのエレメントを、それらが以下に記載されるように機能するように、改変することを含み得る。必要な改変のレベルは、確かに、システム・ソフトウェアのタイプ又はバージョンによりまちまちであろう。リナックス型のシステムの場合には、それらの改変は、一般に、前記の“クローン”及び“マップ”型ルーチンの計装化と、スケジューラＳＣＨ、ページ・フォールト・ハンドラＰＦＨ及びページ・ローダＰＬを生じさせるエージェント内での改変及びコード追加とを含む。ここに記載されるタイプのアクセス制御を生じさせるために改変されるべきシステム機能は、有利には、標準的システムの機能と比べて全くの拡張に等しい、すなわち、機能を除去せず、或いは少なくとも標準的システム・バージョンのために開発されたアプリケーションとの上位互換性を犠牲にしない。
【００５９】
更に、仮想メモリ管理のためにプロセッサにおいて考慮されるハードウェア・メカニズムを使用するけれども、前記アクセス制御は、この仮想メモリの停止を必ずしも必要とせず、それと両立し得る。ページ・ローダＰＬは、例えば、物理的メモリＲＡＭへの仮想ページＳｈＭＰｉのロードが、もしこのページが他のタスクＴＡによって既に使われているならば、監視されているタスクＴＢによってこのページの存在ビットＰｒｉＢに反映されないように、計装化又は改変され得る。
【００６０】
図３に示されているように、その起動期間ＳｃｈＡの一つの開始時に、タスクＴＡは時点ＳＣＨＡＬでスケジューラ０ＳＣＨにより解放される。このタスクを解放する前に、スケジューラＳＣＨは、このタスクＴＡの管理ビットＭｍＡを、それに対してアクセス制御が適用されなければならないか否かを確認するために、テスト３１する。適用されなければならない場合には、このタスクＴＡによるアクセス・リクエストが、そこにおいてこのタスクＴＡが実行され得るようになるところの全てのプロセッサμＰｒｏＸのための中断メカニズムＰＦＩｎｔＸにおいてデフォルトでページ・エラーを生じさせるように、スケジューラＳＣＨは、このアクセス制御によって全ての共有される関連ページに対応するページ・テーブル・エントリＰＴＥｉＡないしＰＴＥｋＡの全ての存在ビットＰｒｉＡないしＰｒｋＡを０にセット３２する。
【００６１】
この起動期間ＳｃｈＡの間にプロセッサμＰｒｏＸ内で、命令ＩｎｓｔｒＡは、共有されるメモリ・ページＳｈＭＰｉへのアクセスを要求３３する。対応する存在ビットＰｒｉＡは０であるので、プロセッサμＰｒｏＸの中断メカニズムＰＦＩｎｔＸは、このアクセス・リクエストの実行を一時停止させ、システム・ソフトウェアのページ・フォールト・ハンドラＰＦＨを呼び出し、同時にそれにページ及び問題のタスクのＩＤを送る。
【００６２】
従って、このエラーを処理するとき、ページ・フォールト・ハンドラＰＦＨの補助機能ＰＦＨＳＵＰは、システム・ソフトウェアの仮想メモリ・マネージャＶＭＭ内のカーネル・メモリ構造ＫＭＳｔｒ（“カーネル・メモリ構造”）エージェントを形成するデータ・テーブル内でテスト及び改変の少なくとも一方を実行する。
【００６３】
通例、このカーネル・メモリ構造ＫＭＳｔｒは、作業環境の全てについて又は作業メモリの全てについて一意的に、メモリ・リソースの構造とそれらの展開（ｄｅｖｅｌｏｐｍｅｎｔ）とを表すデータを記憶する。本発明によれば、このカーネル・メモリ構造ＫＭＳｔｒは、ここでアクセス・ビットＫＳｉ、ＫＳｊ及びＫＳｋと称されるデータ・ビットのセットも含んでおり、これらのビットは、問題の共有されるページＳｈＭＰｉないしＳｈＭＰｋの各々について、このページへのアクセスがタスクに対して現在許可されているか（ビットは１）又は許可されていない（ビットは０）という事実を表す。
【００６４】
ページ・フォールト・ハンドラＰＦＨは、プロセッサμＰｒｏＸにより送られたエラーを処理するとき、問題のＳｈＭＰｉページに対応するアクセス・ビットＫＳｉを調べる３４。もしこのアクセス・ビットが現在のアクセスを示していなければ、それは、それがこのページへのアクセスを許可したことを格納するためにこのアクセス・ビットＫＳｉを改変３４し、また、このタスクＴＡが問題のページＳｈＭＰＰｉへの排他的アクセスを今持っているという事実を格納するために、要求をしているタスクＴＡに対応する存在ビットＰｒｉＡを改変３５する（ビットは１に変化する）。
【００６５】
カーネル・メモリ構造ＫＭＳｔｒのアクセス・ビットＫＳｉのこれらのテスト及び改変動作は原子的に実行される動作３４である、すなわち、それがマルチ・プロセッサ環境においても完全に成し遂げられるか又は全く成し遂げられないということが保証される。
【００６６】
ページ・フォールト・ハンドラＰＦＩｎｔは、要求されたページＳｈＭＰｉに関して排他性を割り当てると、命令ＩｎｓｔｒＡの実行を再開させ、それは実際にこのページの内容にアクセス３６する。
【００６７】
その後、他のプロセッサμ０ＰｒｏＹにより並列に実行される他の監視されるタスクＴＢからの命令ＩｎｓｔｒＢがこの既に割り当てられているページＳｈＭＰｉへのアクセスを要求３７したならば、このプロセッサの中断メカニズムＰＦＩｎｔＹも、要求をしているタスクＴＢのためにこのページの存在ビットＰｒｉＢを調べる。タスクＴＢは監視されるタスクであるので、調べられる存在ビットＰｒｉＢは不在位置（値０）にある。従って、中断メカニズムＰＦＩｎｔＹは要求をしている命令ＩｎｓｔｒＢを一時停止させて、エラーをページ・フォールト・ハンドラＰＦＨに送る３８。
【００６８】
このとき、このページ・フォールト・ハンドラＰＦＨは、このページのアクセス・ビットＫＳｉが１で、このページＳｈＭＰｉに関する排他性が既に他のタスクに許可されていることを示すことに留意する。従って、ページ・フォールト・ハンドラＰＦＨは、要求をしているタスクＴＢの全体の一時停止を、例えばその起動期間をシステム・ソフトウェア・コンテキスト・チェンジ・マネージャに終わらせることによって、開始３９する。従って、その次の起動期間に、このタスクＴＢは、その実行を、正確にそれが中断させられたポイントまで繰り返して行い、そしてもう一度この同じページＳｈＭＰｉにアクセスしようと試みることができる。
【００６９】
要求をしているタスクがマルチ・スレッド・プロセスに属するスレッドＴｈｒＢ２（図２）である場合には、この単一のスレッドＴｈｒＢ２に固有のページ・テーブル・エントリＰＴＥｉＢ２のセットの存在は、排他的アクセスに既に割り当てられているページへのアクセスを要求したスレッドだけを中断させ、この排他性と矛盾しない他のスレッドＴｈｒＢ１を中断させないことを可能にする。
【００７０】
各タスクの起動期間ＳｃｈＡの完了ＳＣＨＡＳ時に、スケジューラは、このタスクの実行を一時停止させ、その実行コンテキストをバックアップする。
【００７１】
この一時停止ＳＣＨＡＳに関して、又は既に割り当てられているページ・リクエストでの一時停止３９に関して、本発明は、それについてこのタスクが排他的アクセスを受けたところの全ての共有されるメモリ・ページについて、解放フェーズも考慮する。すなわち、スケジューラＳＣＨは、一時停止中のタスクＴＡが監視されていることに管理ビットＭｍＡを通して気づいた３０１場合、いろいろな存在ビットＰｒｉＡないしＰｒｋＡの状態を調べることによって、それがどのページに関して排他的アクセスを有するかを確認するために、このタスクの全てのページ・テーブル・エントリＰＴＥｉＡないしＰＴＥｋＡをスキャンする。この情報に基づいて、それは、これらのページＳｈＭＰｉの全てを、カーネル・メモリ構造ＫＭＳｔｒ内のそれらのアクセス・ビットＫＳｉをゼロにリセットすることによって、解放する。
【００７２】
他の表されていない変化形では、管理又は監視の思想を、例えば単一のタスク・デスクリプタ内の数個の管理ビットを考慮することによって、幾つかのタイプの管理に分解することも可能である。従って、タスクは、一定のカテゴリーのタスクに関して排他的アクセスから利益を得るように監視され得る。同様に、タスクは、一定のカテゴリーのタスクによってのみ排除され得る。
【００７３】
既に割り当てられているページへのアクセスを探し求める全てのタスクを一時停止させることを通して、この様にして一時停止させられた他のタスクの実行のコヒーレンスを乱すこと無く、このページの排他性が、それを要求した第１タスクのために得られる。
【００７４】
従って、同時に実行されている２つのタスクにより共有される単一のメモリ・ゾーンの改変を避けることを通して、これは、このメモリ・ゾーンの内容の変更時にそれらの間の干渉を回避する。このメモリ・ゾーンについて所与の初期状態から、それにアクセスするタスクの各起動期間の開始のときに、その内容の変化は、この起動期間中のこのタスクの動作だけによる。例えば予定された起動期間などの、このタスクにより実行される命令の所与のシーケンスについて、既知の初期状態から出発することにより、このシーケンスの、確定的であってこのタスクに関して反復可能な実行を得ることが可能である。
【００７５】
特に、アクセスされるメモリ・ゾーンに関する排他性の割り当てを格納するために原子的動作を使用するので、本方法は、それへのアクセスを探し求める複数のタスク間で共有される単一のリソースのデッドロックのリスクを回避又は低減することを可能にする。
【００７６】
更に、本発明のソフトウェアがたいてい純粋に実行されるという事実の故に、これが組み込んだ利点を持って標準的ハードウェアを使用することが可能である。
【００７７】
ここに記載されたアクセス制御の機能は、システム・ソフトウェアもアプリケーションも、各タスクがその解放中にそこにおいて実行されるところのプロセッサの選択を知り或いは決定しなくてもよいという意味において、ソフトウェア部分をハードウェア部分から完全に分離して使用する。ハードウェアに関して良好な独立性が得られ、それは、特に、インプリメンテーションをより単純に且つ信頼できるものにし、またアーキテクチャ自体がいろいろな計算エレメント（プロセッサ又はコンピュータ）の並列性を最善に管理することを可能にすると同時に良好な性能を保存する。
【００７８】
本発明は、特に、単一の計算エレメント上で時分割（ｓｈａｒｅｄ  ｔｉｍｅ）で機能するマルチ・タスク・アプリケーションのために開発された並列環境動作管理手法に及ぶことができる。従って本発明は特にそのような並列環境をネットワーク又はクラスタに統合することができ、そこでこの動作管理は、例えば“オンデマンド”サービスを提供する分散アプリケーション又は可変配置アプリケーション（ｖａｒｉａｂｌｅ  ｄｅｐｌｏｙｍｅｎｔ  ａｐｐｌｉｃａｔｉｏｎｓ）を管理するために、ミドルウェア型のアプリケーションの中で実行される。
【００７９】
明らかに、本発明は前記の例には限定されなくて、本発明の枠組みから逸脱せずにそれらに多数の変更を加えることができる。
【図面の簡単な説明】
【００８０】
【図１】単一の環境の２つの異なるプロセッサにより並列に実行される２つのタスクに共有されるメモリへのアクセスの、従来技術による機能の説明図である。
【図２】単一の環境の数個の異なるプロセッサで並列に実行される数個のタスクに共有されるメモリ・ページへのアクセスの制御を可能にする構造の、タスクの中での生成及び維持を本発明に従って示す。
【図３】単一の環境の２つの異なるプロセッサで並列に実行される２つのタスクに共有されるメモリ・ページへのアクセスの制御の機能を本発明に従って示す。
【図１】
2008529115.tif 000003
【図２】
2008529115.tif 000004
【図３】
2008529115.tif 000005
【国際調査報告】
2008529115.tif 000006
2008529115.tif 000007
2008529115.tif 000008
2008529115.tif 000009
2008529115.tif 000010