(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0003】
このシステムの操作のために、ソフトウェアが備えられている。ソフトウェア(ファームウェアを含む)は、アプリケーションプログラム、オペレーティングシステム、インターフェースおよびコントローラ処理、保守およびハウス・キーピング・モジュールなど、多くの形態を伴っており、これらの全ては、様々なタスクを実行するために、システム資源を同時に利用および、あるいは共有する傾向がある。
【0004】
コンピュータ・ベース・システムの複雑度と機能性が増大することが常に要求されているため、様々なソフトウェアプロセスにシステム資源を割当てる方法への改善が常に求められている。
【課題を解決するための手段】
【0005】
発明の概要
本発明の好適な実施例は、一般的に、データ格納アレイを有する広域ネットワーク(WAN)などのコンピュータ・ベース・システムの、ソフトウェアプロセスで利用するためのシステム資源を割当てる方法および装置に関するものである。
【0006】
いくつかの好適な実施例によれば、本方法は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを提供するステップと、処理待ちをしているソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す第二ビットインジケータを提供するステップを含むことを特徴としている。
【0007】
第一のビットインジケータは、第一の複数ビットレジスタ中の1ビットであることを特徴とし、また、第二のビットインジケータは第二の複数ビットレジスタ中の1ビットであることを特徴とすることが好ましい。割当ては、好ましくは第一および第二ビットインジケータに対する組合せ操作、好ましくは、論理AND操作を含む操作により行われることが好ましい。
【0008】
利用可能な資源を識別するための自由資源スタックが設けられ、解放されたプロセスを待って処理待ちをしているプロセスを識別するためにプロセス待ち行列(キュー)が用いられることが好ましい。スタックと待ち行列の各々の状態は、複数ビットレジスタ中のビットに反映される。
【0009】
さらに、他の実施例によれば、本装置は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを格納する第一のメモリ空間と、処理待ちのソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待っているかどうかを示す第二ビットインジケータを含むことが好ましい。
【0010】
本装置は、さらに、第一および第二ビットインジケータに関連して、前記プロセスが利用するための前記システム資源を割当てる制御ブロックを含むことが好ましい。制御ブロックは、好ましくは第一および第二ビットインジケータに対する組合せ操作、好ましくは論理AND操作を含む操作を実行することが好ましい。
【0011】
前述したように、第一および第二メモリ空間は、各々、複数ビットレジスタを含むことが好ましい。第三メモリ空間に設けられた自由資源スタックは、利用可能な状態にある複数の異なる種類のシステム資源の各々を識別し、第一ビットインジケータは、前記スタック中に格納された資源のエントリーに関連して設定されることが好ましい。第四のメモリ空間中に設けられたプロセス待ち行列は、前記プロセスに関連した情報を格納し、ここで、第二ビットインジケータは、待ち行列中の前記情報のエントリに関連して設定されることが好ましい。
【0012】
本発明の特徴となる、上記および他の特徴および利点は、以下の詳細な説明と、添付した図面により明確なものとなる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、大容量記憶装置を用いる広域ネットワークであることを特徴とするコンピュータ・ベース・システムの最上位レベルの機能ブロック図である。
【
図2】
図2は、
図1に示したシステムで用いられる、複数の異なるソフトウェアレイアを一般的に示した図である。
【
図3】
図3は、様々なタスクを実行するために利用可能な様々な種類のシステム資源を識別するために、
図2のソフトウェアにより用いられる、資源インデックスの好適な配置を示した図である。
【
図4】
図4は、本発明の一実施例に従い構成し、
図2のソフトウェアの様々なプロセスに利用可能な資源を割当てるために動作する資源割当てモジュールの機能ブロック図である。
【
図5】
図5は、現在利用可能な(自由な)
図4中の資源を識別するために動作する、
図4中の自由資源スタックの好適な構成を示した図である。
【
図6】
図6は、一つあるいはそれ以上の数の各種類の資源が利用可能である時を示す、
図4中のグローバル自由レジスタの好適な構成を示した図である。
【
図7】
図7は、一つあるいはそれ以上の数のプロセスが、利用可能な資源を待っている時を示す、
図4中のグローバル待ちレジスタの好適な構成を示した図である。
【
図8】
図8は、プロセス待ちをしている資源(待ち資源)に関連した情報を格納する、
図4中のプロセス待ち行列の好適な構成を示した図である。
【
図9】
図9は、
図7および
図8のレジスタの論理組合せ値を示す、簡単化した論理テーブルを表す図である。
【
図10】
図10は、本発明の好適な実施例で実行される処理ステップを表す、RESOURCE ALLOCATION(資源割当て)処理のフローチャートである。
【発明を実施するための形態】
【0014】
実施例の詳細な説明
本発明の好適な実施例を有利に実現できる環境の一例を図示するために、
図1は、大容量記憶装置を用いる広域ネットワーク(WAN)であることを特徴とするコンピュータ・ベース・システム100を示している。
【0015】
システム100は、複数のホストコンピュータ102を含んでおり、各々は、ホストA、ホストB、ホストCとして識別されている。ホストコンピュータ102は、装置106を介して、相互に作用し合い、また、二つのデータ格納アレイ104(各々、AおよびBと称す)とも相互に作用し合う。装置106は、ファイバー・チャンネルベースのスイッチングネットワークであることを特徴とすることが好ましいが、インターネットを含む他の構成として利用することも可能である。
【0016】
各アレイ104は、一対のコントローラ108(各々、A1/A2およびB1/B2で表す)と、RAID(独立したディスクの冗長なアレイ)として動作するハードディスク装置であることを特徴とすることが好ましいデータ格納装置110の組みを含んでいる。様々なコントローラ108が、パラレルで冗長なリンクを用いるようにするため、また、システムにより格納されるユーザデータが、装置110の両方の組にミラー化されるようにするため、コントローラ108と装置110は、フォールトトレランス構造を用いることが好ましい。
【0017】
さらに、制限を加えるものではない一例としてではあるが、Aホストコンピュータ102とAデータ格納アレイ104は、物理的に第一サイトに設置され、Bホストコンピュータ102とB格納アレイ104は、物理的に第二サイトに設置され、さらに、Cホストコンピュータ102は、第三サイトに設定されるものと考えることができる。
【0018】
図2は、
図1のシステム100により用いられるソフトウェアの好適な構造を一般的に図示したものである。
図2において、ソフトウェアは、複数の階層的なレイアで構成(本例では、レイア1からレイア7で構成)されるものとして描かれており、ここで、レイア1は、装置110の物理媒体112から最も離れた位置にある最上位レイアを表すものであり、レイア7は、媒体112に対して最も近接した最下位レイアを表すものである。
【0019】
階層的なレイア数は任意のものとすることができるが、参考例として、レイア1からレイア3は、ホストコンピュータ102により使用されるアプリケーション処理とオペレーティングシステムを表し、レイア4とレイア5は、コントローラ108のレベルでの処理とモジュールを表し、さらに、レイア6とレイア7は、装置110レベルでの処理とモジュールを表すものと考えられる。
【0020】
装置110へのデータ書き込みのため選択されたホストコンピュータ102からのデータ転送要求は、一つあるいはそれ以上の数のホストレベルのコマンド処理を呼び出すものとなっている。このプロセスは、次に、様々なレイアに跨る、他の様々なプロセスを呼び出し、結果的に、所望のタスクが完了するものとなっている。この経過の中では、様々なシステム資源が割当てられ、利用され、解放される。
【0021】
図3は、資源インデックス114中の、様々な種類のシステム資源の好適な配置を示す図である。資源についての形式と名称は、与えられたアーキテクチャに依存して大幅に変わるものであるが、ここでは、簡単化のため、資源は、一般的に資源0から資源Nとして呼ぶことにする。例えば、資源0は、与えられたプロセスに関連した様々な変数、値あるいは属性などを識別するために用いられるホストコマンド要求(HCR)を表すものであるとすることが可能である。
【0022】
図3は、各資源の種類には、関連づけられた限定された数があることを示している。すなわち、所定のある時点では、システム資源の各種類については、固定した数だけが存在するということである(一例としては、資源0、あるいはHCRについては、任意の時点で利用可能な資源数は、たかだかN=2048の資源数であるということである)。また、システム資源の各種類は、それ自身の資源数Nを持っていると考えられる(例えば、資源1については、任意の時点で利用可能な資源数は、たかだかN=1024の資源数であるということである)。従って、システム100の動作中に、N以上の数のプロセスが、所定の一つの資源の割当てを同時に要求する場合には、
図4で説明するような、順序付けられた割当ての方法が必要となる。
【0023】
図4は、
図2のソフトウェアの様々なプロセスにより用いるための利用可能な資源を割当てるための、本発明の好適な実施例に従って構成され動作する、資源割当てモジュール120の機能ブロック図である。資源割当てモジュール120は、システム100のソフトウェア構造の一部を形成するものであり、
図2の少なくともいくつかのソフトウェアレイアにより呼び出されるプロセスを扱うために、コントローラ108により用いられるソフトウェアの内部に組み込まれることが好ましい。
【0024】
モジュール120は、自由資源スタック122、“gbl.free”と称されるグローバル自由レジスタ124、“gbl.waiter”と称されるグローバル待ちレジスタと126、および、待ちプロセス(すなわち、利用可能な資源を待っている処理待ち中のソフトウェアプロセス)のためのプロセス待ち行列128とを含んでいる。コントロールブロック129は、これらの様々な要素の間の相互作用を行うためのものである。
図4に示した要素とは別の、他の種類のメモリ空間が、必要に応じて用いられる。
【0025】
自由資源スタック122は、
図5に示されるように、利用可能な資源のインデックスを含んでいる。スタック112の形式は、任意の数の形式とすることが可能であるが、
図3の様々な資源の中から特定の資源が解放され、以降のプロセスにより利用されるために自由な状態となった際に、インジケータがスタック中に設定されることが好ましい。従って、スタック122は、各々の資源ごとに、全ての資源の利用可能状態を、動的に最新の状態を示すインジケータを提供している。
【0026】
図6は、好ましくは、
図3に示したシステム資源の種類の番号に対応したビット0からNを含む、gbl.freeレジスタ124を示している。以下に説明するように、スタック122で示されるように、少なくとも一つの種類の資源が利用可能となる度に、論理ビット値(例えば、1)が、適切なビットフィールドに設定される。同様に、該当する種類の資源に利用可能なものがない場合には、残りの論理ビット値(この場合は、0)が、適切なビットフィールドに設定される。
【0027】
図7は、好ましくは、対応するビット0からNのセットを提供する、gbl.waiterレジスタ126を示している。論理ビット値を用いて、資源を待っている処理待ちのプロセスの状態を示しており、例えば、論理ビット値が1の場合は、少なくとも一つのプロセスが、関連する資源を待っている状態にあることを示しており、一方、論理ビット値が0の場合は、現状で資源を待っている状態にあるプロセスはないことを示している。
【0028】
プロセス待ち行列128は、任意の数の好適な形式をとることが可能であり、本例では、
図8に示すように、好ましくは、各資源0〜Nについて、スタック130、待ち行列ヘッダフィールド132およびカウントフィールド134を含んでいる。待ち行列128は、好ましくは、待ち行列に入ったプロセスを追跡し、ファースト・イン・ファースト・アウトの方法でサービスできるようにする。カウントフィールド134は、関連したプロセスにより要求された種類の
資源の数を確認できるようにする(この番号は、1あるいは、1以上の数である)。
【0029】
図9に図示するように、gbl.freeおよびgbl.waiterレジスタ124126は、関連したビット位置に対する組合せ演算により、資源割当てに適合したものを識別することを可能とする。例えば、gbl.freeレジスタ124中の論理値1は、所定の種類の資源の一つ(あるいはそれ以上の数のもの)が利用可能であることを示し、gbl.waiterレジスタ126中の論理値1は、待ち状態にあるプロセスにより所定の種類の資源の一つ(あるいはそれ以上の数のもの)が要求されていることを示しており、これらの各ビットのAND演算の結果(すなわち、1*1=1)を用いて、待ち状態にあるプロセスと要求された資源の間で一致するものがあることを示す。AND演算を用いることは一例であり、これに限定されるものではなく、他の任意の数の論理演算、比較あるいは組合せ演算を用いて、所望の結果を得ることが可能である。
【0030】
好適な実施例で行う
図4のモジュール120の好適な演算処理手順は、
図10で示されるRESOURCE ALLOCATION(資源割当て)処理200を見ることで理解することができる。処理200は、特定の一つのプロセスの好適な追跡と処理を示すために簡単化したものであるが、同様の方法で、この処理が複数のプロセスを同時に評価するものとなることを理解することもできる。
【0031】
ステップ202においては、先ず最初に、初期化操作を実行し、システム100を初期化する。このステップは、
図3の資源インデックスをローディングし、様々なシステム資源のためのアドレスを識別する処理を含んでいる。自由資源スタック122は、最初にロードされ、レジスタ124、126の様々なビットが初期化される。
【0032】
初期化により、システム動作の最初の段階から、高い頻度でいくつかの資源が利用されると考えられるが、スタック122の多くの部分については、gbl.freeレジスタ124が比較的低い頻度で、資源全体の利用状況を表すものとなる(すなわち、比較的多くの資源が、最初に利用可能となる)。それとは反対に、全体的とは言わないが、利用不可能な資源を待っている処理待ちのプロセスは、ほとんどないことを表すように、gbl.waiterレジスタ126は、論理値0で多くのビットが占められる。
【0033】
以降の処理のあるところでは、ステップ204で一般的に示されるように、選択されたプロセスが、選択された資源を要求する。好ましくは、この時点で、制御ブロック129によりチェックを行い、判断ステップ206で示されるように、要求された資源が利用可能であるかをスタック122を用いて判断される。もし判断がYESである場合には、処理フローは、ステップ208に進み、そこで、スタック122を更新し、そこで選択された資源に対応する識別子を削除する。これにより、この特定の資源は、現時点で用いられており、他のプロセスに割当てることはできないことを反映する。
【0034】
ステップ210に進み、選択されたプロセスが資源を利用し、その利用が完了した時点で、ステップ212で、プロセスは資源を解放する。好ましくは、ステップ212は、解放された資源が、今度は利用可能となったことを示すために、自由資源スタック122内への、適切なエントリを含んでいる。
【0035】
一方、要求された資源が利用可能でない場合には、判定ステップ206の後、ステップ214に進み、そこで、要求した資源が利用可能となるまで待つために、プロセスはプロセス待ち行列128に入力される。
【0036】
ステップ216では、制御ブロック129によりレジスタ124、126がポーリングされ、要求した資源が現在利用可能となっているかどうかを判定する。このステップ216によるポーリングは、様々な方法で実行することができるが、これは進行中操作(on−going operation)として、レジスタ124、126の各ビット位置の対応するペアが、順次、組合せ演算されることが好ましい(
図9で説明したAND演算を用いることが好ましい)。制御ブロック129は、レジスタ124、126のビット0の位置から処理を開始し、これらのビット値を組合せ演算し、次にビット1の位置に移り、これらのビット値を組合せ演算し、同様にして、論理値1が得られるまで続け、その後、以下で説明する処理を続ける。
【0037】
ここでは、論理値1が得られ処理された後、制御ブロック129は、ビット0の位置の最初から処理を始めるのではなく、次のビット位置の組合せ演算を引き続き行うという点に注目してほしい。このようにして、より公平な資源の分配が行われる。制御ブロック129の処理が、各レジスタ124、126のビットNの位置に到達したら、再び、ビット0の位置から始る処理を開始する。
【0038】
判定処理ステップ218で示されるように、ステップ216のポーリングの結果が、要求された資源が処理待ちのプロセスに対して利用可能であることが示された場合には、
図10の処理は、ステップ220に進み、そこで、制御ブロック129により、処理待ちのプロセスの要求に合うだけの資源の数が確保できるかどうかを判定する。
【0039】
この判定処理は、関連するカウントフィールド134(
図9)の値をチェックするステップを含むことが好ましく、もし、この値が1より大きい(例えば、4である)場合には、制御ブロック129は、さらに、自由資源スタック122のスキャンに進み、処理待ちのプロセスの要求を満たす、少なくとも要求された数だけの利用可能な資源があるかどうかを判定する。もし、充分な資源がない場合には、gbl.freeレジスタの関連するビット位置を、ステップ222で論理値0にリセットすることが好ましく、その後、図示するように、レジスタのポーリングのためのステップ216に処理を戻す。
【0040】
処理待ちのプロセスの要求に合うだけの資源の数が確保できる場合には、ステップ220からステップ224に処理を進み、そこで、割当てられた資源の各々に対する資源インジケータを、スタック122から削除する。次に、プロセスは資源を利用するステップ226に進み、その利用が完了したら、ステップ228に進み、資源を解放し、スタック122に資源を戻す。ここで、選択されたプロセスについての処理フローは、ステップ230で終了するが、更に、各待ち状態にあるプロセスが識別された場合には、前記の処理ステップを引き続き実行するものとなっている。
【0041】
多くの場合、各ソフトウェアプロセスは、単一の種類の資源(すなわち、資源0)を利用することを要求するものとなっていると考えられるが、前記の処理ステップは、所定のプロセスが二つあるいはそれ以上の数の異なる種類の資源(すなわち、資源0と資源1)を要求するような場合にも用いることが可能である。このようなことが行われる方法としては、要求された資源の各々に対して、処理待ちのプロセスの複製をプロセス待ち行列に登録し、資源が利用可能となった際に、利用可能な資源の各種類を(利用することなく)割当て、さらに、異なる種類の資源の全てが解放された際に、該当プロセスを実行するという方法がある。
【0042】
前記の様々な実施例の利点としては、スタック122あるいは待ち行列128に直接アクセスする必要がなく、レジスタ124、126に対する単純な論理演算のみにより、全ての利用可能な資源と待ち状態にあるプロセスとの間の適合性を迅速に評価できることが挙げられる。複数のプロセスが所定の資源を待っている際に、待ち行列に登録された最古のプロセスを真っ先に処理するためには、ファースト・イン・ファースト・アウト(FIFO)の手順を用いることが好ましい。これにより、タイムアウトエラーの発生を抑制し、更に、割当ての公平性を確保することができる。一方、異なるプロセスの種類ごとに、優先度を割り付けることも可能であり、この場合は、待ち行列128の構成を変更して(ソーティングなどにより)、高い優先度を持つプロセスが、適合した場合には、待ち行列の中で先に処理されるようにすることが可能である。
【0043】
上述した実施例は、一般的に、複数のデータ格納アレイを有する分散した処理システムに適用したものであるが、この適用は、必ずしも発明の範囲を限定するものにはならない。むしろ、消費者向け製品、携帯の娯楽およびゲーム機、全世界測位システム(GPS)モジュールなどの計測装置、ホームコンピュータ、モバイル通信装置などを含み、これらに限定されない任意の異なる種類のシステムが、本発明を容易に実装することができる。
【0044】
以上のように実施例で説明し、以下の請求項で記載するように、本発明は、これに限定されることはないが、一般的に(104のような)データ格納アレイを有する広域ネットワーク(WAN)などの(100のような)コンピュータ・ベース・システム中で、ソフトウェアプロセスで利用するためにシステム資源を割当てる方法および装置に関するものである。
【0045】
いくつかの好適な実施例によれば、本方法は、少なくとも一つのシステム資源が利用可能であるかどうかを示す(124などの)第一ビットインジケータを提供するステップと、処理待ちをしているソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待機しているかどうかを示す(126などの)第二ビットインジケータを提供するステップと、第一および第二ビットインジケータの組合せに関連して、前記プロセスにより用いるための前記システム資源を割当てる(ステップ216などの)ステップとを含むことを特徴としている。
【0046】
さらに、他の実施例によれば、本装置は、少なくとも一つのシステム資源が利用可能であるかどうかを示す第一ビットインジケータを格納する(124などの)第一のメモリ空間と、処理待ちのソフトウェアプロセスが、前記プロセスを実行するために、前記システム資源が利用可能となることを待っているかどうかを示す第二ビットインジケータを格納する(126などの)第二のメモリ空間と、第一と第二のビットインジケータの組合せに関連し、前記プロセスにより用いる前記システム資源を割当てる(129などの)制御ブロックを含むことを特徴としている。
【0047】
添付の請求項の目的として、記載されている第一の手段は、
図4で開示されたモジュール120に相当するものであることがわかる。さらに、請求項中で、“ビットインジケータ”と称するものは、少なくとも1ビットを含む値であることがわかる。
【0048】
本発明の様々な実施例の、多くの特徴と利点は、以上で説明したとおりであるが、本発明の様々な実施例の構造と機能の詳細についての説明は、例示のためだけのものであり、特に、本発明の原理内の要素の構造と配置について、請求項で表現されている事項の広い一般的な意味により示された十分な程度に、変更を行うことが可能となっている。例えば、特定の要素は、本発明の主旨と範囲を逸脱することなく、特定の処理環境に応じて変更することが可能である。
【0049】
さらに、ここで記載した実施例は、データ格納アレイに関するものであるが、本技術分野に精通した者であれば、請求項の主題は、これに限定されるものではなく、本発明の主旨と範囲を逸脱することなく、他の処理システムを用いることが可能である。