(57)【要約】【課題】データ格納アレイ１０４を含む広域ネットワーク（ＷＡＮ）などのコンピュータ・ベース・システム１００において、ソフトウェアプロセスにより用いるシステム資源を割当てるための方法および装置を提供する。【解決手段】第一メモリ空間Ａは、少なくとも一つのシステム資源が利用可能となっているかを示す第一ビットインジケータを提供する。第二メモリ空間Ｂは、処理待ちのソフトウェアプロセスが、システム資源が利用可能となることを待っていることを示す第二ビットインジケータを提供する。論理ＡＮＤ演算を含む、第一および第二ビットインジケータに対する組合せ操作に関連して、プロセスで用いられる資源が割当てられる。第一および第二メモリ空間は、複数ビットレジスタである。自由資源スタックは、利用可能な資源を識別し、プロセス待ち行列は、解放されるプロセスを待つ状態にあるプロセスを識別する。各スタックと待ち行列の状態は、複数ビットレジスタ中のビットに反映される。【選択図】図１
2014063536.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのシステム資源が利用可能であるかを示す第一ビットインジケータを提供するステップと、
処理待ちのソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待っているかどうかを示す第二ビットインジケータを提供するステップと、
第一および第二ビットインジケータの組合せに関連し、前記プロセスより利用される前記システム資源を割当てるステップと、
結果を得るために論理演算を用いる第一および第二ビットインジケータを組合せるステップを含み、割当てステップは、前記結果に関連して実行され、
前記プロセスが複数の前記資源を必要としているかを判定するステップと、
割当てステップの前に、前記複数の前記資源が利用可能であるかを識別するステップとを含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、一般的に、コンピュータ・ベース・システムに関するものであり、特に、しかし制限を加えることなく、複数のソフトウェアプロセス中でシステム資源を割当てるための装置及び方法に関するものである。
【背景技術】
【０００２】
発明の背景
コンピュータ・ベース・システムにより、広範な種類のデータ処理タスクを、高速かつ効率よく実行することができる。携帯型の消費者向け製品から、複数のデータ格納アレイ装置を有する地理的に分散した広域ネットワークにいたるまで、このようなシステムが、社会生活およびビジネス分野の全ての領域に広く普及しつづけている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このシステムの操作のために、ソフトウェアが備えられている。ソフトウェア（ファームウェアを含む）は、アプリケーションプログラム、オペレーティングシステム、インターフェースおよびコントローラ処理、保守およびハウス・キーピング・モジュールなど、多くの形態を伴っており、これらの全ては、様々なタスクを実行するために、システム資源を同時に利用および、あるいは共有する傾向がある。
【０００４】
コンピュータ・ベース・システムの複雑度と機能性が増大することが常に要求されているため、様々なソフトウェアプロセスにシステム資源を割当てる方法への改善が常に求められている。
【課題を解決するための手段】
【０００５】
発明の概要
本発明の好適な実施例は、一般的に、データ格納アレイを有する広域ネットワーク（ＷＡＮ）などのコンピュータ・ベース・システムの、ソフトウェアプロセスで利用するためのシステム資源を割当てる方法および装置に関するものである。
【０００６】
いくつかの好適な実施例によれば、本方法は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを提供するステップと、処理待ちをしているソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す第二ビットインジケータを提供するステップを含むことを特徴としている。
【０００７】
第一のビットインジケータは、第一の複数ビットレジスタ中の１ビットであることを特徴とし、また、第二のビットインジケータは第二の複数ビットレジスタ中の１ビットであることを特徴とすることが好ましい。割当ては、好ましくは第一および第二ビットインジケータに対する組合せ操作、好ましくは、論理ＡＮＤ操作を含む操作により行われることが好ましい。
【０００８】
利用可能な資源を識別するための自由資源スタックが設けられ、解放されたプロセスを待って処理待ちをしているプロセスを識別するためにプロセス待ち行列（キュー）が用いられることが好ましい。スタックと待ち行列の各々の状態は、複数ビットレジスタ中のビットに反映される。
【０００９】
さらに、他の実施例によれば、本装置は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを格納する第一のメモリ空間と、処理待ちのソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待っているかどうかを示す第二ビットインジケータを含むことが好ましい。
【００１０】
本装置は、さらに、第一および第二ビットインジケータに関連して、前記プロセスが利用するための前記システム資源を割当てる制御ブロックを含むことが好ましい。制御ブロックは、好ましくは第一および第二ビットインジケータに対する組合せ操作、好ましくは論理ＡＮＤ操作を含む操作を実行することが好ましい。
【００１１】
前述したように、第一および第二メモリ空間は、各々、複数ビットレジスタを含むことが好ましい。第三メモリ空間に設けられた自由資源スタックは、利用可能な状態にある複数の異なる種類のシステム資源の各々を識別し、第一ビットインジケータは、前記スタック中に格納された資源のエントリーに関連して設定されることが好ましい。第四のメモリ空間中に設けられたプロセス待ち行列は、前記プロセスに関連した情報を格納し、ここで、第二ビットインジケータは、待ち行列中の前記情報のエントリに関連して設定されることが好ましい。
【００１２】
本発明の特徴となる、上記および他の特徴および利点は、以下の詳細な説明と、添付した図面により明確なものとなる。
【図面の簡単な説明】
【００１３】
【図１】図１は、大容量記憶装置を用いる広域ネットワークであることを特徴とするコンピュータ・ベース・システムの最上位レベルの機能ブロック図である。
【図２】図２は、図１に示したシステムで用いられる、複数の異なるソフトウェアレイアを一般的に示した図である。
【図３】図３は、様々なタスクを実行するために利用可能な様々な種類のシステム資源を識別するために、図２のソフトウェアにより用いられる、資源インデックスの好適な配置を示した図である。
【図４】図４は、本発明の一実施例に従い構成し、図２のソフトウェアの様々なプロセスに利用可能な資源を割当てるために動作する資源割当てモジュールの機能ブロック図である。
【図５】図５は、現在利用可能な（自由な）図４中の資源を識別するために動作する、図４中の自由資源スタックの好適な構成を示した図である。
【図６】図６は、一つあるいはそれ以上の数の各種類の資源が利用可能である時を示す、図４中のグローバル自由レジスタの好適な構成を示した図である。
【図７】図７は、一つあるいはそれ以上の数のプロセスが、利用可能な資源を待っている時を示す、図４中のグローバル待ちレジスタの好適な構成を示した図である。
【図８】図８は、プロセス待ちをしている資源（待ち資源）に関連した情報を格納する、図４中のプロセス待ち行列の好適な構成を示した図である。
【図９】図９は、図７および図８のレジスタの論理組合せ値を示す、簡単化した論理テーブルを表す図である。
【図１０】図１０は、本発明の好適な実施例で実行される処理ステップを表す、ＲＥＳＯＵＲＣＥ ＡＬＬＯＣＡＴＩＯＮ（資源割当て）処理のフローチャートである。
【発明を実施するための形態】
【００１４】
実施例の詳細な説明
本発明の好適な実施例を有利に実現できる環境の一例を図示するために、図１は、大容量記憶装置を用いる広域ネットワーク（ＷＡＮ）であることを特徴とするコンピュータ・
ベース・システム１００を示している。
【００１５】
システム１００は、複数のホストコンピュータ１０２を含んでおり、各々は、ホストＡ、ホストＢ、ホストＣとして識別されている。ホストコンピュータ１０２は、装置１０６を介して、相互に作用し合い、また、二つのデータ格納アレイ１０４（各々、ＡおよびＢと称す）とも相互に作用し合う。装置１０６は、ファイバー・チャンネルベースのスイッチングネットワークであることを特徴とすることが好ましいが、インターネットを含む他の構成として利用することも可能である。
【００１６】
各アレイ１０４は、一対のコントローラ１０８（各々、Ａ１／Ａ２およびＢ１／Ｂ２で表す）と、ＲＡＩＤ（独立したディスクの冗長なアレイ）として動作するハードディスク装置であることを特徴とすることが好ましいデータ格納装置１１０の組みを含んでいる。様々なコントローラ１０８が、パラレルで冗長なリンクを用いるようにするため、また、システムにより格納されるユーザデータが、装置１１０の両方の組にミラー化されるようにするため、コントローラ１０８と装置１１０は、フォールトトレランス構造を用いることが好ましい。
【００１７】
さらに、制限を加えるものではない一例としてではあるが、Ａホストコンピュータ１０２とＡデータ格納アレイ１０４は、物理的に第一サイトに設置され、Ｂホストコンピュータ１０２とＢ格納アレイ１０４は、物理的に第二サイトに設置され、さらに、Ｃホストコンピュータ１０２は、第三サイトに設定されるものと考えることができる。
【００１８】
図２は、図１のシステム１００により用いられるソフトウェアの好適な構造を一般的に図示したものである。図２において、ソフトウェアは、複数の階層的なレイアで構成（本例では、レイア１からレイア７で構成）されるものとして描かれており、ここで、レイア１は、装置１１０の物理媒体１１２から最も離れた位置にある最上位レイアを表すものであり、レイア７は、媒体１１２に対して最も近接した最下位レイアを表すものである。
【００１９】
階層的なレイア数は任意のものとすることができるが、参考例として、レイア１からレイア３は、ホストコンピュータ１０２により使用されるアプリケーション処理とオペレーティングシステムを表し、レイア４とレイア５は、コントローラ１０８のレベルでの処理とモジュールを表し、さらに、レイア６とレイア７は、装置１１０レベルでの処理とモジュールを表すものと考えられる。
【００２０】
装置１１０へのデータ書き込みのため選択されたホストコンピュータ１０２からのデータ転送要求は、一つあるいはそれ以上の数のホストレベルのコマンド処理を呼び出すものとなっている。このプロセスは、次に、様々なレイアに跨る、他の様々なプロセスを呼び出し、結果的に、所望のタスクが完了するものとなっている。この経過の中では、様々なシステム資源が割当てられ、利用され、解放される。
【００２１】
図３は、資源インデックス１１４中の、様々な種類のシステム資源の好適な配置を示す図である。資源についての形式と名称は、与えられたアーキテクチャに依存して大幅に変わるものであるが、ここでは、簡単化のため、資源は、一般的に資源０から資源Ｎとして呼ぶことにする。例えば、資源０は、与えられたプロセスに関連した様々な変数、値あるいは属性などを識別するために用いられるホストコマンド要求（ＨＣＲ）を表すものであるとすることが可能である。
【００２２】
図３は、各資源の種類には、関連づけられた限定された数があることを示している。すなわち、所定のある時点では、システム資源の各種類については、固定した数だけが存在するということである（一例としては、資源０、あるいはＨＣＲについては、任意の時点
で利用可能な資源数は、たかだかＮ＝２０４８の資源数であるということである）。また、システム資源の各種類は、それ自身の資源数Ｎを持っていると考えられる（例えば、資源１については、任意の時点で利用可能な資源数は、たかだかＮ＝１０２４の資源数であるということである）。従って、システム１００の動作中に、Ｎ以上の数のプロセスが、所定の一つの資源の割当てを同時に要求する場合には、図４で説明するような、順序付けられた割当ての方法が必要となる。
【００２３】
図４は、図２のソフトウェアの様々なプロセスにより用いるための利用可能な資源を割当てるための、本発明の好適な実施例に従って構成され動作する、資源割当てモジュール１２０の機能ブロック図である。資源割当てモジュール１２０は、システム１００のソフトウェア構造の一部を形成するものであり、図２の少なくともいくつかのソフトウェアレイアにより呼び出されるプロセスを扱うために、コントローラ１０８により用いられるソフトウェアの内部に組み込まれることが好ましい。
【００２４】
モジュール１２０は、自由資源スタック１２２、“ｇｂｌ．ｆｒｅｅ”と称されるグローバル自由レジスタ１２４、“ｇｂｌ．ｗａｉｔｅｒ”と称されるグローバル待ちレジスタと１２６、および、待ちプロセス（すなわち、利用可能な資源を待っている処理待ち中のソフトウェアプロセス）のためのプロセス待ち行列１２８とを含んでいる。コントロールブロック１２９は、これらの様々な要素の間の相互作用を行うためのものである。図４に示した要素とは別の、他の種類のメモリ空間が、必要に応じて用いられる。
【００２５】
自由資源スタック１２２は、図５に示されるように、利用可能な資源のインデックスを含んでいる。スタック１１２の形式は、任意の数の形式とすることが可能であるが、図３の様々な資源の中から特定の資源が解放され、以降のプロセスにより利用されるために自由な状態となった際に、インジケータがスタック中に設定されることが好ましい。従って、スタック１２２は、各々の資源ごとに、全ての資源の利用可能状態を、動的に最新の状態を示すインジケータを提供している。
【００２６】
図６は、好ましくは、図３に示したシステム資源の種類の番号に対応したビット０からＮを含む、ｇｂｌ．ｆｒｅｅレジスタ１２４を示している。以下に説明するように、スタック１２２で示されるように、少なくとも一つの種類の資源が利用可能となる度に、論理ビット値（例えば、１）が、適切なビットフィールドに設定される。同様に、該当する種類の資源に利用可能なものがない場合には、残りの論理ビット値（この場合は、０）が、適切なビットフィールドに設定される。
【００２７】
図７は、好ましくは、対応するビット０からＮのセットを提供する、ｇｂｌ．ｗａｉｔｅｒレジスタ１２６を示している。論理ビット値を用いて、資源を待っている処理待ちのプロセスの状態を示しており、例えば、論理ビット値が１の場合は、少なくとも一つのプロセスが、関連する資源を待っている状態にあることを示しており、一方、論理ビット値が０の場合は、現状で資源を待っている状態にあるプロセスはないことを示している。
【００２８】
プロセス待ち行列１２８は、任意の数の好適な形式をとることが可能であり、本例では、図８に示すように、好ましくは、各資源０〜Ｎについて、スタック１３０、待ち行列ヘッダフィールド１３２およびカウントフィールド１３４を含んでいる。待ち行列１２８は、好ましくは、待ち行列に入ったプロセスを追跡し、ファースト・イン・ファースト・アウトの方法でサービスできるようにする。カウントフィールド１３４は、関連したプロセスにより要求された種類の番号を、識別可能とするものである（この番号は、１あるいは、１以上の数である）。
【００２９】
図９に図示するように、ｇｂｌ．ｆｒｅｅおよびｇｂｌ．ｗａｉｔｅｒレジスタ１２４
１２６は、関連したビット位置に対する組合せ演算により、資源割当てに適合したものを識別することを可能とする。例えば、ｇｂｌ．ｆｒｅｅレジスタ１２４中の論理値１は、所定の種類の資源の一つ（あるいはそれ以上の数のもの）が利用可能であることを示し、ｇｂｌ．ｗａｉｔｅｒレジスタ１２６中の論理値１は、待ち状態にあるプロセスにより所定の種類の資源の一つ（あるいはそれ以上の数のもの）が要求されていることを示しており、これらの各ビットのＡＮＤ演算の結果（すなわち、１＊１＝１）を用いて、待ち状態にあるプロセスと要求された資源の間で一致するものがあることを示す。ＡＮＤ演算を用いることは一例であり、これに限定されるものではなく、他の任意の数の論理演算、比較あるいは組合せ演算を用いて、所望の結果を得ることが可能である。
【００３０】
好適な実施例で行う図４のモジュール１２０の好適な演算処理手順は、図１０で示されるＲＥＳＯＵＲＣＥ ＡＬＬＯＣＡＴＩＯＮ（資源割当て）処理２００を見ることで理解
することができる。処理２００は、特定の一つのプロセスの好適な追跡と処理を示すために簡単化したものであるが、同様の方法で、この処理が複数のプロセスを同時に評価するものとなることを理解することもできる。
【００３１】
ステップ２０２においては、先ず最初に、初期化操作を実行し、システム１００を初期化する。このステップは、図３の資源インデックスをローディングし、様々なシステム資源のためのアドレスを識別する処理を含んでいる。自由資源スタック１２２は、最初にロードされ、レジスタ１２４、１２６の様々なビットが初期化される。
【００３２】
初期化により、システム動作の最初の段階から、高い頻度でいくつかの資源が利用されると考えられるが、スタック１２２の多くの部分については、ｇｂｌ．ｆｒｅｅレジスタ１２４が比較的低い頻度で、資源全体の利用状況を表すものとなる（すなわち、比較的多くの資源が、最初に利用可能となる）。それとは反対に、全体的とは言わないが、利用不可能な資源を待っている処理待ちのプロセスは、ほとんどないことを表すように、ｇｂｌ．ｗａｉｔｅｒレジスタ１２６は、論理値０で多くのビットが占められる。
【００３３】
以降の処理のあるところでは、ステップ２０４で一般的に示されるように、選択されたプロセスが、選択された資源を要求する。好ましくは、この時点で、制御ブロック１２９によりチェックを行い、判断ステップ２０６で示されるように、要求された資源が利用可能であるかをスタック１２２を用いて判断される。もし判断がＹＥＳである場合には、処理フローは、ステップ２０８に進み、そこで、スタック１２２を更新し、そこで選択された資源に対応する識別子を削除する。これにより、この特定の資源は、現時点で用いられており、他のプロセスに割当てることはできないことを反映する。
【００３４】
ステップ２１０に進み、選択されたプロセスが資源を利用し、その利用が完了した時点で、ステップ２１２で、プロセスは資源を解放する。好ましくは、ステップ２１２は、解放された資源が、今度は利用可能となったことを示すために、自由資源スタック１２２内への、適切なエントリを含んでいる。
【００３５】
一方、要求された資源が利用可能でない場合には、判定ステップ２０６の後、ステップ２１４に進み、そこで、要求した資源が利用可能となるまで待つために、プロセスはプロセス待ち行列１２８に入力される。
【００３６】
ステップ２１６では、制御ブロック１２９によりレジスタ１２４、１２６がポーリングされ、要求した資源が現在利用可能となっているかどうかを判定する。このステップ２１６によるポーリングは、様々な方法で実行することができるが、これは進行中操作（ｏｎ−ｇｏｉｎｇ ｏｐｅｒａｔｉｏｎ）として、レジスタ１２４、１２６の各ビット位置の
対応するペアが、順次、組合せ演算されることが好ましい（図９で説明したＡＮＤ演算を
用いることが好ましい）。制御ブロック１２９は、レジスタ１２４、１２６のビット０の位置から処理を開始し、これらのビット値を組合せ演算し、次にビット１の位置に移り、これらのビット値を組合せ演算し、同様にして、論理値１が得られるまで続け、その後、以下で説明する処理を続ける。
【００３７】
ここでは、論理値１が得られ処理された後、制御ブロック１２９は、ビット０の位置の最初から処理を始めるのではなく、次のビット位置の組合せ演算を引き続き行うという点に注目してほしい。このようにして、より公平な資源の分配が行われる。制御ブロック１２９の処理が、各レジスタ１２４、１２６のビットＮの位置に到達したら、再び、ビット０の位置から始る処理を開始する。
【００３８】
判定処理ステップ２１８で示されるように、ステップ２１６のポーリングの結果が、要求された資源が処理待ちのプロセスに対して利用可能であることが示された場合には、図１０の処理は、ステップ２２０に進み、そこで、制御ブロック１２９により、処理待ちのプロセスの要求に合うだけの資源の数が確保できるかどうかを判定する。
【００３９】
この判定処理は、関連するカウントフィールド１３４（図９）の値をチェックするステップを含むことが好ましく、もし、この値が１より大きい（例えば、４である）場合には、制御ブロック１２９は、さらに、自由資源スタック１２２のスキャンに進み、処理待ちのプロセスの要求を満たす、少なくとも要求された数だけの利用可能な資源があるかどうかを判定する。もし、充分な資源がない場合には、ｇｂｌ．ｆｒｅｅレジスタの関連するビット位置を、ステップ２２２で論理値０にリセットすることが好ましく、その後、図示するように、レジスタのポーリングのためのステップ２１６に処理を戻す。
【００４０】
処理待ちのプロセスの要求に合うだけの資源の数が確保できる場合には、ステップ２２０からステップ２２４に処理を進み、そこで、割当てられた資源の各々に対する資源インジケータを、スタック１２２から削除する。次に、プロセスは資源を利用するステップ２２６に進み、その利用が完了したら、ステップ２２８に進み、資源を解放し、スタック１２２に資源を戻す。ここで、選択されたプロセスについての処理フローは、ステップ２３０で終了するが、更に、各待ち状態にあるプロセスが識別された場合には、前記の処理ステップを引き続き実行するものとなっている。
【００４１】
多くの場合、各ソフトウェアプロセスは、単一の種類の資源（すなわち、資源０）を利用することを要求するものとなっていると考えられるが、前記の処理ステップは、所定のプロセスが二つあるいはそれ以上の数の異なる種類の資源（すなわち、資源０と資源１）を要求するような場合にも用いることが可能である。このようなことが行われる方法としては、要求された資源の各々に対して、処理待ちのプロセスの複製をプロセス待ち行列に登録し、資源が利用可能となった際に、利用可能な資源の各種類を（利用することなく）割当て、さらに、異なる種類の資源の全てが解放された際に、該当プロセスを実行するという方法がある。
【００４２】
前記の様々な実施例の利点としては、スタック１２２あるいは待ち行列１２８に直接アクセスする必要がなく、レジスタ１２４、１２６に対する単純な論理演算のみにより、全ての利用可能な資源と待ち状態にあるプロセスとの間の適合性を迅速に評価できることが挙げられる。複数のプロセスが所定の資源を待っている際に、待ち行列に登録された最古のプロセスを真っ先に処理するためには、ファースト・イン・ファースト・アウト（ＦＩＦＯ）の手順を用いることが好ましい。これにより、タイムアウトエラーの発生を抑制し、更に、割当ての公平性を確保することができる。一方、異なるプロセスの種類ごとに、優先度を割り付けることも可能であり、この場合は、待ち行列１２８の構成を変更して（ソーティングなどにより）、高い優先度を持つプロセスが、適合した場合には、待ち行列
の中で先に処理されるようにすることが可能である。
【００４３】
上述した実施例は、一般的に、複数のデータ格納アレイを有する分散した処理システムに適用したものであるが、この適用は、必ずしも発明の範囲を限定するものにはならない。むしろ、消費者向け製品、携帯の娯楽およびゲーム機、全世界測位システム（ＧＰＳ）モジュールなどの計測装置、ホームコンピュータ、モバイル通信装置などを含み、これらに限定されない任意の異なる種類のシステムが、本発明を容易に実装することができる。
【００４４】
以上のように実施例で説明し、以下の請求項で記載するように、本発明は、これに限定されることはないが、一般的に（１０４のような）データ格納アレイを有する広域ネットワーク（ＷＡＮ）などの（１００のような）コンピュータ・ベース・システム中で、ソフトウェアプロセスで利用するためにシステム資源を割当てる方法および装置に関するものである。
【００４５】
いくつかの好適な実施例によれば、本方法は、少なくとも一つのシステム資源が利用可能であるかどうかを示す（１２４などの）第一ビットインジケータを提供するステップと、処理待ちをしているソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す（１２６などの）第二ビットインジケータを提供するステップと、第一および第二ビットインジケータの組合せに関連して、前記プロセスにより用いるための前記システム資源を割当てる（ステップ２１６などの）ステップとを含むことを特徴としている。
【００４６】
さらに、他の実施例によれば、本装置は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを格納する（１２４などの）第一のメモリ空間と、処理待ちのソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待っているかどうかを示す第二ビットインジケータを格納する（１２６などの）第二のメモリ空間と、第一と第二のビットインジケータの組合せに関連し、前記プロセスにより用いる前記システム資源を割当てる（１２９などの）制御ブロックを含むことを特徴としている。
【００４７】
添付の請求項の目的として、記載されている第一の手段は、図４で開示されたモジュール１２０に相当するものであることがわかる。さらに、請求項中で、“ビットインジケータ”と称するものは、少なくとも１ビットを含む値であることがわかる。
【００４８】
本発明の様々な実施例の、多くの特徴と利点は、以上で説明したとおりであるが、本発明の様々な実施例の構造と機能の詳細についての説明は、例示のためだけのものであり、特に、本発明の原理内の要素の構造と配置について、請求項で表現されている事項の広い一般的な意味により示された十分な程度に、変更を行うことが可能となっている。例えば、特定の要素は、本発明の主旨と範囲を逸脱することなく、特定の処理環境に応じて変更することが可能である。
【００４９】
さらに、ここで記載した実施例は、データ格納アレイに関するものであるが、本技術分野に精通した者であれば、請求項の主題は、これに限定されるものではなく、本発明の主旨と範囲を逸脱することなく、他の処理システムを用いることが可能である。
【符号の説明】
【００５０】
１００  システム
１０２  ホスト
１０４  ストレージアレイ
１０６  装置（ファブリック）
１０８  コントローラ
１１０  ストレージデバイス
１１２  フィジカルメディア
１１４  リソースインデックス
１２０  リソースアロケーションモジュール
１２２  フリーリソーススタック
１２４  グローバルフリーレジスタ
１２６  グローバルウエイトレジスタ
１２８  プロセスキュー
１２９  コントロール
１３０  スタック
１３２  キューヘッダ
１３４  カウント
【図１】
2014063536.tif 000003
【図２】
2014063536.tif 000004
【図３】
2014063536.tif 000005
【図４】
2014063536.tif 000006
【図５】
2014063536.tif 000007
【図６】
2014063536.tif 000008
【図７】
2014063536.tif 000009
【図８】
2014063536.tif 000010
【図９】
2014063536.tif 000011
【図１０】
2014063536.tif 000012
【手続補正書】
【提出日】平成26年1月20日(2014.1.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラを含むコンピュータ・ベース・システムが実行する方法であって、
前記コントローラが、利用可能な異なる種類のシステム資源の各々を識別するための自由資源スタックを管理するステップを含み、前記自由資源スタックは、全てのシステム資源の利用可能状態を動的に最新に示すものであり、
前記コントローラが、少なくとも一つのシステム資源が利用可能であるかをシステム資源の種類毎に示す第一ビットインジケータを管理するステップと、
前記コントローラが、処理待ちのソフトウェアプロセスが、当該ソフトウェアプロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す第二ビットインジケータを管理するステップと、
前記コントローラが、前記第一および第二ビットインジケータの組合せの結果に基づいて、要求されたシステム資源が処理待ちのソフトウェアプロセスに対して利用可能である否かを判断するステップと、
要求されたシステム資源が処理待ちのソフトウェアプロセスに対して利用可能である場合に、前記コントローラが、前記自由資源スタックを参照して、前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能であるかを判断するステップと、
前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能である場合に、前記コントローラが、前記システム資源を割当てるステップと、
前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能ではない場合に、前記コントローラが、前記第一ビットインジケータの対応するビットをリセットするステップとを含む、方法。
【請求項２】
前記自由資源スタックを管理するステップは、ソフトウェアプロセスにより利用される前記システム資源が割当てられると、割当てられたシステム資源に対応する識別子を前記自由資源スタックから削除するとともに、前記ソフトウェアプロセスによる前記システム資源の利用が完了した時点で当該システム資源に対応するエントリを前記自由資源スタックに追加するステップを含む、請求項１に記載の方法。
【請求項３】
前記自由資源スタックを管理するステップは、利用可能なシステム資源の数に対応するようにエントリを追加および削除するステップを含み、
前記第一ビットインジケータを管理するステップは、各ビットが、異なる種類の前記システム資源のそれぞれに対応する複数のビットを管理するステップを含み、
前記第二ビットインジケータを管理するステップは、各ビットが、異なるソフトウェアプロセスが利用するシステム資源のそれぞれに対応する複数のビットを管理するステップを含む、請求項１または２に記載の方法。
【請求項４】
利用可能な異なる種類のシステム資源の各々を識別するための自由資源スタックを管理する手段を備え、前記自由資源スタックは、全てのシステム資源の利用可能状態を動的に最新に示すものであり、
少なくとも一つのシステム資源が利用可能であるかをシステム資源の種類毎に示す第一ビットインジケータを管理する手段と、
処理待ちのソフトウェアプロセスが、当該ソフトウェアプロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す第二ビットインジケータを管理する手段と、
コントローラとを備え、
前記コントローラは、
前記第一および第二ビットインジケータの組合せの結果に基づいて、要求されたシステム資源が処理待ちのソフトウェアプロセスに対して利用可能である否かを判断し、
要求されたシステム資源が処理待ちのソフトウェアプロセスに対して利用可能である場合に、前記自由資源スタックを参照して、前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能であるかを判断し、
前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能である場合に、前記システム資源を割当て、
前記処理待ちのソフトウェアプロセスが要求する数のシステム資源が利用可能ではない場合に、前記第一ビットインジケータの対応するビットをリセットする、装置。