(57)【要約】本発明の一実施例は、入出力（Ｉ／Ｏ）装置のための多重通路を管理するための技術である。上位レベルのドライバからのＩ／Ｏ要求パケット（ＩＲＰ）が受信される。複数の下位レベルのドライバを用いて、複数のデバイスオブジェクトへの複数の経路がＩＲＰに応じて管理される。デバイスオブジェクトは、Ｍのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。
2006513469.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）要求パケット（ＩＲＰ）を上位レベルのドライバから受信するステップと、
複数の下位レベルのドライバを用いて、当該ＩＲＰに応答して複数のデバイスオブジェクトへの複数の経路を管理するステップとを含み、当該デバイスオブジェクトは、Ｍの装置の種類を有するフィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、方法。
【請求項２】
当該ＩＲＰを受信するステップは、
当該上位レベルのドライバから当該ＩＲＰを受信するステップを含み、当該上位レベルのドライバはクラスドライバである、請求項１に記載の方法。
【請求項３】
当該複数の経路を管理するステップは、
主要な機能のＩＲＰに応答するステップと、
Ｎの経路における装置経路を監視するステップとを含む、請求項１に記載の方法。
【請求項４】
当該Ｎの経路を管理するステップは、
新しいデバイスオブジェクトを追加するステップと、
当該デバイスオブジェクトを解放するステップとをさらに含む、請求項３に記載の方法。
【請求項５】
当該主要な機能のＩＲＰに応答するステップは、
Ｉ／Ｏマネージャ、プラグ・アンド・プレイ（ＰｎＰ）マネージャ、および電力マネージャからの当該主要な機能に応答するステップを含む、請求項３に記載の方法。
【請求項６】
当該主要な機能のＩＲＰに応答するステップは、
始動装置の小さなＩＲＰ、除去装置の小さなＩＲＰ、装置関係の小さなＩＲＰ、識別子（ＩＤ）照会の小さなＩＲＰ、停止装置の小さなＩＲＰ、および使用通知の小さなＩＲＰのうちの１つに応答するステップを含む、請求項５に記載の方法。
【請求項７】
当該始動装置の小さなＩＲＰに応答するステップは、
当該下位レベルのドライバのうちの１つを用いて、接続された装置の周辺アドレスを得るステップと、
当該周辺アドレスを用いて当該接続された装置の装置コードを得るステップと、
当該装置コードが装置リストにおけるエントリに一致するかどうかを決定するステップとを含む、請求項６に記載の方法。
【請求項８】
当該装置コードが当該エントリに一致する場合に新しいバスのフィジカルデバイスオブジェクトを生成するステップをさらに含む、請求項７に記載の方法。
【請求項９】
当該除去装置の小さなＩＲＰに応答するステップは、
装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応し、さらに、
当該接続された装置を切り離すステップを含む、請求項６に記載の方法。
【請求項１０】
当該装置関係の小さなＩＲＰに応答するステップは、
カウントと少なくとも１つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てるステップを含む、請求項６に記載の方法。
【請求項１１】
当該ＩＤ照会の小さなＩＲＰに応答するステップは、
装置ＩＤを生成するステップと、
当該装置ＩＤを当該上位レベルのドライバに戻すステップとを含む、請求項６に記載の方法。
【請求項１２】
当該停止装置の小さなＩＲＰに応答するステップは、
装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応する、請求項６に記載の方法。
【請求項１３】
当該使用通知の小さなＩＲＰに応答するステップは、
当該使用通知の小さなＩＲＰを次のドライバに転送するステップを含む、請求項６に記載の方法。
【請求項１４】
当該主要な機能のＩＲＰに応答するステップは、
接続された装置のサポートされる装置名を得るステップと、
当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明するステップと、
当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定するステップとを含む、請求項５に記載の方法。
【請求項１５】
当該主要な機能のＩＲＰに応答するステップは、
フィルタデバイスオブジェクトが接続されているかどうかを決定するステップと、
サポートされる装置の、主張、解放および照会のうちの１つがある場合に、エラーステータスに戻るステップと、
当該主要な機能のＩＲＰを次のドライバに送信するステップとを含む、請求項５に記載の方法。
【請求項１６】
当該主要な機能のＩＲＰに応答するステップは、
キューリストにおけるＩ／Ｏ要求を処理するステップを含む、請求項５に記載の方法。
【請求項１７】
当該経路を監視するステップは、
経路の経路ステータスをポーリングするステップを含み、当該経路ステータスは、当該経路に対応するフィジカルデバイスの切断状態および接続状態を含み、前記監視するステップはさらに、
当該切断状態を有する当該経路が、当該接続状態を有するようになるかどうかを決定するステップと、
当該経路を調整するステップとを含む、請求項３に記載の方法。
【請求項１８】
当該経路ステータスをポーリングするステップは、
切断された装置に対応する少なくとも１つの第１の装置名が、第１のリストに存在するかどうかを決定するステップを含む、請求項１７に記載の方法。
【請求項１９】
当該経路を調整するステップは、
当該第１のリストから当該第１の装置名を除去するステップを含む、請求項１７に記載の方法。
【請求項２０】
当該Ｎの経路を管理するステップは、
当該ＩＲＰに応じて複数のデバイスオブジェクトへの当該Ｎの経路を管理するステップを含み、当該デバイスオブジェクトは、Ｍの装置の種類を有するフィジカルデバイスに対応し、当該Ｍの装置の種類は、ディスク装置、安価なレイド（ＲＡＩＤ）サブシステム、
テープデバイス、およびテープライブラリのうちの少なくとも２つを含む、請求項１に記載の方法。
【請求項２１】
機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含む、機械がアクセス可能な媒体を含み、当該以下のステップは、
入出力（Ｉ／Ｏ）要求パケット（ＩＲＰ）を上位レベルのドライバから受信するステップと、
複数の下位レベルのドライバを用いて、当該ＩＲＰに応じて複数のデバイスオブジェクトへの複数の経路を管理するステップとを含み、当該デバイスオブジェクトはＭの装置の種類を有するフィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、製造品。
【請求項２２】
当該機械に当該ＩＲＰを受信させる当該データは、当該機械がアクセスしたときに当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該ＩＲＰを当該上位レベルのドライバ、当該上位レベルのドライバのクラスドライバから受信するステップを含む、請求項２１に記載の製造品。
【請求項２３】
当該機械に当該複数の経路を管理させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
主要な機能のＩＲＰに応答するステップと、
当該Ｎの経路における装置経路を監視するステップとを含む、請求項２１に記載の製造品。
【請求項２４】
当該機械に当該Ｎの経路を管理させるデータは、当該機械がアクセスしたときに当該機械に以下のステップを含む動作を行なわせるデータをさらに含み、当該以下のステップは、
新しいデバイスオブジェクトを追加するステップと、
当該デバイスオブジェクトを解放するステップとを含む、請求項２３に記載の製造品。
【請求項２５】
当該機械を当該主要な機能のＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
Ｉ／Ｏマネージャ、プラグ・アンド・プレイ（ＰｎＰ）マネージャ、および電力マネージャのうちの１つからの当該主要な機能のＩＲＰに応答するステップを含む、請求項２３に記載の製造品。
【請求項２６】
当該機械を当該主要な機能のＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
始動装置の小さなＩＲＰ、除去装置の小さなＩＲＰ、装置関係の小さなＩＲＰ、識別子（ＩＤ）照会の小さなＩＲＰ、停止装置の小さなＩＲＰ、および使用通知の小さなＩＲＰのうちの１つに応答するステップを含む、請求項２５に記載の製造品。
【請求項２７】
当該機械を当該始動装置の小さなＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該下位レベルのドライバのうちの１つを用いて、接続された装置の周辺アドレスを得るステップと、
当該周辺アドレスを用いて当該接続された装置の装置コードを得るステップと、
当該装置コードが装置リストにおけるエントリに一致するかどうかを決定するステップ
とを含む、請求項２６に記載の製造品。
【請求項２８】
当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータをさらに含み、当該以下のステップは、
当該装置コードが当該エントリに一致する場合に、新しいバスのフィジカルデバイスオブジェクトを生成するステップを含む、請求項２７に記載の製造品。
【請求項２９】
当該機械を当該除去装置の小さなＩＲＰに応答させる当該データは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応し、さらに、
当該接続された装置を切り離すステップを含む、請求項２６に記載の製造品。
【請求項３０】
当該機械を当該装置関係の小さなＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
カウントと少なくとも１つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てるステップを含む、請求項２６に記載の製造品。
【請求項３１】
当該機械を当該ＩＤ照会の小さなＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
装置ＩＤを生成するステップと、
当該装置ＩＤを当該上位レベルのドライバに戻すステップとを含む、請求項２６に記載の製造品。
【請求項３２】
当該機械を当該停止装置の小さなＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応する、請求項２６に記載の製造品。
【請求項３３】
当該機械を当該使用通知の小さなＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該使用通知の小さなＩＲＰを次のドライバに転送するステップを含む、請求項２６に記載の製造品。
【請求項３４】
当該機械を当該主要な機能のＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
接続された装置のサポートされる装置名を得るステップと、
当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明するステップと、
当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定するステップとを含む、請求項２５に記載の製造品。
【請求項３５】
当該機械を当該主要な機能のＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステ
ップは、
フィルタデバイスオブジェクトが接続されているかどうかを決定するステップと、
サポートされる装置の、主張、解放および照合がある場合に、エラーステータスに戻すステップと、
当該主要な機能のＩＲＰを次のドライバに送信するステップとを含む、請求項２５に記載の製造品。
【請求項３６】
当該機械を当該主要な機能のＩＲＰに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
キューリストにおけるＩ／Ｏ要求を処理するステップを含む、請求項２５に記載の製造品。
【請求項３７】
当該機械に当該経路を監視させる当該データは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該経路の経路ステータスをポーリングするステップを含み、当該経路ステータスは、当該経路に応じてフィジカルデバイスの切断状態および接続状態を含み、
当該切断状態を有する経路が当該接続状態を有するようになるかどうかを決定するステップと、
当該経路を調整するステップとを含む、請求項２３に記載の製造品。
【請求項３８】
当該機械に当該経路ステータスをポーリングさせるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
切断された装置に対応する少なくとも１つの第１の装置名が第１のリストにあるかどうかを決定するステップを含む、請求項３７に記載の製造品。
【請求項３９】
当該機械に当該経路を調整させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該第１の装置名を当該第１のリストから除去するステップを含む、請求項３７に記載の製造品。
【請求項４０】
当該機械に当該Ｎの経路を管理させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
当該ＩＲＰに応じて複数のデバイスオブジェクトへの当該Ｎの経路を管理するステップを含み、フィジカルデバイスに対応する当該オブジェクトは、Ｍの装置の種類を有し、当該Ｍの装置の種類は、ディスク装置、安価なレイド（ＲＡＩＤ）サブシステム、テープデバイスおよびテープライブラリのうちの少なくとも２つを含む、請求項２１に記載の製造品。
【請求項４１】
プロセッサと、
複数のアダプタを介して当該プロセッサに結合された複数のフィジカルデバイスとを含み、当該フィジカルデバイスは、Ｍの装置の種類を有し、さらに、
プロセッサに結合されたメモリを含み、当該メモリは、当該プロセッサによって実行されたときに、当該プロセッサに、
上位レベルのドライバから入出力（Ｉ／Ｏ）要求パケット（ＩＲＰ）を受信させ、かつ
複数の下位レベルのドライバを用いて、当該ＩＲＰに応じて複数のデバイスオブジェクトへの複数の経路を管理させるプログラムコードを含み、当該デバイスオブジェクトは当該フィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、システム。
【請求項４２】
当該プロセッサに当該ＩＲＰを受信させるプログラムコードは、当該プロセッサによって実行されたときに、当該プロセッサに、
当該上位レベルのドライバから当該ＩＲＰを受信させるプログラムコードを含み、当該上位レベルのドライバはクラスドライバの１つである、請求項４１に記載のシステム。
【請求項４３】
当該プロセッサに当該複数の経路を管理させるプログラムコードは、当該プロセッサによって実行されたときに、当該プロセッサに、
主要な機能のＩＲＰに応答させ、かつ
当該Ｎの経路における装置経路を監視させるプログラムコードを含む、請求項４１に記載のシステム。
【請求項４４】
当該機械に当該Ｎの経路を管理させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
新しいデバイスオブジェクトを追加させ、かつ
当該デバイスオブジェクトを解放させるプログラムコードをさらに含む、請求項４３に記載のシステム。
【請求項４５】
当該機械に当該主要な機能のＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
Ｉ／Ｏマネージャ、プラグ・アンド・プレイ（ＰｎＰ）マネージャ、および電力マネージャのうちの１つからの当該主要な機能のＩＲＰに応答させるプログラムコードを含む、請求項４３に記載のシステム。
【請求項４６】
当該機械を当該主要な機能のＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサを、
始動装置の小さなＩＲＰ、除去装置の小さなＩＲＰ、装置関係の小さなＩＲＰ、識別子（ＩＤ）照会の小さなＩＲＰ、停止装置の小さなＩＲＰ、および使用通知の小さなＩＲＰのうちの１つに応答させるプログラムコードを含む、請求項４５に記載のシステム。
【請求項４７】
当該機械を当該始動装置の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
当該下位レベルのドライバのうちの１つを用いて、接続された装置の周辺アドレスを獲得させ、
当該周辺アドレスを用いて、接続された装置の装置コードを獲得させ、かつ
当該装置コードが装置リストにおけるエントリに一致するかどうかを決定させるプログラムコードを含む、請求項４６に記載のシステム。
【請求項４８】
当該プログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
当該装置コードが当該エントリに一致する場合に、新しいバスのフィジカルデバイスオブジェクトを生成させるプログラムコードをさらに含む、請求項４７に記載のシステム。
【請求項４９】
当該機械を当該除去装置の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
装置リストからエントリを除去させ、当該エントリは接続された装置に対応し、さらに、
当該接続された装置を切り離させるプログラムコードを含む、請求項４６に記載のシステム。
【請求項５０】
当該機械を当該装置関係の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
カウントと少なくとも１つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てさせるプログラムコードを含む、請求項４６に記載のシステム。
【請求項５１】
当該機械を当該ＩＤ照会の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
装置ＩＤを生成させ、かつ
当該装置ＩＤを当該上位レベルのドライバに戻させるプログラムコードを含む、請求項４６に記載のシステム。
【請求項５２】
当該機械を当該停止装置の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
装置リストからエントリを除去させるプログラムコードを含み、当該エントリは、接続された装置に対応する、請求項４６に記載のシステム。
【請求項５３】
当該機械を当該使用通知の小さなＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
当該使用通知の小さなＩＲＰを次のドライバに転送させるプログラムコードを含む、請求項４６に記載のシステム。
【請求項５４】
当該機械を当該主要な機能のＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
接続された装置のサポートされる装置名を獲得させ、
当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明させ、かつ
当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定させるプログラムコードを含む、請求項４５に記載のシステム。
【請求項５５】
当該機械を当該主要な機能のＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
フィルタデバイスオブジェクトが接続されているかどうかを決定させ、
サポートされる装置の、主張、解放およびの参照のうちの１つがある場合に、エラーステータスに戻らせ、かつ
当該主要な機能のＩＲＰを次のドライバに送信させるプログラムコードを含む、請求項４５に記載のシステム。
【請求項５６】
当該機械を当該主要な機能のＩＲＰに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
キューリストにおけるＩ／Ｏ要求を処理させるプログラムコードを含む、請求項４５に記載のシステム。
【請求項５７】
当該機械に当該経路を監視させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
経路の経路ステータスをポーリングさせ、当該経路ステータスは、当該経路に対応するフィジカルデバイスの切断状態および接続状態を含み、さらに、
当該切断状態を有する経路が当該接続状態を有するようになるかどうかを決定させ、かつ
当該経路を調整させるプログラムコードを含む、請求項４３に記載のシステム。
【請求項５８】
当該機械に当該経路ステータスをポーリングさせるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
切断された装置に対応する少なくとも１つの第１の装置名が第１のリストにあるかどうかを決定させるプログラムコードを含む、請求項５７に記載のシステム。
【請求項５９】
当該機械に当該経路を調整させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
当該第１の装置名を当該第１のリストから除去させるプログラムコードを含む、請求項５７に記載のシステム。
【請求項６０】
当該機械に当該Ｎの経路を管理させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
当該ＩＲＰに応じて複数のデバイスオブジェクトへの当該Ｎの経路を管理させるプログラムコードを含み、フィジカルデバイスに対応する当該デバイスオブジェクトは、Ｍの装置の種類を有し、当該Ｍの装置の種類は、ディスク装置、安価なレイド（ＲＡＩＤ）サブシステム、テープ装置およびテープライブラリのうちの少なくとも２つを含む、請求項４１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は以下の特許出願、すなわち「記憶装置のための汎用多重通路ドライバを用いたフェイルオーバーおよびフェイルバック」（“Failover and Failback Using a Universal Multi-path Driver for Storage Devices”)と題された連続番号＿（代理人整理番号第０２−０３１／００６３４２Ｐ００５号）、および「記憶装置のための汎用多重通路ドライバにおけるロードバランシング」（“Load Balancing in a Universal Multi-path Driver for Storage Devices”）と題された連続番号＿（代理人整理番号第０２−３２／００６３４２Ｐ００６号）に関連するものであり、すべては本出願と同じ日に提出され、本出願と同じ譲受人に譲受され、その各々の内容はここに引用により援用される。
【０００２】
背景
発明の分野
本発明の実施例は、記憶システムの分野に関し、より特定的に記憶システムのためのドライバに関する。
【背景技術】
【０００３】
関連技術の説明
記憶技術は、多くのデータ集約型アプリケーションにとって重要になっている。最近、さまざまなアプリケーションに対応するために異なる容量およびストリーミング速度を有する記憶装置がある。これらの記憶装置の例としては、レイド（ＲＡＩＤ）、テープドライブ、ディスクドライブおよびテープライブラリが含まれる。これらの装置をインターフェイスするための技術としては、直接接続された記憶装置および記憶領域ネットワーク（ＳＡＮ）が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これらの記憶装置にインターフェイスするための既存の技術には複数の欠点がある。第１に、これは、同じドライバにおける異なる種類の装置を管理しないということである。システムは、典型的に、複数の異なる種類のドライバを各種類の記憶装置につき１つ設置しなければならない。これによって、管理およびシステム管理に複雑さがもたらされ、ソフトウェアの取得および保守の費用が増大し、システムの信頼性および再構成可能性が減じられる。第２に、これは、異なる記憶装置の間でフェイルオーバーを与えず、システムの耐故障性を減じ、サーバのダウンタイムを増す。第３に、これは、異なる記憶装置の間でロードバランシングを行なわず、記憶装置の利用においてスキューがあるときに性能を低下させる。
【課題を解決するための手段】
【０００５】
発明の概要
本発明の一実施例は、入出力（Ｉ／Ｏ）装置のための多重通路を管理するための技術である。上位レベルのドライバからのＩ／Ｏリクエストパケット（ＩＲＰ）が受信される。複数のデバイスオブジェクトへの複数の経路が、複数の下位レベルのドライバを用いて、ＩＲＰに応じて管理される。デバイスオブジェクトは、Ｍのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。
【０００６】
本発明は、以下の説明、および本発明の実施例を例示するために用いられる添付の図面を参照することによって、最もよく理解され得る。
【発明を実施するための最良の形態】
【０００７】
説明
本発明の一実施例は、入出力（Ｉ／Ｏ）装置のための多重通路を管理するための技術である。上位レベルのドライバからのＩ／Ｏリクエストパケット（ＩＲＰ）が受信される。複数の下位レベルのドライバを用いて、複数のデバイスオブジェクトへの複数の経路が、ＩＲＰに応じて管理される。このデバイスオブジェクトは、Ｍのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。
【０００８】
以下の説明において、複数の特定の詳細が述べられる。しかしながら、本発明の実施例は、これらの特定の詳細なしに実施され得ることを理解すべきである。他の例において、この説明の理解を明確にするために、公知の回路、構造および技術は示されていない。
【０００９】
図１Ａは、本発明の一実施例を実施することができるシステム１０を示す図である。システム１０は、サーバ／クライアント２０、ネットワーク３０、スイッチ４０、テープドライブ５０1および５０2、テープライブラリ６０、ならびに記憶サブシステム７０を含む。なお、システム１０は例示のために示されているに過ぎない。システム１０は、示されたような構成要素よりも多いまたは少ない構成要素を含み得る。システム１０は、直接接続された記憶装置または記憶領域ネットワーク（ＳＡＮ）において用いられ得る。システム１０のトポロジは、アービトレート型ループまたはスイッチ型ファブリックであってもよい。
【００１０】
サーバ／クライアント２０は、典型的に、企業環境で用いられるコンピュータシステムである。これは、ウェブサーバ、電子メール（e-mail）サーバ等の専用の機能を果たすサーバ、または他のクライアントもしくはサーバへの接続を有するネットワーク環境におけるクライアントであり得る。サーバ／クライアント２０は、通常、その計算のニーズのために大量の記憶容量を必要とする。これは、金融、科学研究、マルチメディア、学術および政府関係の仕事、データベース、娯楽等の幅広い種類のアプリケーションにおいて用いられ得る。
【００１１】
ネットワーク３０は、サーバ／クライアント２０を他のサーバ／クライアントまたはシステムに接続するネットワークである。ネットワーク３０は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、イントラネット、インターネットまたはいかなる他の種類のネットワークであってもよい。ネットワーク３０は、非同期転送モード（ＡＴＭ）または同期光ネットワーク（ＳＯＮＥＴ）等の複数の電気通信網にインターフェイスするためのゲートウェイ、アダプタ、ルータ等の複数のネットワーク装置（図示せず）を含み得る。
【００１２】
スイッチ４０は、サーバ／クライアント２０をさまざまな記憶装置または他の装置もしくはサブシステムに相互接続する相互接続装置である。スイッチ４０は、ハブ、スイッチングハブ、多重ポイントツーポイントスイッチまたはディレクタ等であってもよい。これは、典型的に、数個のポートから何百個のポートに及ぶ多数のポートを有する。複雑さは、単純なアービトレート型ループから可用性の高いポイントツーポイントに及び得る。スイッチ４０のスループットは、毎秒２００メガバイト（ＭＢｐｓ）から毎秒１Ｇバイト（ＧＢｐｓ）に及び得る。
【００１３】
テープドライブ５０1および５０2は、バックアップおよびアーカイブのタスクのために高い容量を有する記憶装置である。テープドライブで用いられるテープのための容量は、数十から数百のギガバイト（ＧＢ）に及び得る。転送速度は、１０から５０ＭＢｐｓに及
び得る。テープライブラリ６０は、自動テープ装填を有する多数のテープドライブを含む。テープライブラリ６０の容量は、５０から３００ＭＢｐｓの総合データ転送速度を有する１から１０００テラバイト（ＴＢ）に及び得る。テーブルドライブ５０1および５０2、ならびにテーブルライブラリ６０は順次アクセスを用いる。記憶サブシステム７０は、ディスクサブシステム７２、安価なレイド（ＲＡＩＤ）のサブシステム７４、および記憶装置７６を含む。ディスクサブシステム７２は、単一のドライブまたはディスクのアレイであってもよい。ＲＡＩＤサブシステム７４は、さらなる複雑さおよび特徴を有するディスクのアレイであり、管理可能性、性能、容量、信頼性および可用性が増大される。記憶装置７６は、磁気、光学、電気光学等を含むいかなる他の記憶システムであってもよい。
【００１４】
テープドライブ５０1および５０2、テープライブラリ６０、ディスクサブシステム７２、安価なレイド（ＲＡＩＤ）サブシステム７４、および記憶装置７６は、長期保管するためにサーバ／クライアント２０に接続されたフィジカルデバイスを形成する。これらの装置は、典型的に異なる種類の装置を含む。サーバ／クライアント２０は、多重通路でこれらの装置の種類（たとえばテープドライブ、テープライブラリ、ディスクＲＡＩＤ）のすべてにインターフェイスする能力を有する。
【００１５】
図１Ｂは、本発明の一実施例を実施することのできるサーバ／クライアントシステム２０を示す図である。サーバ／クライアントシステム２０は、プロセッサ１１０、プロセッサバス１２０、メモリ制御ハブ（ＭＣＨ）１３０、サブシステムメモリ１４０、入出力制御ハブ（ＩＣＨ）１５０、周辺バス１６０、ホストバスアダプタ（ＨＢＡ）１６５1から１６５M、大容量記憶装置１７０、および入出力装置１８０1から１８０Kを含む。なお、サーバ／クライアントシステム２０は、これらの要素よりも多いまたは少ない要素を含み得る。
【００１６】
プロセッサ１１０は、組込型プロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースカラコンピュータ、ベクトルプロセッサ、単一命令多重データ（ＳＩＭＤ）コンピュータ、複数命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）、またはハイブリッドアーキテクチャ等のいかなる種類のアーキテクチャの中央処理装置を表わしている。
【００１７】
プロセッサバス１２０は、プロセッサ１１０が他のプロセッサまたはデバイス、たとえばＭＣＨ１３０と通信するのを可能にするインターフェイス信号を提供する。ホストバス１２０は、ユニプロセッサまたはマルチプロセッサの構成をサポートし得る。ホストバス１２０は、並列、順次、パイプライン、非同期、同期またはいかなるその組合せであってもよい。
【００１８】
ＭＣＨ１３０は、システムメモリ１４０、ＩＣＨ１５０等の、記憶装置および入出力装置を制御および構成する。ＭＣＨ１３０は、分離した実行モード、ホストから周辺へのバスインターフェイス、メモリ制御等の多数の機能性を統合するチップセットへと統合され得る。ＭＣＨ１３０は、周辺バス１６０にインターフェイスする。明確にするために、すべての周辺バスが示されるわけではない。サブシステム４０は、周辺構成要素相互接続（ＰＣＩ）、加速式グラフィックポート（ＡＧＰ）、業界標準アーキテクチャ（ＩＳＡ）バス、およびユニバーサルシリアルバス（ＵＳＢ）等の周辺バスを含んでもよい。
【００１９】
システムメモリ１４０は、システムのコードおよびデータを記憶する。システムメモリ１４０は、典型的に、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックランダムアクセスメモリ（ＳＲＡＭ）で実現される。システムメモリ１４０は、本発明の一実施例を実現するプログラムコードまたはコードセグメントを含み得る。システムメモリ１４０は、記憶管理ドライバ１４５を含む。記憶管理ドライバ１４５の要素のうち
のいかなる１つも、ハードウェア、ソフトウェア、ファームウェア、マイクロコードまたはいかなるその組合せによって実現され得る。システムメモリ１４０は、示されていない、オペレーティングシステム等の他のプログラムまたはデータを含んでもよい。記憶管理ドライバ１４５は、プロセッサ１１０によって実行されるときに、プロセッサ１１０に以下に記載されるような動作を行なわせるプログラムコードを含む。
【００２０】
ＩＣＨ１５０は、Ｉ／Ｏ機能をサポートするように設計された複数の機能性を有する。ＩＣＨ１５０は、チップセットに共に統合されるか、またはＩ／Ｏ機能を果たすためにＭＣＨ１３０から分離され得る。ＩＣＨ１５０は、周辺バス１６０にインターフェイスするためのＰＩＣバスインターフェイス、プロセッサインターフェイス、割込みコントローラ、直接メモリアクセス（ＤＭＡ）コントローラ、パワーマネジメントロジック、タイマ、システム管理バス（ＳＭＢｕｓ）、ユニバーサルシリアルバス（ＵＳＢ）インターフェイス、大容量記憶インターフェイス、低いピンカウント（ＬＰＣ）インターフェイス等の複数のインターフェイスおよびＩ／Ｏ機能を含み得る。
【００２１】
ＨＢＡ１６５1から１６５Mは、スイッチ４０（図１Ａ）にインターフェイスするアダプタである。ＨＢＡ１６５1から１６５Mは、典型的に、周辺バス１６０、またはプロセッサ１１０にアクセス可能ないかなる他のバスにもインターフェイスするアドオンカードである。ＨＢＡは、一時データを記憶するための、ローカルメモリまたはフレームバッファを有する独自のプロセッサを有し得る。サポートされたプロトコルは、小型コンピュータ小型インターフェイス（ＳＣＳＩ）、インターネットプロトコル（ＩＰ）およびファイバチャネル（ＦＣ）であってもよい。転送速度は、全二重で数百ＭＢｐｓであり得る。媒体は、銅およびマルチモードの光学を含み得る。
【００２２】
大容量記憶装置１７０は、コード、プログラム、ファイル、データ、アプリケーションおよびオペレーティングシステム等のアーカイブ情報を記憶する。大容量記憶装置１７０は、コンパクトディスク（ＣＤ）ＲＯＭ１７２、デジタルビデオ／汎用ディスク（ＤＶＤ）１７３、フロッピー（登録商標）ドライブ１７４、ハードドライブ１７６、フラッシュメモリ１７８およびいかなる他の磁気または光学の記憶装置を含み得る。大容量記憶装置１７０は、機械でアクセス可能な媒体を読出すという機構を与える。機械がアクセス可能な媒体は、以下に記載されるようなタスクを行なうためのコンピュータが読取り可能なプログラムコードを含み得る。
【００２３】
Ｉ／Ｏ装置１８０1から１８０Kは、Ｉ／Ｏ機能を実行するためのいかなるＩ／Ｏ装置も含み得る。Ｉ／Ｏ装置１８０1から１８０Kの例として、入力装置のための制御装置（たとえばキーボード、マウス、トラックボール、ポインティングデバイス）、メディアカード（たとえば音声、ビデオ、グラフィックス）、ネットワークカード、およびいかなる他の周辺制御装置も含まれる。
【００２４】
本発明の一実施例の要素は、ハードウェア、ファームウェア、ソフトウェアまたはいかなるその組合せによっても実現され得る。ハードウェアという用語は、一般的に、電子、電磁、光学、電気光学、機械、電気機械の部品等の物理的な構造を有する要素のことをいう。ソフトウェアという用語は、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式等のことをいう。ファームウェアという用語は、一般的に、ハードウェア構造（たとえばフラッシュメモリ、ＲＯＭ、ＥＲＯＭ）で実現または実施される、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式のことをいう。ファームウェアの例としては、マイクロコード、書き込み可能制御記憶装置、マイクロプログラム構造が含まれ得る。本発明の実施例の要素は、ソフトウェアまたはファームウェアで実現されるときに、本質的に、必要なタスクを実行するコードセグメントである。ソフトウェア／ファームウェアは、本発明の一実
施例に記載される動作を行なうための実際のコード、または動作をエミュレートもしくはシミュレートするコードを含み得る。プログラムもしくはコードセグメントを、プロセッサもしくは機械がアクセス可能な媒体に記憶するか、または送信媒体上で搬送波もしくは搬送波によって変調された信号で実現されるコンピュータデータ信号によって送信することができる。「プロセッサが読取可能な、もしくはアクセス可能な媒体」、または「機械が読取可能な、もしくはアクセス可能な媒体」は、情報を記憶、送信または転送することのできるいかなる媒体も含み得る。プロセッサが読取可能な、または機械がアクセス可能な媒体の例として、電子回路、半導体メモリ素子、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能なＲＯＭ（ＥＲＯＭ）、フロッピー（登録商標）ディスク、コンパクトディスク（ＣＤ）ＲＯＭ、光学ディスク、ハードディスク、光ファイバ媒体、無線周波（ＲＦ）リンク等が含まれる。コンピュータデータ信号は、電子ネットワークチャネル、光ファイバ、エアリンク、電磁リンク、ＲＦリンク等の送信媒体上を伝播することのできるいかなる信号も含み得る。コードセグメントは、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードされ得る。機械がアクセス可能な媒体は、製造品において実現され得る。機械がアクセス可能な媒体は、機械がアクセスしたときに、機械に以下に記載された動作を行なわせるデータを含み得る。機械がアクセス可能な媒体は、それに組み込まれたプログラムコードを含み得る。このプログラムコードは、以下に記載された動作を行なうための機械読取可能コードを含み得る。「データ」という用語は、ここでは機械が読取可能な目的のために符号化されるいかなる種類の情報のことも指す。したがって、これはプログラム、コード、データ、ファイル等を含み得る。
【００２５】
本発明の実施例のすべてまたは一部は、ハードウェア、ソフトウェア、もしくはファームウェア、またはいかなるその組合せによって実現され得る。ハードウェア、ソフトウェアまたはファームウェアの要素は、互いに結合された複数のモジュールを有し得る。ハードウェアモジュールは、機械的、電気的、光学的、電磁的またはいかなる物理的な接続によっても別のモジュールに結合される。ソフトウェアモジュールは、関数、手順、方法、サブプログラム、またはサブルーチンコール、ジャンプ、リンク、パラメータ、変数および引数の受け渡し、ファンクションリターン等によって別のモジュールに結合される。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタ等を受信するために、および／または、結果、更新された変数、ポインタ等を生成もしくは渡すために別のモジュールに結合される。ファームウェアモジュールは、上述のハードウェアおよびソフトウェアの結合方法のいかなる組合せによっても別のモジュールに結合される。ハードウェア、ソフトウェアまたはファームウェアのモジュールは、別のハードウェア、ソフトウェアまたはファームウェアのモジュールのいかなる１つにも結合され得る。モジュールは、プラットフォームで実行されるオペレーティングシステムと相互作用するためのソフトウェアドライバまたはインターフェイスであってもよい。モジュールは、ハードウェア装置へのおよびハードウェア装置からのデータを構成、設定、初期化、送信および受信するためのハードウェアドライバであってもよい。装置は、ハードウェア、ソフトウェアおよびファームウェアのモジュールのいかなる組合せも含み得る。
【００２６】
本発明の一実施例は、フローチャート、フロー図、構造図またはブロック図で通常示されるプロセスとして記載され得る。フローチャートは逐次プロセスとして動作を説明し得るが、動作の多くは並列してまたは同時に実施することができる。さらに、動作の順序は並べ換えてもよい。プロセスは、その動作が完了したときに終了される。プロセスは、方法、プログラム、手順、製造または製作の方法等に対応し得る。
【００２７】
図２は、本発明の一実施例に従った記憶管理ドライバ１４５を示す図である。記憶管理ドライバ１４５は、オペレーティングシステムの構成要素２１０、上位レベルのドライバ２１８、汎用多重通路ドライバ２２０および下位レベルのドライバ２５０を含む。
【００２８】
ＯＳの構成要素２１０は、Ｉ／Ｏマネージャ２１２、プラグ・アンド・プレイ（ＰｎＰ）マネージャ２１４、電力マネージャ２１６を含む。Ｉ／Ｏマネージャ２１２は、すべてのカーネルモードのドライバに一定のインターフェイスを与える。それは、他のドライバがサポートすることのできる標準のルーチンの組を規定する。すべてのＩ／Ｏの要求は、Ｉ／Ｏリクエストパケット（ＩＰＲ）として送信されたＩ／Ｏマネージャ２１２からのものである。ＰｎＰマネージャ２１４は、その対応する装置がシステムに差し込まれるときにドライバの自動的な設置および構成をサポートする。電力マネージャ２１６は、スリープ、ハイバーネーション、遮断等の電力モードを含むシステムの電力使用を管理する。上位レベルのドライバ２１８はクラスドライバを含み、ＯＳ構成要素２１０に直接インターフェイスするいかなるドライバも含み得る。一実施例において、Ｉ／Ｏマネージャ２１２、ＰｎＰマネージャ２１４、電力マネージャ２１６は、マイクロソフトウインドウ（登録商標）２０００、ＣＥおよびＮＥＴからのものである。
【００２９】
汎用多重通路ドライバ（ＵＭＤ）２２０は、テープドライブ、テープライブラリおよびディスクサブシステム等の図１Ｂに示された記憶装置への多重通路を管理するドライバである。ＵＭＤ２２０は、上位レベルのドライバ２１８によって送信され、かつ下位レベルのドライバ２５０にインターフェイスするＩＲＰに応答する。
【００３０】
下位レベルのドライバ２５０は、システムに接続された装置の制御および管理の責任を直接負うドライバを含む。下位レベルのドライバ２５０は、テープドライブデバイスドライバ２５２、テープライブラリデバイスドライバ２５４、およびＨＢＡドライバ２５６を含み、これらのドライバは、デバイス１６５i、ライブラリ１６５j、およびＨＢＡ１６５kそれぞれのドライバである。ＨＢＡ１６５kは次に図１Ｂに示された対応する記憶装置を直接制御する。
【００３１】
図３は、本発明の一実施例に従ったフィジカルデバイスへの多重通路を示す図である。経路は、ＨＢＡおよび対応するデバイスの間の物理的な接続である。典型的に、ＨＢＡは、スイッチ４０を通した多重通路を介して多数のデバイスにインターフェイスされる。たとえば、ＨＢＡ１６５iは、経路３１１，３１２および３１３を通して、テープドライブ５０1および５０2ならびにテープライブラリ６０に接続され、ＨＢＡ１６５kは、経路３２１，３２２および３２３それぞれを通して接続される。
【００３２】
汎用多重通路ドライバ（ＵＭＤ）２２０は、多重通路の管理、フェイルオーバーおよびフェイルバックならびにロードバランシングを行なう。これは、システムに接続されたデバイスのリストを維持することによって達成される。装置は、そのデバイス名、デバイス識別子およびデバイスの連続番号によって識別される。この情報は、典型的に、対応する下位レベルのドライバによって照会されたときに周辺装置によって与えられる。
【００３３】
図４は、本発明の一実施例に従った汎用多重通路ドライバ（ＵＭＤ）２２０を示す図である。ＵＭＤ２２０は、ドライバエントリ４１０、主要な機能グループ４２０、システムスレッド４８０および経路モニタ４９０を含む。
【００３４】
ドライバエントリ４１０は、上位レベルのドライバ２１８によって発行されるＩＲＰに応じて、ＵＭＤ２２０にエントリポイントを与える。ドライバエントリ４１０は、主要な機能グループ４２０にアドレス参照またはポイントを与えるドライバオブジェクトポインタ４１５を含む。ドライバエントリ４１０は、システムスレッド４８０の生成を引き起こす。システムスレッド４８０は経路モニタ４９０を呼び出す。
【００３５】
主要な機能グループ４２０は、フィジカルデバイスに接続された多重通路を管理する、複数の機能、ルーチン、またはモジュールを含む。一実施例において、これらの機能、モ
ジュールまたはルーチンは、マイクロソフトデベロッパーネットワーク（ＭＳＤＮ）ライブラリと互換性がある。主要な機能グループ４２０は、ディスパッチ機能４３０、フィルタＳＣＳＩ機能４４０、フィルタ追加装置機能４５０、フィルタアンロード機能４６０および電力ディスパッチ機能４７０を含む。
【００３６】
ディスパッチ機能４３０、フィルタＳＣＳＩ機能４４０およびフィルタ追加装置機能４５０は、下位レベルのドライバ２５０にインターフェイスされる。ディスパッチ機能４３０は、上位レベルのドライバ２１８からのＩＲＰの受信に応じて動作をディスパッチする。一実施例において、ＰｎＰマネージャは、列挙法、リソースリバランシングの間に、およびプラグ・アンド・プレーアクティビティがシステム上で生じる別のときに、主要なＰｎＰ  ＩＲＰ要求を送信する。フィルタＳＣＳＩ機能４４０は、装置のまたは特定の装置のＩ／Ｏ制御コードを有するＩＲＰを設定し、下位レベルのドライバからのサポートを要求する。フィルタ追加装置機能４５０は、対応するフィジカルデバイスオブジェクトのために新しいフィルタデバイスオブジェクトを生成および初期化し、次にこれは、デバイスオブジェクトをデバイスのためのドライバのデバイススタックに接続する。フィルタアンロード機能４６０は、いかなるオブジェクトも解放し、いかなるドライバによって割当てられたリソースも解放する。これはシステムスレッド４８０を終了する。
【００３７】
経路モニタ４９０は、システムにおける多重経路を監視し、いかなるフェイルオーバーがあるかどうかを決定する。周辺装置が経路のうちの１つを介して到達できないときに、経路のフェイルオーバーが生じる。これは、切断またはいかなる他の誤動作もしくはエラーの結果であり得る。フェイルオーバーが生じたときに、フェイルした経路は悪い経路のリストに配置される。悪い経路が再び機能するようになったときに、経路のフェイルバックを開始することができる。フェイルバックが完了すると、経路は悪い経路リストから除去される。フェイルオーバーが検出されたときに、代替の装置への代替の経路がフェイルした装置のために確立され得る。代替の装置は、フェイルオーバーの前に、アクティブまたはパッシブであり得る。
【００３８】
図５は、本発明の一実施例に従ってディスパッチするためのプロセス４３０を示すフロー図である。
【００３９】
「開始」すると、プロセス４３０は小さなＩＲＰに応答する（ブロック５１０）。小さなＩＲＰは、始動装置の小さなＩＲＰ（ブロック５２０）、除去装置の小さなＩＲＰ（ブロック５３０）、装置関係の小さなＩＲＰ（ブロック５４０）、照会ｉｄの小さなＩＲＰ（ブロック５５０）、停止装置の小さなＩＲＰ（ブロック５６０）、および装置使用通知（ブロック５７０）であってもよい。プロセス４３０は、これらの小さなＩＲＰに応じて動作を行なう。
【００４０】
ブロック５２０における始動装置の小さなＩＲＰの動作の詳細が図６に示されている。除去装置の小さなＩＲＰに応じて、プロセス４３０は、装置リストからエントリを除去する（ブロック５３２）。このエントリは、名前、連続番号および装置のＩＤ等の装置の属性を含む。次に、プロセス４３０は、接続された装置を切離す（ブロック５３４）。これは、コマンドを、接続された装置を制御する責任を負う下位レベルのドライバに送信することによって行なうことができる。それからプロセス４３０が終了する。
【００４１】
装置関係の小さなＩＲＰに応じて、プロセス４３０では、ページメモリにおける装置関係の構造が割当てられ（ブロック５４２）、それから終了する。照会ｉｄの小さなＩＲＰに応じて、プロセス４３０は装置ＩＤを生成し（ブロック５５２）、装置ＩＤを戻し（ブロック５５４）、それから終了する。停止装置の小さなＩＲＰに応じて（ブロック５６０）、プロセス４３０は装置リストからエントリを除去し（ブロック５６２）、次に終了す
る。装置使用通知の小さなＩＲＰに応じて（ブロック５７０）、プロセス４３０は、ＩＲＰをスタックにおける次のドライバに転送し（ブロック５７２）、次に終了する。
【００４２】
図６は本発明の一実施例に従って始動装置の小さなＩＲＰに応答するためのプロセス５２０を示すフロー図である。
【００４３】
開始すると、プロセス５２０は、下位レベルのドライバを用いてデバイスを開始する（ブロック６１０）。これは、コマンドを、デバイスを直接制御する下位レベルのドライバに送信することによって、または制御パラメータを適切な呼出し機能に書込むことによって行なわれ得る。次に、プロセス５２０は装置名を得る（ブロック６２０）。次に、プロセス５２０は、装置のＳＣＳＩアドレスを得るために、制御コマンドを下位レベルのドライバに送信する（ブロック６３０）。次に、プロセス５２０はデバイス識別子（ＩＤ）を得る（ブロック６４０）。次に、プロセス５２０は装置連続番号を得る（ブロック６５０）。
【００４４】
次に、プロセス５２０は、装置コードが装置リストにおけるエントリと一致するかどうかを決定する（ブロック６６０）。装置コードは、装置ＩＤもしくは装置の連続番号のうちのいずれか１つ、またはその双方であってもよい。一致すれば、プロセス５２０は新しいバスのフィジカルデバイスオブジェクトを生成し（ブロック６７０）、次に終了する。一致しなければ、プロセス５２０は終了する。
【００４５】
図７は、本発明の一実施例に従って下位レベルのドライバにインターフェイスするためのプロセス４４０を示すフロー図である。
【００４６】
開始すると、プロセス４４０は、デバイス特性が得られたことを表示するデバイス特性フラグが設定されているかどうかを決定する（ブロック７１０）。設定されていなければ、プロセス４４０は、接続された装置のサポートされる装置名を得る（ブロック７１５）。次に、プロセス４４０は、サポートされる装置名が装置リストにあるかどうかを決定する（ブロック７２０）。あれば、プロセス４４０は、装置サポートフラグを表明し、次に終了する。なければ、プロセス４４０は、装置サポートフラグを否定し（ブロック７３０）、終了する。
【００４７】
デバイス特性フラグが設定されていなければ、プロセス４４０はフィルタデバイスオブジェクトが接続されるかどうかを決定する（ブロック７３５）。接続されていれば、プロセス４４０は、主張、解放または照会があるかどうかを決定する（ブロック７４０）。あれば、プロセス４４０は、デバイス特性フラグが設定されているかどうかを決定する（ブロック７４５）。なければ、プロセス４４０はエラーステータスに戻り（ブロック７５５）、終了する。主張、解放または照会がない場合に、プロセス４４０はエラーステータスに戻り（ブロック７５５）、終了する。フラグがブロック７４５で設定されていなければ、プロセス４４０は要求を次のドライバに送り（ブロック７５０）、終了する。
【００４８】
フィルタデバイスオブジェクトが接続されない場合に、プロセス４４０は、上位レベルのドライバがバスのフィジカルデバイスオブジェクトを主張するかどうかを決定する（ブロック７６０）。主張しなければ、プロセス４４０は終了する。プロセス４４０は成功した状態に戻る（ブロック７６５）。次にプロセス４４０は、Ｉ／Ｏ要求を処理するかまたはロードのバランスをとり（ブロック７７０）、終了する。ブロック７７０の詳細は図９に示されている。
【００４９】
図８は、本発明の別の実施例に従って経路を監視するためのプロセス４９０を示すフロー図である。
【００５０】
「開始」すると、プロセス４９０は、経路のフェールオーバーが検出されるかどうかを決定する（ブロック８１０）。これは、経路が悪い経路または切断された状態を有する経路のリストにあるかどうかを決定することによって行なうことができる。検出されなければ、プロセス４９０は、フェールオーバーのポーリングを継続するためにブロック８１０に戻る。検出されなければ、フェールオーバーが検出されたときに、プロセス４９０は経路または対応する装置の接続ステータスを決定する（ブロック８２０）。これは、下位レベルのドライバまたはＯＳドライバによって戻される際に装置のステータスをチェックすることによって行なうことができる。フェールオーバーが検出されたときに、代替の装置への代替の経路がフェイルした装置のために確立され得る。代替の装置は、フェールオーバーの前にアクティブまたはパッシブであってもよい。次に、プロセス４９０は、接続ステータスが接続された状態であるかどうかを決定する（ブロック８３０）。接続された状態は、デバイスが線に戻ったことを示している。接続された状態でなければ、プロセス４９０は、ブロック８２０に戻って、接続ステータスの決定を継続する。
【００５１】
図９は、本発明の一実施例に従ってロードのバランスをとるためのプロセス７７０を示すフロー図である。
【００５２】
「開始」すると、プロセス７７０は、経路へのＩ／Ｏ要求のキューリストを維持する（ブロック９１０）。これは、キューリストにおける各々のＩ／Ｏ要求に関する情報を記憶することによって行なうことができる。情報は、デバイスオブジェクトへのポインタまたはアドレス参照、デバイスの優先順位、経路類似性コード、経路への複数のＩ／Ｏ要求またはチャネル特性を含み得る。チャネル特性は、チャネル速度または転送速度、チャネル容量等を含み得る。次に、プロセス７７０は、経路にわたってＩ／Ｏ要求を分配して、バランスポリシーに従ってロードのバランスをとる（ブロック９２０）。これは、バランス基準を用いて、キューリストにおける次の経路を選択することによって行なうことができる（ブロック９３０）。複数のバランス基準またはポリシーを用いることができる。
【００５３】
ラウンドロビンポリシーにおいて、プロセス７７０は回転の基準で次の経路を選択する（ブロック９４０）。これは、キューの先端を端部に戻しかつキューの要求を１つの位置だけ行送りすることによって行なうことができる。経路類似性ポリシーにおいて、プロセス７７０は、経路類似性コードに従って次の経路を選択する（ブロック９５０）。経路類似性コードは、現在の経路に対する次の経路の類似性の度合いを示している。要求ポリシーにおいて、プロセス７７０は、その経路に割当てられたＩ／Ｏ要求の数に従って次の経路を選択する（ブロック９６０）。典型的に、Ｉ／Ｏ要求の最小の量を有する経路が選択される。優先ポリシーにおいて、プロセス７７０は、装置の優先度に従って次の経路を選択する（ブロック９７０）。装置の優先度は、初期化または構成の際に予め決定され得るか、またはＩ／Ｏタスクの性質に基づいて動的に決定され得る。サイズポリシーにおいて、プロセス７７０は、Ｉ／Ｏ要求のブロックサイズに従って次の経路を選択する（ブロック９８０）。典型的に、最大のブロックサイズを有する経路が選択される。チャネルポリシーにおいて、プロセス７７０はチャネル特性に従って次の経路を選択する（ブロック９９０）。たとえば、早い転送速度を有するチャネルを有する経路を選択し得る。
【００５４】
本発明は、複数の実施例の観点から記載されてきたが、当業者は、本発明が記載された実施例に限定されず、別掲の特許請求の精神および範囲内における修正および変更を伴って実施することができることを認識するであろう。したがって、この説明は限定するものではなく例示的なものとしてみなされるべきである。
【図面の簡単な説明】
【００５５】
【図１Ａ】本発明の一実施例を実施することのできるシステムを示す図である。
【図１Ｂ】本発明の一実施例に従ったサーバ／クライアントシステムを示す図である。
【図２】本発明の一実施例に従った記憶管理ドライバを示す図である。
【図３】本発明の一実施例に従ったフィジカルデバイスへの多重通路を示す図である。
【図４】本発明の一実施例に従った汎用多重通路ドライバを示す図である。
【図５】本発明の一実施例に従った、ディスパッチするためのプロセスを示すフロー図である。
【図６】本発明の一実施例に従った、始動装置の小さなＩＲＰに応答するためのプロセスを示すフロー図である。
【図７】本発明の一実施例に従った、下位レベルのドライバにインターフェイスするためのプロセスを示すフロー図である。
【図８】本発明の別の実施例に従った、経路を監視するためのプロセスを示すフロー図である。
【図９】本発明の一実施例に従った、ロードのバランスをとるためのプロセスを示すフロー図である。
【図１Ａ】
2006513469.tif 000003
【図１Ｂ】
2006513469.tif 000004
【図２】
2006513469.tif 000005
【図３】
2006513469.tif 000006
【図４】
2006513469.tif 000007
【図５】
2006513469.tif 000008
【図６】
2006513469.tif 000009
【図７】
2006513469.tif 000010
【図８】
2006513469.tif 000011
【図９】
2006513469.tif 000012
【国際調査報告】
2006513469.tif 000013
2006513469.tif 000014