コンピューティングデバイス上でのアプリケーションの実行を成功させるには、デバイスのオペレーティングシステムは、アプリケーションにさまざまな資源を提供しなければならない。それらの資源を管理する改良された方法を実施してそれら資源の効率的な割り当て及び使用を容易にするのに適したコンピューティングシステムが、以下の記載で詳細に説明される。
本明細書で説明する資源管理アーキテクチャーは、多くの多様な環境及びコンピューティングコンテキストで実施することができる。議論の目的で、このアーキテクチャーは、パーソナルコンピューター用のコンピューティングシステムのコンテキストで説明されるが、ゲームコンソール、携帯電話、PDA、セットトップボックス(STB)等の多種多様な電子デバイスを含む他のコンピューティング環境にも等しく適用可能である。
後述するように、多機能ハードウェアデバイスをサポートするのに使用される単一の多機能ドライバーを提供する代わりに、ハイブリッド資源マネージャーが提供される。このハイブリッド資源マネージャーは、多機能ハードウェアデバイスの個別のデバイスドライバーと共に使用することができるが、ハードウェアデバイスにアクセスするすべてのアプリケーションが使用できる一貫した管理及びポリシーのフレームワークを提供することができる。
図2は、コンピューティングユニット22及びコンピューティングユニット22と接続又は別の方法でインターフェースする複数の周辺コンポーネントを有するコンピューティングシステム20を示す。コンピューティングユニット22は、1つ又は複数のプロセッサ24(1)、24(2)、…、24(P)、揮発性メモリー26(例えば、RAM)、及び不揮発性メモリー28(例えば、ROM、フラッシュ、ハードディスク、CD ROM等)を有する。
オペレーティングシステム30が、不揮発性メモリー28に記憶されている。オペレーティングシステム30は、揮発性メモリー26内にロードされて、1つ又は複数のプロセッサ24上で実行されると、複数のアプリケーション32(1)、32(2)、…、32(A)の同時実行をサポートする、マルチタスクオペレーティングシステムである。1つの好ましいオペレーティングシステムは、Microsoft Corporationによって販売されているWindows(登録商標)ブランドのオペレーティングシステムである。しかしながら、他のオペレーティングシステムも用いることができることに留意されたい。
アプリケーション32(1)、32(2)、…、32(A)は、システムにロードして実行でき、ハードウェア資源へのアクセスを必要とする異なる資源コンシューマの例である。資源コンシューマには、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スケジューリングアプリケーション、金融アプリケーション、教育アプリケーション、エンターテインメントアプリケーション等のアプリケーションを含むことができる。
オペレーティングシステム30は、アプリケーション32(1)〜32(A)への割り当てのためにコンピューティングシステム20の資源を管理する資源管理システム40を有する。資源管理システム40は、オペレーティングシステム30とは別個に実施することができるが、この例では、オペレーティングシステム内に統合されたものとして示されている。資源管理システム40は、図3を参照してより詳細に後述される。
オペレーティングシステム30は、コンピューティングシステム20内のさまざまな関連付けられる周辺コンポーネント用の複数のソフトウェアドライバー42(1)、…、42(D)も有する。1つ又は複数のCOM(通信)ポート44も、オペレーティングシステム30の一部であるとして示されている。周辺コンポーネントの代表的な集合体が、コンピューティングユニット22を取り囲んで示されている。
USBバス54は、コンピューティングシステム22に接続されて、多くの異なる種類のUSB互換周辺コンポーネントをインターフェースする。このようなコンポーネントの例には、モデム56、スピーカー58、キーボード60、及び他のUSBデバイス62が含まれる。コンピューティングユニット22はまた、ネットワーク66に結合されて、他のコンピューターとインターフェースする。ネットワーク66は、LAN、WAN、インターネット、イントラネット、及び無線ネットワークを含む多くの多様なタイプのネットワークを表す。
1394シリアルバス68は、コンピューティングユニット22に接続されて、多くの異なる種類の1394互換周辺コンポーネントをインターフェースする。このようなコンポーネントの例には、メモリードライブ70(例えば、ディスクドライブ、テープドライブ、CD ROMドライブ等)、モデム72、スピーカー74、CPU(中央処理装置)76、及び他の1394デバイス78が含まれる。この例示のシステムには、USBバス及び1394バスが示されているが、これに加えて又は代替的に、SCSIバス、ISA(業界標準アーキテクチャー)バス、及びPCI(周辺コンポーネント相互接続)バス等の他のバスアーキテクチャーを使用できることに留意されたい。
コンピューティングシステム20は、ディスプレイ80を有する。ディスプレイ80は、テレビ又はコンピューターモニターとすることができる。ディスプレイは、1つ又は複数のディスプレイインターフェース82(1)、82(2)、…、82(C)を介してコンピューティングユニット22とインターフェースされる。これらディスプレイインターフェースは、ビデオポート、オーバーレイ、及びビデオメモリーを表す。コンピューティングユニット22に結合された他の例示の周辺デバイスには、DVDプレイヤー84、バイオメトリックスキャナー86、及びスマートカードリーダー88が含まれ得る。
図2に示すコンポーネントの集合体は、資源管理システム40によって管理される例示の種類の資源を示す。それらの中には、キーボード、モデム、USBデバイス、バイオメトリックスキャナー、スマートカードリーダー、1394デバイス、ディスプレイインターフェース、レコーダー、メモリードライブ等のさまざまなハードウェアデバイス資源がある。他の多くのコンポーネントをシステムに追加することができ、図示したコンポーネントの1つ又は複数を取り除くことができる。前述したように、これらのデバイスの2つ以上のものの機能を単一の多機能ハードウェアデバイスに結合することがますます一般的になってきている。
図3は、図2のコンピューティングシステム20によって実施されて多機能ハードウェアデバイスの資源管理を容易にすることができる資源管理アーキテクチャー300の一例を示す。アーキテクチャー300は、ソフトウェアで実施され、この例では、カーネルレベルのコンポーネントだけでなくユーザレベルのコンポーネントも含む。アーキテクチャー300は、ハイブリッド資源マネージャー302及びデバイスドライバー304(1)、304(2)、304(3)、…、304(P)を有する。これらは、1つ又は複数の資源コンシューマをサポートする。資源コンシューマの例には、アプリケーション332(1)、332(2)、332(3)、…、332(N)等のユーザレベル資源コンシューマが含まれる。図示するように、設けることができる1つのアプリケーションレベル資源コンシューマは、アプリケーションレベルの認証及びセキュリティを提供して、例えば、トロイ又は他のマルウェアが、パスワード、公開鍵等のユーザの証明書(credentials)のスプーフィングも、別の方法でのユーザの証明書へのアクセスもしないことを確保するための認証ユーザインターフェース332(1)である。図示しないが、カーネルレベル資源コンシューマも設けることができる。
各デバイスドライバー304(1)〜304(4)は、ハードウェアデバイスに関連付けられ、ハードウェアデバイスの可用性を追跡する。すなわち、上述したように、デバイスドライバーは、ハードウェアデバイスとインターフェースする任意のソフトウェアコンポーネント又はソフトウェアモジュールとすることができる。デバイスドライバー304(1)は、例えば、シリアルデータをモデムに渡すことを多機能デバイス340に可能にするシリアルドライバーとすることができる。デバイスドライバー304(2)は、例えば、呼の発信及び受信を多機能デバイス340に可能にするISDNインターフェースドライバーとすることができ、デバイスドライバー304(3)は、例えば、WANネットワークインターフェースデバイスへのデータの送信及び受信を多機能デバイス340に可能にするWANドライバーとすることができる。多機能デバイスの別の例は、フラッシュメモリーを有するスマートカードリーダー及びバイオメトリックリーダーを統合するキーボードとすることができる。この場合、デバイスドライバー304(1)はキーボードとすることができ、デバイスドライバー304(2)はスマートカードドライバーとすることができ、デバイスドライバー304(3)はバイオメトリックスキャナードライバーとすることができ、デバイスドライバー304(4)はフラッシュメモリードライバーとすることができる。さらに別の多機能デバイスは、WANデータインターフェース、X.25データインターフェース、及びデータ暗号化プロセッサを結合する仮想プライベートネットワーク(VPN)カードとすることができる。これらのデバイスドライバーは、非常に複雑な場合があり、前述したように、一般に、独立したドライバーとして実施するのが最も良いとされる。もちろん、上述した多機能デバイス及びデバイスドライバーは例示にすぎず、本明細書で説明する原理は、任意の多機能ハードウェアデバイス及びこれらのデバイスとインターフェースするのに使用されるドライバーにも適用することができる。当業者は、技術が進歩するにつれて、より多くのハードウェア機能が利用可能になり、数多くのハードウェア機能を単一のデバイスに結合することが可能になること、並びに本明細書で説明する原理が、これら後に開発される多機能デバイス及びデバイスドライバーに等しく適用できることを理解するであろう。デバイスドライバーは、カーネルレベルで示されているが、1つ又は複数のデバイスドライバーは、ユーザレベルでも実施することができる。
各デバイスドライバー304は、自身をハイブリッド資源マネージャー302に登録し、ハイブリッド資源マネージャー302によって使用される一組のコールバックを供給して情報を得る。例えば、或るコールバックは、資源計算を行うのに使用され、別のコールバックは、予約に成功したことをプロバイダーに通知するのに使用される。ハイブリッド資源マネージャー302は、同じコンテキストがハイブリッドハードウェアデバイスに使用されることを可能にし、ハードウェアデバイスによって実行されるその機能について特定のデバイス資源マネージャーによって使用される対応するデバイスクラスハンドルを得ることを可能にする。
ハイブリッド資源マネージャー302は、アーキテクチャー内の他のモジュールとインタラクトするパブリックインターフェース320を公開する。パブリックインターフェース320は、デバイスドライバー304によって使用されるプロバイダーAPIコールのセット及びアプリケーション332(1)〜332(N)又は他の資源コンシューマから資源の要求を受け付けるコンシューマAPIコールのセットを有する定義されたAPI(アプリケーションプログラムインターフェース)を含む。APIは、プログラムが所望のタスクを実行するために受け付ける入力の種類及びプログラムが所望のタスクの実行後に返す出力の種類を定義するプログラムに対するインターフェースである。アプリケーション332がタスクを実行したい時、アプリケーション332は、パブリックインターフェース320を使用して、ハイブリッド資源マネージャー302にアクティビティを作成し、そのアクティビティを実行するのに必要とされるさまざまな資源のセットを記述する1つ又は複数の設定を構築する。アクティビティは、システムで実行されているタスクに関連付けられるデータ構造である。ハイブリッド資源マネージャー302は、限られた資源のプールからどのアクティビティを完全に満たすことができるのかを決定し、満たすことができるアクティビティを有するアプリケーションが、要求された資源にアクセスすることを可能にする。
図4は、既存のアプリケーションとの後方互換性をサポートする目的で複数のパブリックインターフェースが設けられる図3に示すハイブリッド資源マネージャー302の1つの特定の例を示す。ハイブリッド資源マネージャー302には、適切なAPI標準規格に準拠した一連のインターフェースを備えるパブリックインターフェース(例えば、図3のパブリックインターフェース320)を通じてアクセスされる。この例では、例えば、それぞれバイオメトリックリーダー用及びスマートカードリーダー用の標準的なAPI404及び406が示されている。機能インターフェース402も示されている。機能インターフェース402は、信頼される第三者から入手可能な場合がある他の任意のハードウェアデバイス機能(例えば、フラッシュストレージ)を表す。これらのインターフェースは、ハードウェアデバイスに直接アクセスしない。これらのインターフェース402、404、及び406は、資源マネージャーにアクセスするのに現在用いられているものと同じであるので、後方互換性が維持されている。パブリックインターフェース320を通じて開放されるコンテキストは、ポリシーモジュールが確立できるポリシーのために、すべての基礎と成るシステムハードウェアに完全にアクセスできない場合がある。これについては、以下でより詳細に論述する。いくつかの場合に、ハイブリッド資源マネージャー302は、ハードウェアデバイス及び対応するコンテキストによってサポートされるすべてのデバイスクラスIDのリストを保持するコンテキスト構造を有する。
パブリックインターフェースは、ハイブリッド資源マネージャー302の高度化された機能の実施を容易にするのに使用される汎用ハイブリッド資源マネージャーインターフェース408も含む。すなわち、汎用ハイブリッド資源マネージャーインターフェース408は、APIとして実施することもでき、ハイブリッド資源マネージャー302の特徴を活用することができるアプリケーションによって使用される。汎用ハイブリッド資源マネージャーインターフェース408は、ハードウェアデバイスによって提供される異なる機能の個数及びタイプを識別する、ハイブリッドデバイス内のデバイスのためのハイブリッドデバイス列挙(enumeration);検証及び認証の目的のためのコンピューティングシステム及びハードウェアデバイスによって使用されるデバイス獲得;並びに多機能ハードウェアデバイスが獲得された後に、アプリケーション(例えば、アプリケーション332)が特定のオペレーションについて多機能ハードウェアデバイスに対する適切且つおそらく排他的なアクセスを与えられることを確保するデバイスロック、のような機能を提供する。
汎用ハイブリッド資源マネージャーインターフェース408は、異なるデバイス資源マネージャー間の通信を可能にすることを助け、したがって、(デバイスドライバー(例えば、デバイスドライバー304)を介した)デバイス間の通信を可能にすることを助ける。汎用ハイブリッド資源マネージャーインターフェース408は、制限されたビュー(view)でコンテキストを開放することも可能にし、これは、コンテキストが、開放された場合に、実際のパブリックAPIを通じて利用可能な機能のサブセットとなり得ることを意味する。
ハイブリッド資源マネージャー302は、インターフェースを通じてアクセスされる専用資源マネージャーも含む。図3に示す例では、機能マネージャー412、バイオメトリックマネージャー414、及びスマートカード資源マネージャー416が、それぞれ、機能インターフェース402、バイオメトリックインターフェース404、及びスマートカードインターフェース406を通じてアクセスされる。これらのインターフェースのそれぞれは、拡張可能であるが、後述するポリシーモジュールによって確立されたセキュリティ手順に従って完全性が検証される。専用資源マネージャー412、414、及び416は、後方互換性を可能にし、現在の資源マネージャーと同じ機能ではあるが、コンテキスト割り当て、外部資源ロック、及びハードウェア管理等の一定の重要な領域では改良(変更、retrofit)された機能を主として提供する。
コアハイブリッド資源マネージャー418は、異なる資源マネージャー間のアクセスの管理を担当し、したがって、多機能ハードウェアデバイスによって使用されるデバイス間及びハイブリッド資源マネージャーキテクチャを使用できるアプリケーション間のアクセスの管理を担当する。専用資源マネージャー412、414、及び416のそれぞれは、コアハイブリッド資源マネージャー418へのそれらのそれぞれの接続を担当する。追加の機能の制作を容易にし、開発され得る新しいタイプのハイブリッドハードウェアデバイスを扱うために、コアハイブリッド資源マネージャー418は拡張可能にされる。コアハイブリッド資源マネージャー418は、デバイスドライバーによって提供される資源(ローカル又はリモート)へのアクセスを調停(仲裁)する。図3のアプリケーション332等の資源コンシューマは、ドライバーによって提供される1つ又は複数の資源のセットを要求し、コアハイブリッド資源マネージャー418は、どのアプリケーションがデバイスドライバーのどの資源を使用するようになるのかを判断する。コアハイブリッド資源マネージャー418は、所定の衝突解決メカニズムに基づいて資源割り当て判定を行うことができる。
コアハイブリッド資源マネージャー418は、ポリシーモジュール420によって確立されたセキュリティ及び他のポリシーを施行する。ポリシーモジュール420は、デバイスレベル又はシステムレベルから確立されることになるポリシー(例えば、グループマシンポリシー又はローカルマシンポリシー)を受信することができる。実施できるポリシーの一例は次の通りである。例えば、スマートカードリーダー及びバイオメトリックスキャナーを含む多機能デバイスの場合、統合されたバイオメトリックスキャナーを有するスマートカードリーダーの排他的使用を必要とするポリシーを確立することができる。ユーザが、専用のスマートカードリーダー及び物理的に分離したバイオメトリックスキャナーの使用を試みる場合、ポリシーモジュール420は、これら2つのデバイスが獲得されることを防止する。もちろん、ポリシーモジュール420は、ハイブリッドハードウェアデバイスが、衝突等なしに適切に動作することを確保する他の多くのポリシーを確立することができる。例えば、衝突解決に関して、ハイブリッド資源マネージャー302が、優先度ベースの解決法を用いている場合、すべてのタスクにその資源を割り当てることができるとは限らないような衝突がある時は、ポリシーモジュール420は、コアハイブリッド資源マネージャー302がどのタスクが資源にアクセスすべきかを判断できるように、ユーザ又はシステムに基づくそれらの相対的な重要性に従ってアプリオリにタスクをランク付けする。他の実行可能なポリシーには、ファーストリザベーションウィン(first reservations win)、最近時リザベーションウィン(most recent reservations win)、資源の「公平(fair)」共有、何が何に勝つかについてのユーザ選択(user picks what wins over what)等が含まれる。多くの異なるポリシーが可能である。システム又はユーザは、ポリシーを設定し、ポリシーマネージャーモジュールは、それらポリシーを絶対的な優先度に変換する。
ハイブリッド資源マネージャー302は、図3に示すそれら追加のモジュール等、さまざまな他のモジュールを含むことができる。例えば、異なるアプリケーションがハイブリッドハードウェアデバイスへのアクセスを試みるごとに別々の認証プロセスを実行する必要がないように、ハードウェアデバイスの認証を集中化させる目的で認証モジュール424を設けることができる。この認証モジュールは、(コンテキストコールの結果として)アプリケーションのために起動することもできるし、デバイスマネージャーモジュール422がハイブリッドハードウェアデバイスのために起動することもできる。加えて、デバイスマネージャーモジュール422は、ハイブリッドハードウェアデバイスを監視して管理する。デバイスマネージャーモジュール422は、ハイブリッドハードウェアデバイス及び機能のレベルで資源をロックダウンすることもできる。
ハンドラー430、432、及び434等のデバイス機能ハンドラーは、入出力制御コードを使用して、ハイブリッド資源マネージャー302とハイブリッドハードウェアデバイスとの間の詳細な通信プロトコルを管理する。認証ユーザインターフェース又はユーザ経験モジュールを設けて、必要とされ得るさまざまなレベルのユーザ認証を統合し、一貫したインターフェースをユーザに提供することもできる。このような認証は、例えば、ユーザレベル、システムレベル、及び/又はハードウェアデバイスレベルで提供することができる。
図5は、コンピューティングシステムによって使用されるハードウェア資源の管理を容易にする方法の一例を示すフローチャートである。この方法は、ステップ510において、汎用ハイブリッド資源マネージャーインターフェースが、多機能ハードウェア資源によって実行される任意の個別の機能にアクセスするための資源獲得要求を受け付けた時に開始する。判定ステップ520において、資源獲得要求が、多機能ハードウェア資源によって提供される機能について確立されたポリシーに準拠するか否かの判断が行われる。準拠しない場合、アクセスは、ステップ530において拒否される。資源獲得要求がポリシーに準拠する場合、ステップ540において、ハイブリッド資源マネージャーは、多機能ハードウェア資源に関連付けられ且つ要求された個別の機能に専用のデバイスドライバーと通信する。デバイスドライバーとの通信に応答して、ステップ550において、ハイブリッド資源マネージャーは、資源獲得要求に従って多機能ハードウェアデバイスへのアクセスを可能にする目的で多機能ハードウェアデバイスを獲得する。
主題は、構造的な特徴及び/又は方法論的な動作に特有の文言で説明されているが、添付の特許請求の範囲で規定される主題は、必ずしも、上述した特定の特徴にも動作にも限定されないことが理解されるべきである。それどころか、上述した特定の特徴及び動作は、特許請求の範囲を実施する例示の形態として開示されている。