Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5065566B2 - リソースマネージャアーキテクチャ - Google Patents
[go: Go Back, main page]

JP5065566B2 - リソースマネージャアーキテクチャ - Google Patents

リソースマネージャアーキテクチャ Download PDF

Info

Publication number
JP5065566B2
JP5065566B2 JP2001580657A JP2001580657A JP5065566B2 JP 5065566 B2 JP5065566 B2 JP 5065566B2 JP 2001580657 A JP2001580657 A JP 2001580657A JP 2001580657 A JP2001580657 A JP 2001580657A JP 5065566 B2 JP5065566 B2 JP 5065566B2
Authority
JP
Japan
Prior art keywords
resource
activity
resources
configuration
provider
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001580657A
Other languages
English (en)
Other versions
JP2004508611A (ja
Inventor
サンカラナラヤン ムクンド
シー.フォルツ フォレスト
ショウ ジョージ
エー.セザー デイル
アール.ラフマン アンディー
スリニバサン ジェイ
ケイ.バックマン タージェ
ジー.パリー ウィリアム
エス.ベイキン デイビッド
ビー.ジョーンズ マイケル
シー.マクダウェル シーン
ラジャ ジェイアチャンドラン
スピード ロビン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004508611A publication Critical patent/JP2004508611A/ja
Application granted granted Critical
Publication of JP5065566B2 publication Critical patent/JP5065566B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5014Reservation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
(技術分野)
本発明はコンピュータに関し、より詳細には、コンピュータのリソースを管理するためのシステムおよび方法に関する。
【0002】
(発明の背景)
コンピュータは、その従来のデスクトップルーツをはるかに超えて進化している。今日のパーソナルコンピュータ(PC)には、従来のデスクトップアプリケーション(例えばワードプロセッシング、表計算、電子メールなど)に加えて、オーディオビデオファイルの再生、音楽CD(コンパクトディスク)の再生、ブロードキャスト番組の受信および表示などが求められている。この進化の多くの部分は、計算、インターネット、テレフォニー、および娯楽の技術が不断に収束することによって促進されている。
【0003】
この結果、コンピュータのルック、フィール、および機能は、様々な消費者環境および動作環境に向けて進化し続けている。例えば、家庭娯楽向けに設計されるコンピュータは、ブラウザソフトウェア、1つ以上のチューナ、EPG(電子番組ガイド)ソフトウェア、種々のオーディオ/ビデオドライバ、ゲーミングソフトウェアを搭載した、セットトップボックスまたはゲームコンソールとして実現することができる。オフィス向けに設計されるコンピュータは、従来のデスクトップPCに似た外観とすることができるが、より向上したコンピューティング体験を提供するために、ブロードキャストチューナ、DVD(ディジタルビデオディスク)ドライバ、サラウンドサウンド付きステレオスピーカなどが付属したものとすることができる。携帯型コンピュータの多様性および機能は、移動ユーザの需要が増加するのに伴って一層広い範囲に及んでいる。
【0004】
より多様なタスクを実行することがコンピュータに求められている中で、ユーザが複数タスクの同時実施を期待するのは珍しいことではない。このユーザ需要の増加により、様々なタスクに対処するために既存のリソースに対してより多くの需要が生じている。残念ながら、このことにより、すべてのタスクを同時に達成するのに十分なリソースを要求時にコンピュータが備えていない可能性がより高くなる。
【0005】
このリソース不足はおそらく、家庭娯楽環境向けに設計されたコンピュータの場合に最も明白である。このようなコンピュータは、複数の機能を同時に実施できなければならないだけでなく、異なる複数のユーザの要求も満たさなければならない。例えば、あるユーザは、娯楽コンピュータが指定時間にある番組を録画するように要求し、別のユーザは、コンピュータが同じ時間に異なる番組に合わせるように要求する。コンピュータにチューナが1つしかない場合、両方のタスクを同時に達成することはどうしてもできないので、これは問題である。
【0006】
このような状況では、コンピュータは、どのタスクを実施すべきであってどのタスクを実施すべきでないかの識別に窮する。今日、アプリケーションは、先着順または遅い順にリソースを得る。したがってアプリケーションは、ユーザの希望に関係なくリソース割振りを制御する。先の例で、テレビジョンアプリケーションがレコーダアプリケーションに勝ってチューナ制御権を握った場合、ユーザが第2の番組を見ることよりも第1の番組を録画することの方にずっと興味があるかもしれなくても、テレビジョンアプリケーションがリソース(すなわちチューナ)を制御することになる。アプリケーションがリソースを得ると、リソースは、アプリケーションが明示的に明け渡すまでアプリケーションによって保持される。
【0007】
したがって、リソースに対する需要が増加し続けるのに伴い、リソースと、異なるユーザ/アプリケーションへのリソース割振りとを管理する技術に対する必要がより高まっている。
【0008】
(発明の概要)
リソースを管理するためにコンピュータシステム中で実現されるリソース管理アーキテクチャについて述べる。
【0009】
説明する実装形態では、一般的なアーキテクチャは、リソースマネージャと、システムコンポーネントやアプリケーションなどの1つ以上のリソースコンシューマをサポートする複数のリソースプロバイダとを含む。各プロバイダは1つのリソースに関連し、リソースマネージャとインタフェースしているときにこのリソースのためのマネージャとして行動する。リソースマネージャは、コンシューマのために、リソースプロバイダから提供されるリソースへのアクセスを調停する。
【0010】
このアーキテクチャには、リソースマネージャがリソースを割り振るのに使用する様々なポリシーを設定するためのポリシーマネージャを任意選択で含めることができる。リソースマネージャが使用することのできるポリシーの1つは、どのアプリケーションおよび/またはユーザが他を制してリソース使用の優先度を有するかを決定するための、優先度に基づくポリシーである。
【0011】
説明する実施形態では、各リソースプロバイダはリソースマネージャに登録する。リソースコンシューマは、リソースマネージャに「アクティビティ」を生み出し、アクティビティを実施するのに必要な様々なリソースセットを記述する1つ以上の「構成」を構築する。アクティビティは、構成を保持するコンテナデータ構造(container data structure)として実装され、各構成は、リソースの識別を含むデータ構造として実装される。リソースマネージャは、アクティビティおよび構成を維持する。
【0012】
説明する実施形態では、各リソースコンシューマは、各アクティビティにつき1つ以上の構成を指定することができる。複数の構成を指定する場合、リソースコンシューマは、好ましさ(preference)に従ってこれらをランク付けすることができる。これにより、動作条件の変化に応じて、リソースコンシューマをある構成から別の構成に動的に変更することができる。一態様では、優先度のより高いリソースコンシューマがどこかで必要としているリソースがある場合に、現在のリソースコンシューマに、より好ましくない構成を使用するように求めるか、あるいはそのリソース構成をすべて放棄するか必要とされる特定のリソースを放棄するように求めることにより、このリソースを確保することができる。後でこれらのリソースが再び利用可能になったときは、リソースマネージャはリソースコンシューマに通知することができ、したがってリソースコンシューマは、好ましい構成にアップグレードするように要求することができる。
【0013】
一実施形態では、リソースマネージャは、一組のアプリケーションプログラムインタフェース(API)を公開する。リソースコンシューマおよびリソースプロバイダは、APIを使用して、リソースマネージャと通信し、リソースの登録、アクティビティの生成、構成の構築などの機能を実施する。
【0014】
一実施形態では、リソースコンシューマは、リソースのうち、リソースコンシューマがタスクを実施するのに必要なリソースのサブセット(したがってそれらのリソースプロバイダ)だけしか意識しない。これらのリソースは、タスクを実施するためにリソースコンシューマの知らない他のリソースに依拠することもある。リソースプロバイダは、呼出しを受け取って構成を構築するように構成されている。リソースコンシューマが知っているリソースプロバイダは、リソースコンシューマから直接呼び出される。リソースコンシューマが知らないリソースプロバイダは、それらのリソースを使用するリソースプロバイダから呼び出される。
【0015】
一実施形態では、リソースプロバイダが呼び出されたとき、リソースプロバイダは、リソースマネージャが1つ以上の構成を管理することを可能にする情報をリソースマネージャに提供する。ある特定の実装形態は、種々のリソースプロバイダ間のリソース従属関係を記述する階層ツリー構成である。この構成は階層的な性質を有するので、リソース予約およびリソースコンシューマへのエラー報告が容易である。
【0016】
一実施形態では、リソース予約が失敗したとき、またはプリエンプト(preemption)が行われたとき、エラー通知が生成される。この構成は階層的な性質を有するので、リソースコンシューマに知られているリソースプロバイダが見つかるまで各従属リソースプロバイダの親を辿っていくことにより、エラー報告はより効率的になる。次いで、この知られているリソースプロバイダは、リソースコンシューマに理解される用語で、エラーをリソースコンシューマに明確に伝えることができる。報告は様々な形をとることができる。例えば、報告は、要求された既知のリソースが利用不可能であることを知らせる単純な通知としてもよい。報告はまた、リソースコンシューマに種々のオプション(例えばタスクを実施するのに使用する代替リソース設定)を提示するものとしてもよい。
【0017】
説明する実施形態の一態様は、リソースコンシューマにエラーを報告するのではなく、リソースプロバイダのレベルでエラーを修復することを試みる、トラブルシューティング機能を提供する。
【0018】
一実施形態では、どのリソースが必要かをリソースコンシューマが知らなくてもいいようにリソースコンシューマのためにリソースマネージャとインタフェースするための、インテリジェントインタフェースコンポーネントが提供される。このインタフェースコンポーネントは、あるアクティビティにどのリソースが必要かを理解するように設計されている。インテリジェントインタフェースコンポーネントは、リソースコンシューマからの呼出しを受け取って特定の構成を構築することのできるプロキシリソースコンシューマとして行動する。この場合、インテリジェントインタフェースコンポーネントは、構成を構築してリソースの予約を要求するために、リソースマネージャと対話する。
【0019】
一実施形態では、いわゆる「ステートレス」プロバイダを採用する。ステートレスプロバイダは、そのプロバイダが管理するリソースについてさえ、リソース割振りまたは所有権の情報を維持しないように設計されている。具体的には、かつ述べる実施形態では、ステートレスプロバイダは時間の概念、すなわち今要求されているのか将来要求されるのかについての概念を有さず、所与の要求があった時にどのリソースがどれだけ使用されているかについての概念しか有さない。別個のスケジューリングコンポーネントが、「もしも」シナリオを実行して、将来の選択された時にリソースが利用可能になるどうかを決定する。
【0020】
各図面を通して、同じ要素および機構を参照するのには同じ番号を使用する。
【0021】
(好ましい実施形態の簡単な説明)
本開示は、コンピュータシステム中のリソースを管理するためのリソース管理アーキテクチャについて述べるものである。リソースは、様々なタスクまたは機能を実施するために利用される、コンピュータシステム中の限りある量のコンピューティングコンポーネントである。リソースの例には、ハードウェアデバイス、ポート、CPU処理、メモリ、USB帯域幅、ネットワーク帯域幅、ソフトウェアモジュールなどが含まれる。リソースは、物理的ハードウェア量(例えばCPU、USB帯域幅、ネットワーク帯域幅)である場合もあり、抽象的な量(例えば仮想メモリ、オーディオ音量)である場合もある。
【0022】
より多くのタスクを同時にかつ複数ユーザに対して実施することがコンピュータシステムに求められるのに伴い、限られたリソースの管理はますます重要になっている。例えば、単一のTVチューナを有するTV対応コンピューティングシステム(例えばブロードキャストPC、セットトップボックスなど)を考えてみる。処理を行うためにTVチューナを使用することの必要なプロセスが複数ある場合がある。例えば、TVビューアアプリケーションは、モニタ上に表示するビデオストリームをTVチューナから提供してもらう必要がある。TVレコーダアプリケーションもまた、後で再生する目的でエンコードしてハードディスクに録画するビデオストリームをTVチューナから提供してもらう必要がある。残念ながら、TVチューナは一度に1つのTVチャネルにしか合わせることができない。システム中にTVチューナが1つしかない場合、システムは、ショーの視聴とショーの録画との両方を同時に行うことができないので(両方のアプリケーションが同じTVチャネルに合わせたいのでない限り)、これらの間で選択を迫られる。
【0023】
別の状況では、おそらく複数のアプリケーションがユニバーサルシリアルバス(USB)上の帯域幅を同時に必要とする。あるアプリケーションは、存在するUSB帯域幅の20%を消費する帯域幅要件を指定し、別のアプリケーションは15%を消費する帯域幅を指定することがある。さらに、すべての要件が満たされるとすると、合わせた帯域幅が、利用可能なUSB帯域幅を超過することになると仮定する。このシナリオでは、1つ以上のアプリケーションは、USBリソースへのアクセスを得ることができない恐れがあり、かつ/または要求した量よりも少ない量が割り振られる恐れがある。
【0024】
本明細書で説明するリソース管理アーキテクチャの様々な実施形態は、特徴の中でもとりわけ、以下のような特性を有する。
【0025】
・相対的な優先度に基づいて(最終的にはエンドユーザ定義のポリシーによって設定されたように)リソースを割り振る。
・リソースの割振りおよび割振り解除を動的に行う。
・優先度のより高いリソースコンシューマに再割当てすることを優先して、優先度のより低いコンシューマにリソースの返還を要求することができるようにする。
・追加のリソースが利用可能になったときにコンシューマに自動通知を提供する。
・リソースを動的に追加(登録)および除去(登録解除)できるようにする。
・リソース競合を詳細に報告するための機構を提供する。
・複数のリソースを自動的に獲得できるようにする。
・アクティビティの優先度を動的に変更できるようにする。
・リソース構成のランク付けを動的に変更できるようにする。
・リソースが公開されるように任意の第三者がリソースを登録することのできるフレームワークを提供する。
・コンシューマとリソースの任意の対がそれらに固有のプロパティを交渉することのできるリソース不可知フレームワークを提供する。
・リソース使用に実際に必要になる前にリソース割振りを行うことができるようにする(リソーススケジューリング)。
・コンシューマが最初にリソースを予約せずにリソースを使用することができないようにする機構を提供する。
・コンシューマがある範囲の構成を指定し、それらを最も望ましいものから最も望ましくないものまでランク付けすることができるようにする。
・プロセスがリソースを保持しながら異常終了したときにリソースを自動的に解放し、それによってリソースリークを防止するための機構を提供する。
・レガシーアプリケーションがリソース管理アーキテクチャと共存できるようにする。
【0026】
このリソース管理アーキテクチャは、多くの様々な環境およびコンピューティングコンテキストで実現することができる。考察のために、このアーキテクチャは、ブロードキャスト対応パーソナルコンピュータ、セットトップボックス(STB)、ゲームコンソールなどの形をとる場合のある、消費者娯楽環境向けのコンピューティングシステムのコンテキストで述べる。リソースマネージャアーキテクチャを実現するのに適したシステムの1つについて述べた後、「一般的なリソース管理アーキテクチャ」の項目で、図2を参照しながらこのアーキテクチャについてより詳細に探求する。
【0027】
(例示的なシステム)
図1に、コンピューティングユニット22と、コンピューティングユニット22と接続するか他の方法でインタフェースする複数の周辺コンポーネントとを有する娯楽コンピューティングシステム20を示す。コンピューティングユニット22は、1つ以上のプロセッサ24(1)、24(2)、...、24(P)、揮発性メモリ26(例えばRAM)、および不揮発性メモリ28(例えばROM、フラッシュ、ハードディスク、CD ROMなど)を有する。
【0028】
不揮発性メモリ28には、オペレーティングシステム30が記憶されている。オペレーティングシステム30はマルチタスキングオペレーティングシステムであり、揮発性メモリ26にロードされて1つ以上のプロセッサ24上で実行されるとき、複数のアプリケーション32(1)、32(2)、...、32(A)の同時実行をサポートする。好ましいオペレーティングシステムの1つは、本出願人から発売されているWindows(登録商標)ブランドのオペレーティングシステムである。ただし、他のオペレーティングシステムを採用してもよいことに留意されたい。
【0029】
アプリケーション32(1)-32(A)は、娯楽コンピューティングシステム20上で実行することのできる多くの様々なタイプのアプリケーションプログラムを表す。例として、EPG(電子番組ガイド)プログラム、ブラウザ、チャネルナビゲーション、オーディオビデオプレーヤ、オーディオ/ビデオ記録プログラム、ステレオプログラム、ゲーム、オーディオ/ビデオ遠隔会議などが含まれる。図では、ソフトウェアデコーダ34(例えばMPEGソフトウェアデコーダ)およびその他のソフトウェアリソース36も不揮発性メモリ28に記憶されている。
【0030】
オペレーティングシステム30は、アプリケーション32(1)-32(A)に割り振るために娯楽コンピューティングシステム20のリソースを管理するリソース管理システム40を有する。リソース管理システム40は、オペレーティングシステム30とは別に実装することもできるが、オペレーティングシステム内に統合されたものとして示す。リソース管理システム40については、後で図2を参照しながらより詳細に述べる。
【0031】
オペレーティングシステム30はまた、コンピューティングシステム20中の関連する様々な周辺コンポーネントのための複数のソフトウェアドライバ42(1)、...、42(D)も有する。1つ以上のCOM(通信)ポート44もまた、オペレーティングシステム30の一部として示されている。コンピューティングユニット22を囲んで、周辺コンポーネントの代表的な集合が示されている。娯楽コンピューティングシステム20は、テレビジョン番組などのブロードキャストデータを受信するための1つ以上の受信機50を有する。受信機50は、アナログテレビジョン受信機、ディジタルテレビジョン受信機(例えば衛星放送受信アンテナやケーブルモデム)、RF受信機などとすることができる。受信機50は、データを搬送する搬送波信号の周波数に同調する1つ以上のチューナ52(1)-52(T)に結合される。
【0032】
コンピューティングユニット22には、USBバス54が接続されて、多くの様々な種類のUSB適合周辺コンポーネントをインタフェースする。このようなコンポーネントの例には、モデム56、スピーカ58、スチルカメラまたはビデオカメラ60、およびその他のUSBデバイス62が含まれる。
【0033】
コンピューティングユニット22には、1つ以上のハードウェアデコーダ64(1)、64(2)、...、64(H)が結合されて、様々なタイプのデータストリームをデコードする。例示的なデコーダには、MPEG-1、MPEG-2、MPEG-4、H.261、H.263などの規格を用いるビデオデコーダや、オーディオデコーダが含まれる。
【0034】
コンピューティングユニット22は、ネットワーク66に結合されて、他のコンピュータとインタフェースする。ネットワーク66は、LAN、WAN、インターネット、イントラネット、無線ネットワークを含めた、多くの様々なタイプのネットワークを表す。リソース管理システム40によって管理されるリソースの1つは、所与の時にネットワーク66から提供される帯域幅である。
【0035】
コンピューティングユニット22には、1394シリアルバス68が接続されて、多くの様々な種類の1394適合周辺コンポーネントをインタフェースする。このようなコンポーネントの例には、メモリドライブ70(例えばディスクドライブ、テープドライブ、CD ROMドライブなど)、モデム72、スピーカ74、CPU(中央処理装置)76、およびその他の1394デバイス78が含まれる。この例示的なシステム中にはUSBバスおよび1394バスを示すが、SCSI、ISA(Industry Standard Architecture)、PCI(Peripheral Component Interconnect)バスなど、他のバスアーキテクチャを追加でまたは代替で使用することもできることに留意されたい。
【0036】
娯楽コンピューティングシステム20は、表示装置80を有するが、これはテレビジョンセットまたはコンピュータモニタとすることができる。表示装置は、1つ以上の表示インタフェース82(1)、82(2)、...、82(C)を介してコンピューティングユニット22とインタフェースされる。これらの表示インタフェースは、ビデオポート、オーバーレイ、およびビデオメモリを表す。
【0037】
コンピューティングデバイス22に結合されるその他の例示的な周辺デバイスには、DVDプレーヤ84、EPGデータベース86、およびビデオレコーダ88が含まれる。EPGデータベース86は、EPGユーザインタフェース(UI)のタイルを埋める番組情報を保持する。番組情報は、番組タイトル、開始時間、継続時間、男優/女優、要約記述などの項目を含む。EPG情報は、通常の手段を介して(例えばケーブルモデムを介して、または垂直帰線消去期間内に埋め込まれて)受信され、EPGデータベース86に記憶される。コンピューティングユニット22は、EPGデータベースに対して照会を実行して、ショーまたはその他の番組コンテンツを突き止め、この情報をグラフィカルUI中でユーザに提示する。
【0038】
ビデオレコーダ88は、ビデオカセットレコーダやディスクベースのレコーダなどの形とすることができる。コンピューティングユニット22は、チューナ52またはネットワーク66を介して受信された様々な番組を録画するようにビデオレコーダ88に指示することができる。
【0039】
さらに、娯楽に焦点を合わせた前述のコンポーネントに加えて、コンピューティングシステム20は、コンピュータになじみの深い通常のデスクトップアプリケーションを実施できる完全に機能するコンピュータとして構成することができることにも留意されたい。システム上では、ワードプロセッシングアプリケーション、表計算アプリケーション、データベースアプリケーション、スケジューリングアプリケーション、財務アプリケーション、教育アプリケーションなど、様々なアプリケーションをロードして実行することができる。
【0040】
図1に示すコンポーネントの集合は、リソース管理システム40によって管理される例示的なリソースのタイプを示している。これらの中には、ポート、チューナ、デコーダ、USBバス上のUSB帯域幅およびUSBデバイス、ネットワーク帯域幅、1394デバイス、表示インタフェース、レコーダ、メモリドライブなどがある。その他の多くのコンポーネントをシステムに追加することもでき、図示のコンポーネントの1つ以上を除去することもできる。
【0041】
(一般的なリソース管理アーキテクチャ)
図2に、図1の娯楽コンピューティングシステム20によって実現される例示的なリソース管理アーキテクチャ100を示す。アーキテクチャ100はソフトウェア中で実現され、この例では、ユーザレベルのコンポーネントならびにカーネルレベルのコンポーネントを含む。
【0042】
アーキテクチャ100は、リソースマネージャ102および複数のプロバイダ104(1)、104(2)、104(3)、...、104(P)を有し、プロバイダは1つ以上のリソースコンシューマをサポートする。リソースコンシューマの例には、アプリケーション32(1)、32(2)、...、32(A)などユーザレベルのリソースコンシューマと、リソースコンシューマ35などカーネルレベルのリソースコンシューマが含まれる。各プロバイダ104(1)-104(P)は、1つのリソースに関連し、リソースの可用性を追跡している。前述のようにリソースは、様々なタスクまたは機能を実施するのに利用される、コンピュータシステム中の限りある量のコンピューティングコンポーネントである。したがって、リソースプロバイダの例には、ハードウェアデバイスを所有するドライバ(例えばTVチューナのためのドライバ、バス上の帯域幅を所有するUSBドライバ、CPUタイムリソースのためのCPUスケジューラなど)、ハードウェアコンポーネント(例えばデコーダ)、およびソフトウェアモジュール(例えばソフトウェアデコーダ)が含まれる。さらに、単一のドライバが複数のリソースを提供する場合があることにも留意されたい。この場合、リソースマネージャ102はこのドライバを複数のプロバイダと見なす。リソースプロバイダをカーネルレベルに示すが、1つ以上のリソースプロバイダをユーザレベルに実装することもできる。
【0043】
各プロバイダ104は、リソースマネージャ102による割振りに利用可能なリソースの量を決定するリソース定量化部(resource quantifier)106を有する。リソース定量化部106は、所与のリソースの量がどのように測定されるかに応じて、種々の方式で可用性を計算するように構成される。ある方式は、有限のカウントを維持するものである。例えば、同調リソースのプロバイダに対するリソース定量化部106は、いくつのチューナが使用可能状態かを識別するカウンタとして実装することができる。
【0044】
リソース可用性を計算するための別の方式は、パーセンテージとして計算するものである。ネットワークリソースのプロバイダに対するリソース定量化部106は、現在利用可能な帯域幅のパーセンテージを計算するように実装することができる。時間ベースのメトリックを使用してリソース可用性を計算することもできる。このメトリックの例は、CPUが現在どれだけの処理時間を提供できるかを識別する、CPUに対するリソース定量化部である。所与のリソースの可用性を計算するための他の方式を用いることも、当然可能である。
【0045】
各リソースプロバイダ104はリソースマネージャ102に登録し、リソースマネージャ102が情報を得るのに使用するコールバックのセットを供給する。例えば、あるコールバックはリソース計算を実施するのに使用され、別のコールバックは予約の成功をプロバイダに通知するのに使用される。
【0046】
リソースマネージャ102は、リソースプロバイダ104から提供されるリソース(ローカルまたはリモート)へのアクセスを調停する。アプリケーション32などのリソースコンシューマは、プロバイダ104から提供される1つ以上のリソースのセットを要求し、リソースマネージャ102は、どのアプリケーションがプロバイダのどのリソースを使用することになるかを決定する。リソースマネージャ102は、所定の競合解決機構に基づいてリソース割振り決定を行う。一実装形態では、競合解決機構は優先度ベースであり、したがってリソースマネージャ102は、優先度に基づいてリソースへのアクセスを調停する。別の実装形態では、競合解決機構は、所与の時に続行できるアクティビティの数を最大限にするように試みる負荷平衡に基づくものとすることができる。
【0047】
別個かつ独立のポリシーマネージャ108を任意選択で実装して、リソースマネージャによって使用される競合解決機構に関するポリシーを設定することができる。例えば、リソースマネージャが優先度ベースの解決を採用している場合、ポリシーマネージャ108は、すべてのタスクにそれらのリソースを割り振ることができないような競合があるときに、どのタスクがリソースへのアクセスを得るべきかをリソースマネージャが決定できるように、ユーザまたはシステムによって与えられる相対的な重要度に従ってタスクをプリオリ(priori)にランク付けする。その他の実行可能なポリシーには、先着予約順、一番最近の予約順、リソースの「公平」共用、どれがどれに勝つかをユーザが選ぶポリシーなどが含まれる。多くの様々なポリシーが可能である。
【0048】
システムまたはユーザがポリシー110を設定し、ポリシーマネージャ108がこれらを絶対的な優先度に変換する。リソースマネージャ108は、ユーザレベルとカーネルレベルの両方のコンポーネントによって実装することができる。
【0049】
概して言えば、リソースコンシューマは、タスクを実施するためにリソースを必要とする任意のエンティティである。前述のように、アプリケーション32はリソースコンシューマの一例である。別の例として、リソースプロバイダ自体が他のリソースのコンシューマである場合もある。考察のために、アプリケーションを1次コンシューマとし、したがってこの記述では、アプリケーション32がリソースを要求および消費するものとして参照する。ただし、他のタイプのコンシューマを利用することもできるので、このことはこのアーキテクチャを限定するものと考えるべきではない。
【0050】
リソースマネージャ102は、アーキテクチャ中の他のモジュールと対話するために、定義済みのAPI(アプリケーションプログラムインタフェース)120を公開する。API120は、プロバイダ104によって使用されるプロバイダAPI呼出しのセットと、アプリケーション32(1)-32(A)または他のリソースコンシューマからのリソース要求を受け入れるためのコンシューマAPI呼出しのセットとを含む。後の「リソースマネージャAPI」の項目で、APIの1つについて詳細に述べる。
【0051】
アプリケーション32がタスクを実施したいとき、アプリケーション32は、API120を使用してリソースマネージャ102にアクティビティ122を生み出し、このアクティビティを実施するのに必要な様々なリソースセットを記述する1つ以上の構成124を構築する。アクティビティは、システム中で実施されるタスクに関連するデータ構造である。実施されるタスク1つにつき1つのアクティビティが存在する。図2では、リソースマネージャ102にアクティビティ122(1)、...、122(N)が示されている。リソースマネージャ102は、限られたリソースのプールからどのアクティビティを完全に満たすことができるかを決定し、満たすことのできるアクティビティを有するアプリケーションが要求のリソースにアクセスできるようにする。
【0052】
構成は、システム中でタスクを実施するのに必要な対応するリソースに関する1つ以上のリソース記述子126の集合を保持するデータ構造である。アクティビティデータ構造は、1つ以上の構成を保持するコンテナである。図2では、第1のアクティビティ122(1)内に2つの構成124(1)および124(2)が示されている。第1の構成124(1)は、タスクを実施するのに必要なリソースを制御する対応するリソースプロバイダを識別するとともにこれらの必要なリソースの量を指定するための、4つの記述子R1、R2、R3、R4を含む。第2の構成124(2)は、タスクを実施するのに必要なリソースを制御する対応するリソースプロバイダを識別するとともにこれらの必要なリソースの量を指定するための、3つの記述子R2、R4、R5を含む。アクティビティ122(1)は、構成124のいずれか一方を使用して、そのタスクを首尾よく完了することができる。
【0053】
各リソース記述子126は、リソースコンシューマがタスクを実施するのに必要とするリソースのインスタンスを表す。リソース記述子は次の情報を含む。すなわち、(1)リソースを所有するリソースプロバイダ104の識別を保持するための識別フィールド128、(2)その構成に必要なリソースの量を保持するためのオプションの量フィールド130、および(3)1つ以上のリソース属性をリストするための属性フィールド132である。フィールド130に保持される量は、リソースマネージャには不明瞭であり、プロバイダおよびコンシューマだけに理解されればよい値である。同様に、属性も、プロバイダおよびコンシューマだけは理解するがリソースマネージャには不明瞭な、他のデータである。例えばチューナのコンテキストでは、リソース属性は、リソースコンシューマが欲するチューナ周波数とすることができる。
【0054】
アクティビティ122(1)に対する2つの構成124(1)および124(2)で示すように、各アプリケーションは、各アクティビティにつき1つ以上の構成を指定する場合がある。構成は、アクティビティにリソースが予約されているかどうかに関わらず、いつでもアクティビティに追加することができる。複数の構成を指定する場合、アプリケーションは、好ましさまたは望ましさのレベルに従ってこれらをランク付けし、リソースマネージャ102は、最も望ましい構成を満たそうと試みる。ここで、第1の構成124(1)は、「H」で示すように、より好ましいか、望ましさがより高いものとして識別されている。第2の構成124(2)は、「L」で示すように、より好ましくないか、望ましさがより低いものとして識別されている。
【0055】
複数の構成があることにより、リソースマネージャ102は、動作条件の変化に伴い、アプリケーションについてある構成から別の構成にフレキシブルかつ動的に変更することができる。例えば、リソースが優先度のより高いアプリケーションによってどこかで必要とされている場合、現在のアプリケーションに、より好ましくないまたは「フォールバック」構成を使用するように求めることができ、それにより、必要とされるリソースを優先度のより高いアプリケーションに再割振りすることができる。後でこれらのリソースが再び利用可能になったときは、リソースマネージャ102はアプリケーションに通知することができ、したがってアプリケーションは、好ましい構成にアップグレードするように要求することができる。動的にフォールバック構成に変更し、より優先的な構成にアップグレードすることについては、後で「フォールバック構成」および「アップグレード通知」の項目でより詳細に述べる。
【0056】
リソース記述子126は、ツリーに編成して、リソース間に内在する任意の依存を表すことができる。すなわち、リソースプロバイダもまた、他のプロバイダからのリソースを消費する。例えばUSBカメラドライバは、カメラリソースのプロバイダであり、USBバスドライバから提供される帯域幅のコンシューマである。このような関係を、リソース記述子のツリーとして表す。
【0057】
ツリーの比喩では、構成124を記述子ツリーのルートと考えることができる。図2では、ツリーに編成された4つのリソース記述子126が第1の構成124(1)中にある。ツリーは、並んだ2つの兄弟ノードR2およびR4を含み、対応するリソースプロバイダから提供されるリソースが両方とも要求のタスクの実施に必要であることを表す。記述子R4から子ノードR3が分岐し、R4で参照されるプロバイダが記述子R3で参照されるリソースのコンシューマであることを示す。同様に、記述子R3からノードR1が分岐し、R3で参照されるプロバイダが記述子R1で参照されるリソースのコンシューマであることを示す。
【0058】
(一般的な動作)
図3に、述べた実施形態によるリソース管理アーキテクチャ100の一般的な動作を示す。このプロセスはソフトウェア中で実施されるものであり、このプロセスについて図2をさらに参照しながら述べる。
【0059】
ステップ300で、各リソースプロバイダ104(1)-104(P)は、それが管理するリソースをリソースマネージャ102に登録する。登録(および登録解除)はいつでも行うことができる。各リソースプロバイダ104は、リソースマネージャAPI120中の関数呼出し「RmRegisterResource」を使用して、そのリソースをリソースマネージャ102に登録する。各リソースには、リソースのタイプを識別するためのタイプ特有GUID(Globally Unique IDentifier)が関連し、このGUIDが関数呼出しの一部として渡される。単一のプロバイダ104が複数のタイプを登録することができる。同様に、複数のプロバイダが同じリソースタイプに登録することもできる。
【0060】
登録プロセスの一部として、リソースプロバイダ104は、リソースマネージャ102がコンシューマのためにリソースを予約および解放するのに使用することになるコールバックのセットを指定する。RmRegisterResourceプロセスは、リソースマネージャへの他の呼出しで使用されることになるハンドルを返す。
【0061】
アーキテクチャ100によれば、コンシューマは、リソースを予約および解放するためだけにリソースマネージャ102を経由する。他の場合は、コンシューマはリソースプロバイダ104に直接アクセスして、適切なリソース記述子を構成に追加し、リソースが予約されればそれらのリソースを使用する。これについては後でより詳細に述べる。
【0062】
ステップ302で、リソースコンシューマは、1つ以上の関連するタスクを実施するために1つ以上のアクティビティを生み出す。例として、アプリケーション32(1)がアクティビティ122(1)をリソースマネージャ102中に生み出すものとする。アプリケーション32(1)は、関数呼出し「RmCreateActivity」を使用してアクティビティをリソースマネージャ102に登録する。このプロセスは、アクティビティ122(1)を形成するコンテナデータ構造を生み出し、アクティビティ122(1)についてのアクティビティハンドルを生成する。
【0063】
ステップ304で、リソースコンシューマは、各アクティビティ内に1つ以上の構成を構築する。複数の構成を指定する場合、リソースコンシューマは、アクティビティ内の各構成を、このアクティビティの範囲内で望ましさからみてランク付けする。図2の例では、アプリケーション32(1)は、関数呼出し「RmCreateConfiguration」を使用して、第1のアクティビティ122(1)内に少なくとも2つの構成124(1)および124(2)を構築する。このプロセスは、構成構造124(1)および124(2)へのハンドルを生成する。
【0064】
構成124を生み出すと、リソースコンシューマは、関連するプロバイダを介してリソース記述子を構成に加えることを開始する(図3のステップ306)。例えば図2では、アプリケーション32(1)は、対応するリソースプロバイダ104を使用してR2やR4などの記述子を第1の構成124(1)に加えることを開始する。プロバイダ104は、リソースマネージャAPIからの関数呼出し「RmAddResourceToConfiguration」を利用して、記述子を構成に加える。記述子126を加えるとき、それらに対応するリソースプロバイダ104は、他のプロバイダ(通常はスタック中のより低いプロバイダ)を呼び出して、従属するリソース記述子を加えることができる。ここでは、記述子R4で識別されるリソースプロバイダが、記述子R3で識別されるリソースプロバイダを呼び出し、この記述子R3で識別されるリソースプロバイダは、記述子R1で識別されるリソースプロバイダを呼び出す。
【0065】
ステップ308で、コンシューマはリソースマネージャと接触して、アクティビティのためのリソースを予約する。リソースマネージャは、リソースプロバイダと接触し、リソースが利用可能ならコンシューマのためにリソースを予約する。リソースマネージャは、記述子構成ツリー内で識別されるあらゆるリソースを予約することを試みる。リソースが利用可能でない場合、リソースマネージャはアクティビティ間で調停し、どのコンシューマにリソースへのアクセスを与えるかについての競合を解決する。コンシューマは、割り振られた量のリソースを、自発的に放棄するまで、またはリソースマネージャによってプリエンプトされるまで利用することができる。
【0066】
予約および調停ステップ308の一実装形態を、サブステップ320-330に示す。ステップ320で、コンシューマが、アクティビティ122内のどの構成124を予約するかを指定する。構成を指定しない場合、リソースマネージャ102は、望ましい順に構成の予約を試みる。引き続き用いる例では、アプリケーション32(1)は、関数呼出し「RmReserveResources」を使用して、好ましい構成124(1)内で指定されるリソースを予約するようにリソースマネージャ102に指示する。この構成124(1)は、記述子R1、R2、R3、R4で識別されるプロバイダからのリソースを必要とする。
【0067】
ステップ322で、リソースマネージャ102は、構成内の各リソース記述子126につき、対応するリソースプロバイダ104を識別し、システム中で現在そのリソースプロバイダからのリソースを使用しているアクティビティ122すべてのリストを作成する。予約することになるアクティビティ122(1)も、このリストに加える。リソースマネージャ102は、プロバイダから供給された「リソース割振り」関数を使用して、リストしたアクティビティ内のすべての記述子にリソースを割り当てる(ステップ324)。優先度ベースの手法では、リスト中のアクティビティには優先度が関連し、リソースマネージャ102は、リソースを割り当てる際、優先度の最も高いアクティビティから始める。リソースマネージャ102は、終わりに達するまで、またはプロバイダのリソースが尽きるまで、アクティビティのリストの中を反復する。例示的なリソース計算についてのより詳細な記述を、次のセクションの「例示的なリソース予約計算」という項目で提供する。
【0068】
構成内のリソース記述子がすべて予約されているとき、この構成は予約されているという。リソース記述子にリソースが割り当てられているとき、このリソース記述子は予約されているという。ステップ322および324は、構成内のあらゆるリソース/リソースプロバイダに対して繰り返す(ステップ326)。
【0069】
ステップ328で、リソースマネージャ102は、すべての要求されたリソースが利用可能であるという点で各予約が成功したかどうかを決定する。予約が成功した場合は、リソースマネージャ102は、リソースプロバイダ104がコンシューマのリソース使用要求を妥当性検査することができるように、予約をリソースプロバイダ104に通知する(ステップ330)。このようにすることで、プロバイダ104は、最初に予約せずにリソースを使用しようとする不正なコンシューマならびに正当なコンシューマを捕えることができる。例えば、正当なプログラムが、CPUリソースを最初に予約せずに使用しようとする場合がある。同様に、USBマウスが、USB帯域幅を最初に予約していないのに使用しようとする。このような状況で、CPUおよびUSP帯域幅に関連するプロバイダは、プログラムまたはUSBマウスがまだリソースを予約していないと識別することができる。
【0070】
予約が失敗した場合(要求されたリソースのすべてが利用可能ではないことを意味する)、リソースマネージャ102は、予約失敗をリソースプロバイダ104に通知する(ステップ332)。次いでリソースマネージャ102は、次のタスクの一方または両方を実施する。すなわち、(1)より好ましくない構成が利用可能であって、予約すべき構成をコンシューマが指定していなかった場合は、より好ましくない構成を試みる(ステップ334)、かつ/または(2)要求元のコンシューマにエラーを報告する。
【0071】
(例示的なリソース予約計算)
図4に、図3の予約および調停ステップ308(より具体的にはステップ322-326)の一部として採用される例示的なリソース予約プロセスを示す。図3のステップ308で、リソースマネージャ102は、アプリケーション32などのコンシューマのためにリソースを予約する。図4には、3つのアクティビティA1、A2、A3が示してあり、これらを番号400(1)、400(2)、400(3)で一般的に参照する。これらのアクティビティは、リソースマネージャ102で構築され、リソースマネージャ102にある。各アクティビティには優先度が関連し、したがって、第1のアクティビティA1は最高優先度を有し、第2のアクティビティA2は中間優先度を有し、第3のアクティビティA3は最低優先度を有する(すなわちA1>A2>A3)。
【0072】
アクティビティの「優先度」は、ユーザまたはシステムの好ましさを示す。これは、従来のスレッド優先度またはプロセス優先度の意味で用いるものではない。具体的には、アクティビティ優先度は、同じリソースを求めて争うコンシューマ間の調停ポリシーを規定するものである。述べた実装形態では、ポリシーマネージャ108が各アクティビティに優先度を割り当てる。優先度は、個々のリソースとは対照的に、アクティビティに割り当てることに留意されたい。このようにすることで、リソースマネージャは、優先度のより低いアクティビティにリソースの返還を要求して、優先度のより高いアクティビティの予約要求を満たすことができる。
【0073】
この例では、各アクティビティ400(1)-400(3)は、ただ1つの構成402(1)-402(3)を有する。記述子R1およびR2は、リソースマネージャに登録している対応するリソースプロバイダを表す。アクティビティA1およびA2は両方とも記述子R1およびR2を有するが、アクティビティA3は記述子R1しか有さない。この例で、最高優先度のアクティビティおよび最低優先度のアクティビティA1およびA3が予約されており、リソースマネージャが、中間優先度のアクティビティA2を予約する要求を受けると仮定する。リソースマネージャは、以下の5つのステップを実施してA2を予約する。
【0074】
ステップ 1:リソースマネージャは、その内部状態を調べ、予約されているすべてのアクティビティのアクティビティリストを作成する(すなわち図3のステップ322)。この時点では、リストは予約済みのアクティビティA1およびA3を含む。次いでリソースマネージャは、アクティビティA2をリストに加え、得られたリストを優先度の高い順にソートする。この結果、最高優先度のアクティビティA1、次いで中間優先度のアクティビティA2、次いで最低優先度のアクティビティA3を順に含むアクティビティリストが得られる。
【0075】
図5に、3つのアクティビティを優先度の順に表すアクティビティリスト500を示す。アクティビティリスト500はリソースマネージャによって維持される。
【0076】
ステップ 2:アクティビティA2内の各リソース記述子につき、リソースマネージャは、要求を満たすのに十分なリソースがあり、したがってリソースマネージャがそのリソース記述子をこのアクティビティのために予約することが可能であるかどうかを決定する。これはまず、アクティビティリスト500中のすべてのアクティビティにおける、予約すべきリソース記述子で参照されるプロバイダと同じプロバイダを使用するリソース記述子のリストを作成することによって行う。例えば、A2-R1(すなわちアプリケーションA2内の記述子R1)を予約するために、リソースマネージャは、アクティビティリスト500中にリストされているアクティビティ内のすべてのリソース記述子R1に関する別個のリソース記述子リストを構築する。このリストもまた、優先度の高い順である。
【0077】
図5に、2つの記述子リスト502(1)および502(2)を示す。第1のリスト502(1)は、アクティビティリスト500中にリストされているアクティビティA1-A3内のすべてのリソース記述子R1を、優先度の高い順に含む。したがって、A1-R1-1、A1-R1-2(すなわちアクティビティA1内におけるプロバイダR1の第2の使用)、A2-R1、A3-R1の順である。第2のリスト502(2)は、アクティビティリスト500中にリストされているアクティビティA1-A3内のすべてのリソース記述子R2を、優先度の高い順に含む。したがって、A1-R2、A2-R2-1、A2-R2-2の順である。記述子リスト502は、リソースマネージャによって維持される。
【0078】
ステップ 3:記述子リスト502が完成した後、リソースマネージャは、様々なアクティビティに割り振られるリソースの量の継続的な増加を表す累積値506を保持するバッファ504を生み出す。リソースマネージャは、R1記述子リスト502(1)中の各要素につき、リソースプロバイダR1の「アキュムレータ追加」関数を呼び出し、リソース記述子(すなわちA1-R1-1、A1-R1-2など)、アキュムレータバッファ504、およびリソースプロバイダのリソース定量化部106(図2)を渡す。リソースマネージャは、R2記述子リスト502(2)中の各要素についても同様の呼出しを行う。
【0079】
アキュムレータ追加関数は、リソース記述子に必要なリソース量を決定し、それをアキュムレータバッファ504の内容に加える。バッファ504中の新しい値がリソースプロバイダR1におけるリソースの最大量を超える場合は、アキュムレータ追加関数はエラーを返し、プロバイダがリソース不足によりこの割振りを満たすことができないことを示す。リソースマネージャは、このようなリソース記述子に関連するアクティビティを「犠牲者」としてタグ付けする。例えば、リソース記述子A3-R1に対する計算が失敗した場合、アクティビティA3は犠牲者としてタグ付けされる。予約されるアクティビティA2が犠牲者としてマークされた場合は、リソースマネージャは図3のステップ332に出て、アクティビティA2内の構成を予約することが不可能であることを通知する。
【0080】
ステップ 4:リソースマネージャは、ステップ2で構築したリソース記述子リスト中のすべてのリソース記述子を処理した後、犠牲者アクティビティがあるかどうか評価する。犠牲者アクティビティがない場合、リソースマネージャはアクティビティA2の予約を成功させることができた。A2内のすべてのリソース記述子のプロバイダに、新しい予約が通知される。これによりプロバイダは、コンシューマのリソースアクセス要求を妥当性検査することができ、また逆に、予約なしでリソースを使用しようとする不正コンシューマを捕えることができる。
【0081】
ステップ 5:一方、ステップ3の最後で犠牲者アクティビティがある場合は、リソースマネージャは、リソースを解放するようにこれらのアクティビティに通知する。リソースが解放されると、リソースマネージャは、元々要求を出したアクティビティ(この場合はA2)にこれらのリソースを割り当てる。例えば、ステップ3でアクティビティA3が犠牲者としてタグ付けされたとする。リソースマネージャは、アクティビティA3にそのリソースを解放するように通知し、それらを要求元のアクティビティA2に再割振りする。これは、アクティビティA2がアクティビティA3よりも高い優先度を有し、したがって限られたリソースを優先度のより低いアクティビティA3からより高いアクティビティA2に移すべきなので、理にかなっている。
【0082】
(優先度ベースのプリエンプトを用いたリソース割振り)
図2に示すリソース管理アーキテクチャ100は、種々のタイプの戦略を採用して、リソースコンシューマから要求される様々なアクティビティ間でリソースを割り振ることができる。例えばある戦略は、できるだけ多くのアクティビティ間でリソースを最適化するものである。別の戦略は、何らかの優先度基準に従ってリソースを割り振るものである。この後者の戦略が、このセクションにおける関心の対象である。
【0083】
優先度ベースの戦略では、どのアプリケーションおよび/またはユーザが他を制してリソース使用の優先度を有するかに基づいてリソースを割り振る。繰り返すが、用語「優先度」は、従来のスレッド優先度やプロセス優先度の意味では用いず、同じリソースを求めて争うコンシューマ間の調停ポリシーのコンテキストで用いる。優先度は、個々のリソースとは対照的に、アクティビティに割り当てる。
【0084】
優先度ベースの戦略では、アクティビティを重要度によってランク付けすることができる。例えば、ユーザにとってより「重要な」アクティビティを、より高い優先度に指定することができる。これによってリソース管理アーキテクチャは、所望の、ただし限られたリソースを、より重要でないアクティビティから取り去ってより重要なアクティビティに移行することができる。何が「より重要な」ものおよび「より重要でない」ものを構成するかを決定することが、ポリシーマネージャ108およびポリシー110の場であり、これについては後で「ポリシーマネージャ」の項目でより詳細に述べる。しかし、プリエンプトに関するここでの考察では、他のアクティビティに対する相対的な重要度など、何らかの方式でアクティビティをランク付けする何らかの優先度等級があるものとする。例として、ポリシーマネージャ108がない場合、アクティビティ優先度は先着順で割り当てることができる。
【0085】
優先度ベースのプリエンプトにより、リソースマネージャは効果的に、リソースを現在使用している優先度のより低いアクティビティを「プリエンプト」し、優先度のより高いアクティビティにリソースを動的に移動する。リソースマネージャは、優先度のより低いアクティビティに、そのリソース使用権が一時停止されることを通知する。これにより、この優先度のより低いアクティビティには、制御されたクリーンな方式でリソースの使用を停止する機会が与えられるか、または、これに反応して、場合によっては代替方式でその処理を完了するチャンスが与えられる。
【0086】
リソースマネージャは、リソースの返還を要求する対象のアプリケーションと連携して、プリエンプトプロセスを達成する。図2に示すように、リソースマネージャ102は、優先度が割り当てられた1つ以上のアクティビティ構造122をシステム内で維持する。各アクティビティは1つ以上の構成構造124を有し、構成構造124は、アクティビティがそのタスクを達成するのに必要なリソースのセットを指定する。リソースマネージャ102はまた、どのアクティビティにその構成のためのリソースが与えられているかを追跡し、各リソースプロバイダ104との必要な通信と、各リソースプロバイダに関する必要な状態とを維持して、各リソースプロバイダの提供するリソースが現在どれだけ利用可能かを追跡する。
【0087】
図6に、優先度ベースのプリエンプトを用いたリソース割振りプロセスを示す。各ステップは、リソースマネージャおよびリソースプロバイダによって(図示のように)、ソフトウェア中で実施されるものであり、これらのステップについて図2をさらに参照しながら述べる。
【0088】
ステップ600で、リソースマネージャ102は、あるタスクを実施するためのアクティビティ122を生み出すことを求める要求をコンシューマ(例えばアプリケーション)から受け取る。アクティビティの一部として、1つ以上の構成124が指定される。次いで、コンシューマは構成を予約する。リソースマネージャ102は、構成124内で識別される登録済みの各リソースプロバイダ104に、そのリソースをアクティビティ122に割り振ることができるかどうか尋ねる(ステップ602)。
【0089】
新しい構成を満たすのに十分なリソースをプロバイダ104が有する場合、リソースマネージャは、リソースをアクティビティに割り振る(すなわちステップ604からの「yes」ブランチおよびステップ606)。そうではなく、いずれかのプロバイダ104に構成を満たすのに十分なリソースが残っていない場合は、このプロバイダ104は、リソースの不足をリソースマネージャ102に通知する(すなわちステップ604からの「no」ブランチおよびステップ608)。
【0090】
リソースマネージャ102は、リソースを現在要求しているアクティビティよりも優先度の低いすべてのアクティビティ122のすべての構成124をチェックして、優先度のより低いアクティビティのいずれかが、優先度のより高い新しいアクティビティに割り振ればその構成を満たすことになるリソースを現在使用しているかどうかを決定する(ステップ610)。このような優先度のより低いアクティビティまたはその組合せが存在しない場合は(すなわちステップ612からの「no」ブランチ)、リソースマネージャ102は、優先度のより高いアクティビティに、そのリソース構成を現在満たすことができないことを通知する(ステップ614)。
【0091】
一方、リソースを取り去ることのできる優先度のより低いアクティビティが存在する場合は(すなわちステップ612からの「yes」ブランチ)、リソースマネージャ102は、この優先度のより低いアクティビティ内で現在予約されているリソースを含めて、優先度のより高い新しいアクティビティ内のリソースすべてを予約できるかどうかを決定する(ステップ616)。予約できない場合は(すなわちステップ616からの「no」ブランチ)、リソースマネージャ102は、優先度のより高いアクティビティに、そのリソース構成を現在満たすことができないことを通知する(ステップ614)。反対に、リソースを予約できる場合は、リソースマネージャ102は、優先度のより低い各アクティビティに、そのリソースを放棄するように知らせるプリエンプト通知を送る(ステップ618)。この場合、優先度のより低いアクティビティには、制御された方式でそのリソース予約を減らして、優先度のより高いアクティビティに再割振りされるようにリソースを解放する機会が与えられるか、または、これに反応して、場合によっては代替方式でその処理を完了するチャンスが与えられる(ステップ620)。優先度のより低いすべてのアクティビティが現在使用しているリソースをすべて解放したとき、リソースマネージャ102は、優先度のより高い新しいアクティビティに、その必要とするリソースの割振りに進むことができることを通知する(ステップ622)。このようにして、優先度のより低いプロセスは、優先度のより高いリソースによって必要とされるその限られたリソースの使用をプリエンプトされる。
【0092】
優先度のより低いプロセスが、リソースマネージャからプリエンプト通知を受け取ったときにそのリソースを快く放棄しない場合は、リソースマネージャは、そのアクティビティの予約を取り消して、かつ/または優先度のより低いアクティビティに関連するプロセスを終了して、強制的にそのリソースの返還を要求することができることに留意されたい。
【0093】
図7-10に、優先度ベースのプリエンプトを用いたリソース割振りを例示するための種々のシナリオを示す。各図は、リソースマネージャ102に存在する1つ以上のアクティビティと、アクティビティをもう1つ追加する試みとを示す。既存のアクティビティおよび新しいアクティビティにはそれぞれ、優先度が関連する。考察しやすいように、各アクティビティは構成を1つだけ有するものとする。
【0094】
図7には、2つのアクティビティが同じリソースを利用したいと思っているが、残念ながら2つのアクティビティのうちの一方にしかリソースを割り振ることができない場合を示す。例えば、リソースがチューナであり、システムがチューナを1つしか有さないと仮定する。2つのアクティビティA1およびA2(番号700(1)および700(2)で一般的に参照する)は、対応する構成702(1)-702(2)を有し、各構成は、対応する同じリソースプロバイダを表す同一の記述子を含む。
【0095】
図7の場合、既存のアクティビティA1は最高優先度を有し、追加が求められる新しいアクティビティA2は最低優先度を有する(すなわちA1>A2)。図6の優先度ベースのプリエンプトプロセスに従って、リソースマネージャは、まず記述子R1で識別されるリソースプロバイダと接触することにより、A1に対して「リソース計算」を実行する。先に「リソース計算」方法の中で述べたように、プロバイダは、この記述子によって必要とされるリソース量をアキュムレータに加える。アキュムレータの新しい値は1になる。プロバイダは、アキュムレータの値を、それが有するリソースの総量(この場合は1)と比較し、この量を満たすことができることをリソースマネージャに示す。リソースマネージャは、「アキュムレータ」を1に初期化した状態で、アクティビティA2に対してこれと同じ手順を繰り返す。プロバイダは、アクティビティA2に必要なリソースの量をアキュムレータの内容に加え(図6のステップ602)、これがプロバイダの有するリソースの総量を超えることに気付く。リソースプロバイダは、現在の割振りでは要求を満たすことができない旨の通知を返す(ステップ604および608)。次いでリソースマネージャは、要求されるリソースを現在使用している優先度のより低いアクティビティがあるかどうか評価する(ステップ610)。この場合、このリソースの現ユーザは既存のアクティビティA1であり、アクティビティA1は、新しいアクティビティA2よりも優先度が高い。したがってリソースマネージャは、新しいアクティビティに、今回はその構成を満たすことができないことを通知する(ステップ612および614)。
【0096】
図8に、図7と同様だが、例外として新しいアクティビティの方が既存のアクティビティよりも高い優先度を有する場合を示す。2つのアクティビティA1およびA2(番号800(1)および800(2)で一般的に参照する)は、対応する構成802(1)-802(2)を有し、各構成は、対応するリソースプロバイダを表す記述子を含む。この場合、既存のアクティビティA1の方が新しいアクティビティA2よりも低い優先度を有する(すなわちA1<A2)。
【0097】
図6の優先度ベースのプリエンプトプロセスに従って、リソースマネージャは、記述子R1で識別されるリソースプロバイダに尋ねて、新しいアクティビティA2にリソースを割り振ることができるかどうかを決定する(図6のステップ602)。リソースプロバイダは、現在の割振りでは要求を満たすことができない旨の通知を返す(ステップ604および608)。
【0098】
次いでリソースマネージャは、要求されるリソースを現在使用している優先度のより低いアクティビティがあるかどうか評価する(ステップ610)。この場合、このリソースの現ユーザは既存のアクティビティA1であり、アクティビティA1は、新しいアクティビティA2よりも優先度が低い。したがってリソースマネージャは、優先度のより低いアクティビティA1にプリエンプト通知を送り(ステップ616)、優先度のより低いアクティビティが停止または完了できるようにする(ステップ618)。リソースマネージャは、優先度のより高い新しいアクティビティA2に、その要求するリソースが割り振られることを知らせる(ステップ620)。したがって、図8は、リソースマネージャが既存のアクティビティから新しいアクティビティに動的に移行し、それによって優先度のより高い新しいアクティビティのために既存のアクティビティを犠牲にする場合を表す。
【0099】
図9に、犠牲者アクティビティがそのリソース使用を解放するか減らすように求められる場合を示す。この場合、犠牲者アクティビティは現在、他のリソースR1、R2、R4も予約しており、これらのリソースはリソースマネージャから要求されていない。このような場合、アクティビティを所有するコンシューマは、すべてのリソースを解放するか、リソースマネージャから要求されるリソースのすべてを解放するか、リソースマネージャから要求されるリソースの一部を開放するかを決定することができる。考察のために、リソースR3がCPUリソースに関係し、アクティビティA1に関連するコンシューマが、CPUの50%を求めるアクティビティA2からの要求に応答して、そのCPU使用を40%使用に減らしたいと思っていると仮定する。
【0100】
図9では、既存の低優先度のアクティビティA1(番号900(1)として一般的に参照する)が、対応する構成902(1)を有し、この構成は、記述子R1-R4で表される4つのリソースを含む。新しい高優先度のアクティビティA2(番号900(2)として一般的に参照する)が、対応する構成902(2)を有し、この構成は1つのリソースR3しか含まない。リソースマネージャは、高優先度のアクティビティA2が、記述子R3で識別されるリソースに対する権利を有すると決定し、アクティビティA1をプリエンプトする。この場合、犠牲者アクティビティA1は、記述子R3で識別されるリソースの使用を減らすことを選択し、記述子R1、R2、R4で識別される残りのリソースの制御は、少なくとも当面は維持する。
【0101】
図10に、リソースマネージャが、既存の低優先度のアクティビティをプリエンプトする行程に乗り出す前に、新しい構成の構成全体を満たすことができるかどうかを考慮する場合を示す。図10には、既存の低優先度のアクティビティA1(すなわち1000(1))を示すが、このアクティビティA1は、単一の記述子R1をリストする構成1002(1)を有する。別の既存のアクティビティだが高優先度のアクティビティA2(すなわち1000(2))は、単一の記述子R2をリストする構成1002(2)を有する。中間優先度の第3のアクティビティA3(すなわち1000(3))が、追加されるように要求する。第3のアクティビティA3は、2つの記述子R1およびR2をリストする構成1002(3)を有する。
【0102】
この場合、リソースマネージャは、新しいアクティビティA3の要求を満たすために、2つの記述子R1およびR2で識別されるリソースを割り振らなければならない。リソースマネージャは、低優先度のアクティビティA1をプリエンプトして、記述子R1で識別されるリソースを中間優先度のアクティビティA3に再割振りするのを可能にすることもできるが、これは1つのリソースを満たすだけである。リソースマネージャはさらに、他方のリソースR2の現ユーザが高優先度のアクティビティA2であると決定する。したがってリソースマネージャは、中間優先度のアクティビティA3のために高優先度のアクティビティA2をプリエンプトすることはしない。リソースマネージャは新しいアクティビティA3の構成全体を満たすことはできないので、低優先度のアクティビティA1をプリエンプトしないことを選択し、その代わり、新しいアクティビティA3に関連するコンシューマに、その要求を満たすことができないことを通知する。
【0103】
(フォールバック構成)
前のセクションで述べた各シナリオでは、アクティビティが構成を1つだけ有すると仮定した。しかし、図2の一般的なリソース管理アーキテクチャに示すように、各アクティビティが複数の構成を指定することもある。複数の構成がある場合、アクティビティがリソース使用をプリエンプトされてもなお、プリエンプトされたリソースを必要としない別の構成を使用して処理を継続することができる状況があり得る。したがって、フレキシブルな適合プロセスが、代替リソースセットを使用して、何らかの代替方式でそのタスクを完了することができる場合がある。例えば、アクティビティは、ハードウェアビデオデコーダ(優先度のより高いアクティビティに再割振りされるリソース)を使用する代わりに、ソフトウェアビデオデコーダを使用するアルゴリズムを別法として採用することができる。
【0104】
代替構成は、競合しないであろう異なるリソース、または単により少ないリソースを利用するものとすることができる。通常、代替構成を使用することは、アプリケーションによって生み出される結果の品質を落とすことにつながる。この状況では、アクティビティがより好ましい構成からより好ましくない別の構成に「フォールバック(後退)」するという。例えば、アクティビティが、ハードウェアビデオデコーダを有する好ましい構成からソフトウェアビデオデコーダを有するフォールバック構成に動的に変更するとき、フォールバック構成は、全画面サイズの画像をデコードすることができない。したがって、アプリケーションの出力の品質が落ち、モニタ上のビデオ画像のサイズが縮小する。
【0105】
図2を参照するが、リソースマネージャアーキテクチャ100は、リソース割振りが変更されたときにアクティビティ122がフレキシブルに適合することを容易にする。各アクティビティ122は、複数の構成124(1)、124(2)などを含むことができ、各構成は、プロセスが構成内のすべてのリソースを有する場合にプロセスが進行できるような、許容されるリソースセットを表す。構成124は、アプリケーションまたはコンシューマプロセスによって好ましさの順にランク付けされる。リソースマネージャ102がアクティビティをプリエンプトするとき、アクティビティは、そのリソース使用を解放するか減らす必要がある。リソースが解放された後は、いくつかの動作進行が考えられる。ある手法では、プリエンプトされたアクティビティに関連するコンシューマは、別の構成のリソースを予約するようにリソースマネージャに頼むことができる。別の手法では、リソースマネージャ102は自動的に、次に高いランクのフォールバック構成内のリソースを予約することを試みる。リソースマネージャは、(1)現在利用可能なリソースで満たすことのできる構成を見つけるまで、または(2)満たすことのできるフォールバック構成がないとわかるまで、各フォールバック構成に連続して進む。
【0106】
図11に、動作条件の変化に伴ってより好ましい構成からより好ましくない構成に動的にダウングレードするプロセスを示す。このような変更は、例えば、リソースマネージャ102が高優先度のアクティビティにリソースを再割振りするために低優先度のアクティビティをプリエンプトする、優先度ベースのポリシーの結果として引き起こされることがある。図11の各ステップは、リソースマネージャ102によって実施されるものであり、これらのステップについて図2をさらに参照しながら述べる。図示のプロセスでは、リソースマネージャ102が、例えば図6に示したリソース割振りプロセスの結果として、アクティビティによる1つ以上のリソースの使用をプリエンプトしたと仮定する。このため、犠牲者アクティビティには、もはやその好ましい構成が利用可能ではない。
【0107】
ステップ1100で、リソースマネージャ102がアクティビティをプリエンプトしたとき、リソースマネージャ102は、犠牲者アクティビティ122が別の構成124を有するかどうかを決定する。アクティビティコンテナ122内で他の構成が指定されていない場合は(すなわちステップ1100からの「no」ブランチ)、リソースマネージャは、代替構成が指定されていないことをコンシューマ(例えばアプリケーション32)に通知し、フォールバックリソースセットを記述する新しい構成をアクティビティ内に生み出してこの新しい構成の予約を要求する機会をコンシューマに与える(ステップ1102)。構成の生成については、図3に関して先に述べてある。
【0108】
あるいは、1つ以上の他の構成がアクティビティ内に示されている場合は(すなわちステップ1100からの「yes」ブランチ)、リソースマネージャ102は、アクティビティ122内のすべてのフォールバック構成124の中を進む(ステップ1104)。リソースマネージャ102は、満たすことのできるフォールバック構成があるかどうか決定する(ステップ1106)。満たすことのできる構成がない場合は(すなわちステップ1106からの「no」ブランチ)、リソースマネージャはコンシューマに通知し、新しい構成をアクティビティ内に生み出す機会をコンシューマに与える(ステップ1102)。
【0109】
反対に、少なくとも1つのフォールバック構成を満たすことができる場合は(すなわちステップ1106からの「yes」ブランチ)、リソースマネージャ102はこの構成内のリソースを予約する(ステップ1108)。リソースマネージャ102はまた、フォールバック構成を満たすことができることをコンシューマに通知する(ステップ1110)。通知は、プリエンプトされていないリソースが現在の構成とフォールバック構成の両方にある場合に、またはプリエンプトされたリソースが現在の構成とフォールバック構成の両方にあって、フォールバック構成の方が現在の構成よりも少ない量のプリエンプトリソースを使用する場合に、プロセスがそのリソースを解放せずに構成を切り替えることができるような形で行う。
【0110】
図11のフォールバックプロセスは、異なる3つの手法をサポートする。ある手法では、コンシューマの現在の構成がプリエンプトされることがコンシューマに通知されるまで、代替構成を生み出さなくてもよい。これは、図11のステップ1102によって例示するものである。この時点でコンシューマ(例えばアプリケーション32)は、競合リソースを含まない新しい構成を生み出し、リソースマネージャ102に、代替構成をアクティビティに加えて代替構成を予約するように伝える。代替構成の構築にはいくらか時間がかかることがあり、リソースマネージャとの通信(およびプロバイダとの間接的な通信)にも時間がかかることがある。この時間遅延は品質に影響を及ぼすことがある。
【0111】
フォールバック構成内のすべてのリソースが利用可能な場合、リソースマネージャ102は、フォールバックリソースを予約し、コンシューマが望むなら元のリソースを解放する。あるいは、コンシューマは、2つの構成の結合を一時的に保有し、後で元のリソースを明示的に解放することもできる。フォールバック構成を満たすことができない場合は、元の構成内のリソースは解放されず、したがって、プロセスは別のフォールバック構成を用いて再び試みる。最終的に、許容されるフォールバック構成を生み出すことができない場合は、コンシューマは処理を停止し、リソースを別のアクティビティに割り振られるように解放する。次いでコンシューマは、リソースが再び利用可能になるまで待機する。
【0112】
この第1の手法の変形は、コンシューマが、その通知を受け取ったときに、プリエンプトされたリソースを解放できることをリソースマネージャに明示的に通知するものである。このようにすると、コンシューマがフォールバック構成を構築できるまで待機するよりも少し早くリソースを解放することができる。
【0113】
別の手法では、代替構成はリソースコンシューマによって事前に生み出される。これは、図11のステップ1100からの「yes」ブランチと、図2のアクティビティの1つ122(1)内の複数の構成124(1)および124(2)によって示すものである。プリエンプトの一部として、リソースマネージャ102は単に、プリエンプトされるコンシューマに、アクティビティ内のその現在構成を失うことになり所与のフォールバック構成に切り替えなければならないことを通知する。リソースマネージャは、この通知の前にフォールバック構成内のリソースを予約し、したがって、コンシューマは一時的に2つの構成の結合を保有する。コンシューマは次いで競合するリソースを解放し、代替のリソース集合をサポートするための必要な変更を行う。次いでリソースマネージャ102は、元の構成内にあってフォールバック構成内にはない争われたリソースを解放し、それによってこれらのリソースが他のアクティビティに割り振られるようにする。
【0114】
フォールバック構成はまた、最初にリソースを予約する間に使用することもできることに留意されたい。例えば、アプリケーション32が価値でランク付けした複数の構成124をアクティビティ122内に供給するとき、リソースマネージャ102は、リソースマネージャ102が満たすことのできる最もランクの高い構成を選び、これらのリソースを予約し、どの構成が満たされたかをプロセスに通知する。
【0115】
図12に、より好ましくない構成にダウングレードするプロセスにおけるシナリオの1つを示す。図12には、リソースマネージャ102にある、既存のアクティビティA1(番号1200(1)として参照する)および新しいアクティビティA2(番号1200(2)として参照する)を示す。新しいアクティビティA2は、既存のアクティビティA1よりも優先度が高い。
【0116】
既存のアクティビティA1は、2つの構成を有する。すなわち、好ましい構成C1(番号1202として参照し、より高くランクされていることを示すための文字「H」を付けてある)と、フォールバック構成C2(番号1204として参照し、より低くランクされていることを示すための文字「L」を付けてある)である。好ましい構成C1は、アクティビティを実施するのに必要な対応するリソースを識別するためのリソース記述子セットR1、R2、R3を含む。フォールバック構成C2は、アクティビティを実施するのに必要な対応するリソースを識別するための異なるリソース記述子セットR1およびR4を含む。新しいアクティビティA2は、1つの構成C1(番号1206として参照する)を有し、この構成C1は、対応するリソースを識別するための1つの記述子R3を含む。
【0117】
この図示の例では、リソース記述子R3は、番号104として参照するリソースプロバイダR3を識別する。リソースプロバイダR3は、チューナなど、一度しか割り振ることのできないリソースを制御するものとする。さらに、リソースプロバイダR3によって維持されるカウンタ1208は、唯一のチューナが現在、優先度のより低いアクティビティA1の既存の構成C1に割り振られていることを示すものとする。
【0118】
リソースマネージャ102が、新しいアクティビティA2を生み出したコンシューマから予約要求を受け取ったとき、リソースマネージャ102は、リソースプロバイダ104がもはや他方のアクティビティA1にリソースを割り振ることができないことを知る。したがってリソースマネージャは、優先度のより低いアクティビティA1をプリエンプトして、記述子R3に関連するリソースを優先度のより高いアクティビティA2に移行すべきであると決定する。
【0119】
リソースマネージャは、優先度のより低いアクティビティA1が代替構成を有するかどうかを決定する(すなわち図11のステップ1100)。この場合、アクティビティA1は、プロバイダR3によって制御されるプリエンプト対象のリソースを必要としないフォールバック構成C2を有する。したがってリソースマネージャ102は、フォールバック構成C2内のリソース(すなわちプロバイダR1およびR4から提供されるリソース)を予約し、アクティビティA1に関連するコンシューマに、プリエンプトされることおよびフォールバック構成C2に切り替える必要があることを通知する(すなわち図11のステップ1108および1110)。
【0120】
アクティビティA1は、矢印1212で表すように、フォールバック構成C2の使用に移行する。リソースマネージャ102は、矢印1210で表すように、プロバイダR3のリソースをアクティビティA1から新しいアクティビティA2に再割振りする。
【0121】
アクティビティA1に関連するコンシューマへの影響が小さく、かつフォールバック構成C2への変換から生じる分断なしにプロセスが連続できることが望ましい。例えば、ハードウェアビデオデコーダがなくなるがソフトウェアデコーダで置き換えることができる前述の状況を考えてみる。アプリケーションは、ソフトウェアビデオデコーダをロードおよび初期化してから、ビデオストリームが中断しないような形でこれをビデオストリーム中に統合する方式をとることができる。
【0122】
アクティビティ内の構成間の違いは、非常に様々である場合がある。元の構成と代替構成が、必要なリソースの点でかなり共通することもある。実際この違いは、競合するリソースが代替構成から除去されている点だけにあることがある。あるいは、構成は大きく異なることもある。
【0123】
(アップグレード通知)
前のセクションでは、システム中のコンシューマは、プリエンプトされた場合に、より望ましい構成からより望ましくない構成に移行することが必要な場合がある。アップグレード通知は、リソースが再び利用可能になったときにコンシューマがより望ましい構成にアップグレードできるようにすることによる、帰路に関係するものである。
【0124】
図13に、動作条件の変化に伴ってより好ましくない構成からより好ましい構成に動的にアップグレードするプロセスを示す。このプロセスはリソースマネージャで実施されるものであり、このプロセスについて図2を参照しながら述べる。図示のプロセスでは、アプリケーションが、(1)リソースの予約を最初に要求したときに、その最高ランクの構成内の所望のリソースをすべて予約することができなかったため、または、(2)前にプリエンプトされてより低いランクの構成に移行したために、より望ましくない構成で稼動しているものとする。
【0125】
ステップ1300および1302で、リソースマネージャ102は、既存のアクティビティを監視し、アクティビティが完了してそのリソースを解放したときを検出する。リソースが解放されたとき、リソースマネージャ102は、構成が現在予約されていないアクティビティおよび最良ではない構成が予約されているアクティビティを含め、すべてのアクティビティを調べて、より好ましいいずれかの構成にアップグレードすることができるかどうかを決定する(ステップ1304)。アップグレードできる場合は、リソースマネージャ102は、それらのアクティビティに関連するコンシューマにアップグレード通知を送る(ステップ1306)。アップグレード通知は、コンシューマのアクティビティ内のより望ましい(すなわちより高くランクされた)構成を現在利用可能なリソースで満たせることをコンシューマに知らせる。
【0126】
コンシューマは、現在使用している構成よりも望ましい構成が利用可能になったときにアップグレード通知を受け取るように、リソースマネージャに登録する。ただし、アップグレード通知はオプションであり、コンシューマはこれらを受け取るように登録しなくてもよい。
【0127】
コンシューマがアップグレード通知を受け取ると、コンシューマは、アップグレード要求をリソースマネージャに提出して、新しい構成のためのリソースを予約するように頼むことができる。リソースマネージャは、アップグレード要求を受け取ると、新しい構成の予約を試みる(ステップ1308)。一実装形態では、リソースマネージャは本質的に図3と同じプロセスを採用するが、例外として、アップグレードされるコンシューマは、2つの構成、すなわち現在所有している構成と新しい構成とを短時間だけ予約していることが許容される。2つの構成の予約を可能にすることにより、古い構成から新しい構成にスムーズに移行することができる。コンシューマは、新しい構成に移行した後で、古い構成を解放する。別の実装形態では、アップグレードされるコンシューマアプリケーションは、まず古い構成による処理をシャットダウンし、次いで処理を再開する前に新しい構成を予約することが必要な場合もある。
【0128】
ただし、コンシューマが新しい構成の予約に成功する保証はない。例えば、優先度のより高い他のアクティビティもまた同じリソースを請求している場合がある。リソースマネージャは、コンシューマがより望ましい構成にアップグレードしようとして失敗した場合に、既存の構成を維持することを保証する。
【0129】
より高ランクの構成とより低ランクの構成を含めて、構成は、アクティビティが予約済みのリソースを有するかどうかにかかわらずいつでもアクティビティに加えることができることに留意されたい。現在予約されているリソースを有するアクティビティに構成を追加する場合であって、この構成が現在の構成よりも高いランクにあり、このより高ランクの構成を満たすことができる場合は、リソースマネージャは、このより高ランクの構成が可能であることをコンシューマに知らせる即時のアップグレード通知を送ることになる。
【0130】
図14に、より望ましい構成にアップグレードするプロセスにおけるシナリオの1つを示す。図14には、リソースマネージャ102にある、既存のアクティビティA1(番号1400(1)として参照する)、待機中のアクティビティA2(番号1400(2)として参照する)、および終了するアクティビティA3(番号1400(3)として参照する)を示す。終了するアクティビティA3の優先度が最も高く、その次に待機中のアクティビティA2、その次に既存のアクティビティA1の順である。終了するアクティビティA3は、そのタスクを完了し、記述子R1およびR2で示すそのリソースを解放しているところである。
【0131】
中間優先度のアクティビティA2は、記述子R2で示すリソースを必要とする単一の構成C1を有する。中間優先度のアクティビティA2は、前に、優先度のより高いアクティビティA3に割り振られたこのリソースへのアクセスを得ることができなかったので、待機中である。
【0132】
既存のアクティビティA1は、記述子R1を含む好ましい構成C1と、記述子R4を含むフォールバック構成C2とを有する。現在、記述子R1で示すリソースが優先度のより高いアクティビティA3によって拘束されているので、既存のアクティビティは現在、フォールバック構成C2を使用している。
【0133】
高優先度のアクティビティA3が終了し、記述子R1およびR2に関連するリソースを解放したとき、リソースマネージャ102は、既存のアクティビティが新たに解放されたリソースの利益を得ることができるかどうかを決定する(すなわち図13のステップ1304および1308)。この場合、アクティビティA1とA2の両方が利益を得ることができる。したがってリソースマネージャ102は、アクティビティA1およびA2にそれぞれ関連するアプリケーション32(1)および32(2)にアップグレード通知を送る(すなわちステップ1306)。アプリケーションは、アップグレードすることを選択した場合はアップグレード要求を返す。この例では、リソースマネージャ102はアクティビティA1の構成を、より好ましくない構成C2から、記述子R1で示す解放されたリソースを利用する、より好ましい構成C1にアップグレードする。これは矢印1402で表される。リソースマネージャはまた、アクティビティA2のために記述子R2に関連するリソースの予約も行う。
【0134】
(構成の構築)
前述のように、リソースまたはリソースプロバイダは、リソースを提供することに加えて、それ自体で、他のリソースプロバイダによって管理される他のリソースのコンシューマになることもある。例えば、USBカメラリソースは、USBドライバから提供される帯域幅のコンシューマである。したがって、USBドライバは、USBカメラリソースを親に持つ従属リソースプロバイダである。これにもかかわらず、アプリケーションは、USBカメラを要求するとき、カメラがUSBドライバのサービスを利用する必要があることを意識していないことがある。すなわち、アプリケーションなどのリソースコンシューマの中には、タスクを実施するのに必要な従属リソースのすべてを意識しているか知っているわけではないものもある。これらのタイプのリソースコンシューマは、そのタスクを実施するのに必要な「トップレベル」のリソースだけしか意識していないことがある。このタイプのリソースコンシューマの例として、後に開発される技術に先立って書かれるアプリケーションを考えてみる。具体的には、チューナリソースプロバイダからの「チューナリソース」だけを要求するようにテレビジョンアプリケーションを書く。チューナ技術における後の開発により、テレビジョンアプリケーションが元々書かれたときには利用可能でなかった追加のチューナが利用可能になる。これらの新しいチューナは、それ自体もアプリケーションが書かれた後に開発または改良されたものであるかもしれないリソースのコンシューマであることがある。それでもなお、テレビジョンアプリケーションが「チューナリソース」を要求するときは、より古いアプリケーションがより新しいチューナを使用することができるように、新しいチューナリソースおよびその従属リソースを1つ以上の構成内に組み込む方式が必要である。有利にも、述べた実施形態の態様では、各リソースプロバイダがそれ自体のリソースニーズを意識しているような形で、これを行うことができる。したがって、構成の構築段階の間にリソースプロバイダが呼び出されたとき、リソースプロバイダは、適当なすべてのステップを踏んで、構築された構成内でその従属リソースが適切に表されるようにすることができる。
【0135】
図15に、リソースコンシューマの知らないリソースであるにもかかわらずリソースが構築中の構成内に表される方式の、ほんの1つを例示するアーキテクチャを示す。以下に提供する記述は、リソースコンシューマがタスクの実施に必要な従属リソースを意識していないという特定の場合に合わせたものであることを理解されたい。リソースコンシューマが、従属リソースプロバイダの1つまたはすべてを知っていることもあり得る。その場合、以下に述べる構成は、例えばリソースコンシューマからリソースプロバイダへのいくつかの直接呼出しを介して構築されることになる。しかしこの考察では、そのような場合ではないものとする。
【0136】
以下に述べる処理は、1つ以上の構成が生み出された後で実施され、ステップ306(図3)に対応する。ここでは、1つのアクティビティ122(1)内に1つの構成124(1)だけを示す。1つ以上のアクティビティ内に複数の構成を構築することもできることは明らかなはずである。この時点では、構成はポピュレートされていない。構成がポピュレートされるとき、アクティビティが関連している特定のタスクを実施するためのリソースに寄与する各リソースプロバイダにより、1つ以上のリソース記述子が構成に加えられる。各リソース記述子は、そのリソースプロバイダを識別し、特定の構成に必要な関連するリソースの量を示す。この具体例では、1つのリソースコンシューマだけが利用され、アプリケーション32(1)を構成する。
【0137】
図示の例では、アプリケーション32(1)は、そのタスクを実施するためにそれに必要なリソースのサブセット(したがってそれらに関連するリソースプロバイダ)だけしか意識していないかわかっていない。ここで、アプリケーション32(1)は、リソースプロバイダ104(1)および104(2)を含む第1のリソースプロバイダのセットを意識している。アプリケーション32(1)は、第2のリソースプロバイダのセット(すなわちリソースプロバイダ104(3)および104(4))は意識しておらず、わかっていない。これらのリソースプロバイダは、リソースプロバイダ104(2)によって使用され、リソースプロバイダ104(2)がタスクを実施するのを補助する。各リソースプロバイダ104(1)-104(4)は、構成124(1)がポピュレートされているときに他のリソースプロバイダを呼び出すように構成される。アプリケーション32(1)は、いくつかのリソースプロバイダは意識しているので、それに応じてそれらのリソースプロバイダだけを呼び出し、したがってそれらのリソースプロバイダは、それらに関連するリソース記述子で構成124(1)をポピュレートするのを可能にする情報を提供することができる。アプリケーション32(1)が意識していないリソースプロバイダは、それらのリソースを使用する他のリソースプロバイダによって呼び出される。
【0138】
例えば図15では、アプリケーションは、リソースプロバイダ104(1)および104(2)を意識している。したがってアプリケーションは、構成をポピュレートまたは構築しようとするとき、これらのリソースプロバイダを直接呼び出す(矢印1501および1502で示す)。述べる実施形態では、リソースプロバイダに対して関数呼出しを行い、アクティビティを(例えばアクティビティIDまたはハンドルによって)識別し、ポピュレートされている構成を(例えば構成ハンドルまたはIDによって)識別する。これらの関数呼出しを受け取るのに応答して、各リソースプロバイダは、リソースマネージャ102に対して関数呼出しを行い、関連するリソースに関する情報を提供する。次いでリソースマネージャ102は、この情報を使用して構成を維持する。図示の例では、このような情報は、関連するリソース記述子の形で提供される。この例では、各リソースプロバイダ104(1)および104(2)は、それぞれリソース記述子R2およびR4を構築するのに必要な情報をリソースマネージャ102に提供する。これを、それぞれのリソースプロバイダから発してリソースマネージャ102で終わる矢印1503および1504で示す。しかし、アプリケーションはリソースプロバイダ104(3)および104(4)を意識していないので、これらは直接呼び出さない。そうではなくこの例では、これらのリソースを利用する親リソースプロバイダがこれらを呼び出す。したがって、リソースプロバイダ104(2)がリソースプロバイダ104(3)を呼び出し(矢印1506)、ポピュレートされている構成内のそのリソース記述子に関するアクティビティハンドルおよびリソース識別子をそれに渡す。この呼出しに応答して、リソースプロバイダ104(3)は、リソースマネージャが構成を維持するのに必要な情報によって、リソースマネージャ102を呼び出す(矢印1508)(R3で示す通信矢印で示すように)。この情報は、リソースプロバイダ104(2)に関するいわゆる関係情報を含む。この例では、関係情報は、リソースプロバイダ104(3)がリソースプロバイダ104(2)と有する子/親の関係を記述する。同様に、リソースプロバイダ104(3)はリソースプロバイダ104(4)に関連するリソースを使用するので、リソースプロバイダ104(3)は、ポピュレートされている構成内におけるそのリソース記述子に関するアクティビティハンドルおよびリソース識別子によって、リソースプロバイダ104(4)を呼び出す(矢印1510)。リソースプロバイダ104(4)は、リソースマネージャが構成を維持できるように、情報(その親を記述する関係情報を含む)によってリソースマネージャを呼び出す(矢印1512)。この通信を、R1で示す通信矢印で示す。
【0139】
この例では、親/子の関係の性質が、いくつかのリソースの従属関係を記述する階層ツリーに編成されてこれを構成する記述子126で示されている。述べる構成は階層ツリーの形をとるが、必ずしも階層ツリーの形ではない構成を含めた他の構成を用いることもでき、例えば、平面構成や直線構成、またはリソース従属関係を記述しない構成を用いることができる。しかし、特定条件が発生する場合には、階層構造を利用するのが有利である。これらの特定条件の例には、リソース予約の失敗、またはリソースのプリエンプトの失敗が含まれる。これらのそれぞれについては、後でより詳細に論じる。
【0140】
図16に、前述した実施形態による例示的なリソース管理方法におけるステップを示す。ステップ1600で、リソースプロバイダを呼び出す。図示の例では、この呼出しは、リソースプロバイダによってサポートされるインタフェースに対して行い、1つ以上の構成を構築またはポピュレートすることを望むときに使用する。リソースプロバイダに対する呼出しは、リソースコンシューマ(アプリケーションやシステムコンポーネントなど)から来る可能性もあり、別のリソースプロバイダから来る可能性もある。ステップ1602で呼出しを受け取り、これに応答して、リソースプロバイダはそのリソースに関する情報を供給する。この情報は、ポピュレートされている構成を維持するのに使用される。ステップ1606で、タスクを実施するためにリソースプロバイダがいずれか他のリソースプロバイダに依存しているかどうかを決定する。リソースコンシューマが従属リソースプロバイダを意識していないシステムでは、この決定は個々のリソースプロバイダによって行われる。リソースコンシューマが従属リソースプロバイダを意識しているシステムでは、この決定は、リソースコンシューマと個々のリソースプロバイダのいずれかによって行うことができる。図15の例では、リソースプロバイダ104(1)についての決定は否定となり、したがってステップ1608で、他のリソースプロバイダに対する追加の呼出しがあるかどうかを決定する。追加の呼出しがある場合は、ステップ1608はステップ1602に分岐し、前述のように継続する。特定の構成について追加の呼出しがこれ以上行われない場合は、ステップ1610で、次の構成またはアクティビティを得て前述のように処理を繰り返すか、または終了する。ステップ1606で1つ以上の従属リソースプロバイダがあると決定された場合は、ステップ1612で従属リソースプロバイダを呼び出す。したがって、リソースプロバイダが呼び出されたとき、リソースプロバイダは、他のどのリソースプロバイダを呼び出すかがわかるようにプログラムされる。図15の例では、アプリケーションがリソースプロバイダ104(2)を呼び出したとき、このリソースプロバイダは、リソースプロバイダ104(3)を呼び出すことがわかる(ステップ1606)。したがって、リソースプロバイダ104(3)を呼び出し、ポピュレートされている構成内のそのリソース記述子に関するアクティビティハンドルおよびリソース識別子を渡す。この呼出しを受け取るのに応答して、リソースプロバイダ104(3)は、構成を構築またはポピュレートするのに使用されるそのリソースに関する追加の情報を供給する(ステップ1616)。次いでステップ1616はステップ1606に分岐し、追加の従属リソースがあるかどうか決定する。このステップは、リソースプロバイダ104(2)によって実施される可能性もあり(1つ以上のリソースプロバイダに依存する場合)、またはリソースプロバイダ104(3)によって実施される可能性もある(1つのリソースプロバイダに依存する場合)。この特定の例では、リソースプロバイダ104(2)は1つのリソースプロバイダだけに依存するので、このステップはリソースプロバイダ104(3)によって行われる。この特定の場合、リソースプロバイダ104(3)はリソースプロバイダ104(4)に依存するので、処理はステップ1612-1616の中を進み、追加の呼出しがあるかどうかに応じてステップ1602または1610に進むことになる。
【0141】
図示の例では、異なる複数のリソースプロバイダから情報を受け取り、階層ツリーからなる構成の構築に利用する。ツリーはリソースマネージャ102によって維持され、予約およびエラー通知の発布に利用される。
【0142】
(エラー通知)
1つ以上のアクティビティに対して1つ以上の構成が構築された後、リソースマネージャ102は、これらのアクティビティのための構成を予約することを試みることができる。これを行うための例示的なプロセスについては、先に詳述してある。構成を予約しようとする途中で、1つ以上のリソースを予約することができないこともあり得る。この場合、予約は失敗し、リソースは利用不可能である。このことが生じたときは、予約失敗をリソースコンシューマに通知することが望ましい。この理由の1つは、リソースコンシューマが、通知を受けた後で代替構成の構築または予約を試みることができるからである。もう1つの理由は、そのタスクを実施することを可能にする様々なオプション、すなわち他のリソース設定をリソースコンシューマに提示することができるからである。
【0143】
しかし、失敗したまたはプリエンプトされた従属リソースをリソースコンシューマが意識しない実施形態では、通知はいくらかの困難を呈する。例えば、また図15に関しては、リソースプロバイダ104(4)に関連するリソースを予約しようとする途中で予約が失敗した場合、リソースプロバイダ104(4)によって生成されるエラーメッセージは通常、リソースコンシューマには理解されない独自の用語を含むことになる。このため、理解可能な形でリソースコンシューマに明確に失敗を伝える方式が必要である。階層ツリー構造を利用する実施形態では、エラー報告は単に、リソースコンシューマが認識するリソースプロバイダが見つかるまでリソース従属関係の連鎖を辿ることによって達成される。次いで、認識されるリソースプロバイダを介してリソースコンシューマにエラーを報告する。このプロセスの間、最初に従属リソースプロバイダによって発布されたエラーメッセージは、その独自の形式でその親リソースプロバイダによって受け取られ、次の順番のリソースプロバイダに理解される形式に変換され、しかるべく転送される。最終的に、リソースコンシューマには、リソースコンシューマに理解される用語で表されたエラー通知が届く。
【0144】
例として、次の場合を考えてみる。アプリケーションが、30フレーム/秒で再生できるようにUSBカメラリソースを予約しようとする。カメラリソースは利用可能かもしれないが、30フレーム/秒に対応するのに十分なUSB帯域幅がないと仮定する。生成される失敗は、USB帯域幅リソースプロバイダによって生成され、アプリケーションに理解されない独自の用語で定義される。このため、USB帯域幅プロバイダからの失敗は、その親すなわちUSBカメラリソースプロバイダに報告される。USBカメラリソースプロバイダは、失敗を、アプリケーションに報告される形に変換する。
【0145】
リソースコンシューマへのエラー報告は、様々な形をとることができる。例えば、エラー報告は単に、知られているリソース、例えばカメラリソースが現在利用可能でないことを報告するものであることがある。あるいは、エラー報告は、失敗の場合にリソースコンシューマに1つ以上のオプションを提示することもできる。例えば、USB帯域幅の不足のせいでUSBカメラリソースが失敗した場合、USB帯域幅リソースプロバイダは、それが有する利用可能な帯域幅をUSBカメラプロバイダに提供することができる。次いでUSBカメラリソースプロバイダは、この情報をアプリケーションに理解される形式に変換し、フレームレート低下(例えば5フレーム/秒)またはウィンドウサイズ縮小のオプションをアプリケーションに提供することができる。この例では、リソースの割当てが異なっていても、タスクはまだ実行できるであろう。以上の例は予約失敗に関して提供したものだが、リソースが別のアクティビティによる使用のためにプリエンプトされるときにも、同じエラー報告の例があてはまる。
【0146】
ただし、エラー報告は別の影響を有することもある。具体的には、リソースプロバイダの中には、発生して失敗を引き起こす恐れのある特定の問題に対して修復またはトラブルシューティングを試みるようにプログラムすることができるものもある。この場合、エラーをリソースコンシューマに報告する必要はない。トラブルシューティングは、従属関係の連鎖の中のどの地点でも行うことができる。例えば、ハードウェアデバイスを管理するリソースプロバイダを考えてみる。このハードウェアデバイスは、プリエンプトされたせいで利用可能でないと仮定する。リソースプロバイダは、エラー報告をリソースコンシューマに発布するのではなく、リソースコンシューマには実際のハードウェアデバイスであるかのように見える「仮想デバイス」を提供することができる。リソースコンシューマはこの場合、実際のハードウェアデバイスが利用可能になるまで、そうとは知らずに仮想デバイスを使用することになる。このようにすれば、リソースコンシューマにエラーは報告されず、タスクは依然として実施することができる。
【0147】
階層ツリー構成は暗黙的に順序付けを含むので、階層ツリー構成を用いることにより、エラー報告は、平面構成や線形構成よりもずっと効率的になる。平面構成や線形構成を用いることも可能だが、望ましさは劣る。
【0148】
図17に、述べた実施形態によるエラー報告方法におけるステップを記述する。ステップ1700で、リソースを階層ツリー構造として表す。これをどのように行うことができるかについての具体的な例および例示的な構造は、先に「構成の構築」のセクションで挙げたものである。ステップ1702で、特定のリソースに関連する特定条件を検出する。この例では、特定条件はエラー条件であり、リソースマネージャ102は、予約失敗またはプリエンプトがあるときがわかるようにプログラムされているので、ステップ1702はリソースマネージャ102(図15)によって行うことができる。これは、リソースマネージャがリソース計算を実行し、リソース競合を決定するからである。次いでステップ1704で、リソースに関連するリソースプロバイダに通知する。これを行うために、リソースマネージャは各プロバイダにコールバックする(すなわちプロバイダは登録時にコールバックを設定する)。リソースマネージャは現エラーパケット(最初は空)をプロバイダに与え、次いで、変換されたパケットをプロバイダから反対に受け取る。次いで、この変換されたパケットを連鎖の中の次のプロバイダに渡し、以下同様にする。プロバイダのうちの1つがそれ自体でエラーを修復する場合もあり、この場合は、それ以上連鎖を上ってパケットを転送する必要はない。
【0149】
(ポリシーマネージャ)
ポリシーマネージャは、リソースマネージャと共に、複数のアプリケーションが同じリソースを求めて争うときにどのアプリケーションが限られたリソースにアクセスして使用することができるかを決定する。アプリケーション自体が自発的にリソースを開始および利用することはなく、アプリケーションがリソースによって管理されるアクティビティの優先度を制御することもない。そうではなく、リソースは、ポリシーマネージャにおいて確立されたポリシーに基づいてリソースマネージャによって割り振られる。
【0150】
ポリシーには様々なタイプが考えられる。例えばあるポリシーセットは、どのアプリケーションおよび/またはユーザが他を制してリソース使用の優先度を有するかに基づいてリソース割振りを決定する優先度ベースの競合解決と共に使用することができる。用語「優先度」は、従来のスレッド優先度やプロセス優先度の意味では用いず、同じリソースを求めて争うコンシューマ間の調停ポリシーのコンテキストで用いる。優先度は、個々のリソースに割り当てられるのではなく、アプリケーションがリソースマネージャに確立したアクティビティに割り当てられる。
【0151】
ポリシーは、どのアクティビティが他のアクティビティと比較して何らかの形で「より重要」かまたは「より重要でない」かを(例えばユーザにとって「より重要」)決定する。これによってリソース管理アーキテクチャは、所望の、ただし限られたリソースを、より重要でないアクティビティからより重要なアクティビティに移行することができる。
【0152】
別の実行可能なポリシーは、「先着予約順」である。このポリシーに従うことにより、リソースマネージャは、アクティビティのためのリソースを先着順で予約することになる。
【0153】
別の可能なポリシーは、「一番最近の予約順」である。このポリシーを使用すると、リソースマネージャは、一番最近に予約を求めたアクティビティのためのリソースを予約することを試みる。
【0154】
別の可能なポリシーには、何らかのタイプのバランスガイドラインまたは提携ガイドラインを達成するためのリソース共用や、ユーザがより重要なアクティビティを選ぶユーザ指定勝利者などが含まれる。
【0155】
図2に示すリソース管理アーキテクチャ100は、別個かつ独立のポリシーマネージャ108によって確立されたポリシーに基づいてリソース割振り決定を行うリソースマネージャ102を実装する。ポリシーマネージャ108は、すべてのアクティビティにリソースを割り振ることができないような競合があるときにどのアクティビティがリソースへのアクセスを得るべきかを、アプリケーションから独立して決定する。システムまたはユーザがポリシー110を設定し、ポリシーマネージャ108がこれらを絶対的な優先度に変換する。
【0156】
図18に、ポリシーマネージャ108をリソース管理アーキテクチャ100と共に利用する場合を示す例示的なポリシー管理アーキテクチャ1800を示す。リソースマネージャ102は、定義済みのAPI(アプリケーションプログラムインタフェース)120を公開して、リソースを求める要求をアプリケーション32(1)-32(A)から受け入れる。後の「リソースマネージャAPI」の項目で、APIの1つについて詳細に述べる。アプリケーション32は、タスクを実施したいとき、API120を使用してリソースマネージャ102にアクティビティ122を生み出す。アクティビティは、システム中で実施されるタスクに関連するデータ構造である。実施されるタスク1つにつき1つのアクティビティが存在する。図では、リソースマネージャ102は、アプリケーション32(1)-32(A)によって生み出されたアクティビティ122(1)-122(N)を含む。
【0157】
ポリシー管理アーキテクチャ1800はソフトウェアによって実現され、この例では、ユーザレベルとカーネルレベルの両方のコンポーネントを有するポリシーマネージャ108を含む。ポリシーマネージャ108は、ユーザコンポーネント1802、カーネルコンポーネント1804、および対話バッファコンポーネント1806を有する。ポリシーマネージャ対話バッファ1806は、ポリシーマネージャカーネルコンポーネント1804とポリシーマネージャユーザコンポーネント1802との間の通知を保持する。
【0158】
ポリシーマネージャユーザインタフェース1808がユーザレベルにあるが、これはポリシーマネージャ108の外部にある。ポリシーは、最初にシステム内で生み出されるが、フレキシブルに設計され、したがってユーザは、ポリシーをカスタマイズすることにより、かつポリシーがポリシーマネージャ108によってどのように解釈されて使用されるかを調整することにより、システムを最適化することができる。ユーザはユーザインタフェース1808を介して、ポリシーを規定することができ、また、同じリソースを求めて争うアプリケーション間のリソース予約競合を解決するためにポリシーを適用する際の順番を確立することができる。
【0159】
ポリシーマネージャカーネルコンポーネント1804は、アクティビティ優先度および優先度修正を制御するための、ポリシーマネージャ108とリソースマネージャ102との間のインタフェースである。ポリシーマネージャカーネルコンポーネント1804は、リソース管理によって定義されたコールバックオブジェクトを開き、コールバックルーチンを登録する。リソースマネージャ102は、コールバックオブジェクトを使用して、リソースマネージャ102におけるアクティビティイベントをポリシーマネージャ108に通知する。
【0160】
ポリシーマネージャユーザコンポーネント1802は、3つのコンポーネントによって実現される。すなわち、(1)前述のポリシーコンポーネント110、(2)ポリシーマネージャディスパッチエンジン1810、および(3)アクティビティリスト1812である。ポリシーコンポーネント110は、リソース割振り決定を行うのに使用されるポリシーと、リソース割振り競合を解決するのに使用されるポリシーとを維持する。ポリシーコンポーネント110中で維持されるポリシーには、固定優先度ポリシー1814、フォーカスベースのポリシー1816、およびユーザ解決ポリシー1818が含まれる。ポリシーは、リソース競合を解決するために、ポリシー列挙数字(1)-(3)で示す順で適用する。すなわち、(1)として列挙した固定優先度ポリシー1814を使用してリソース競合を解決することができない場合は、次いでポリシー(2)のフォーカスベースのポリシー1816を適用し、以下同様にする。
【0161】
ポリシーは、アプリケーション32が提供するアクティビティ特有の情報を利用して、システムアクティビティの優先度を決定する。アプリケーション32は、アクティビティに関するポリシー属性を設定することにより、この情報を提供する。この情報は、ポリシー属性を生成、削除、修正、検索するAPIセットを介して提供する。このAPIセットは、後で「リソースマネージャAPI」の項目で詳細に述べるRMU APIを拡張したものである。具体的なAPIセットについては、後で「RMU APIの拡張」の項目で述べる。
【0162】
リソースマネージャ102は、アクティビティ122が生成または破壊されたとき、およびリソースがアクティビティ構成のために予約または予約解除されたとき、アクティビティイベントをポリシーマネージャ108に通知する。ポリシーマネージャ108はまた、アクティビティ間にリソース予約競合があるとき、およびユーザ対話式アプリケーションのプロセスがシステムフォーカスを得たときにも通知を受ける。
【0163】
ポリシーマネージャディスパッチエンジン1810は、リソースマネージャ102からポリシーマネージャカーネルコンポーネント1804および対話バッファコンポーネント1806を介してアクティビティイベント通知を受け取り、次いでこれらの通知を、次の操作のためにポリシー110にディスパッチする。ポリシー110によってアクティビティが「格付け」された後で、ポリシーマネージャディスパッチエンジン1810は、絶対的なアクティビティ優先度を決定する。ポリシーマネージャディスパッチエンジン1810はまた、すべてのポリシーのリスト、ならびに、各アクティビティの優先度を関連させたアクティビティリスト1812も維持する。
【0164】
より具体的には、ポリシーマネージャディスパッチエンジン1810は、アプリケーションがメソッドRMCreateActivity、RMDestroyActivity、RMReserveResources、RMUnreserveResourcesを呼び出したとき、リソースマネージャ102からアクティビティイベント通知を受け取る。イベント通知を受け取ると、ポリシーマネージャディスパッチエンジン1810は、アクティビティリスト1812を更新し、ポリシー110に通知を送る。ポリシー110は、システム中の現アクティビティの相対的な重要度順序付けに従ってアクティビティリストの優先度が再決定されるように、アクティビティデータ構造の優先度の再決定をトリガすることができる。
【0165】
アクティビティリスト1812は、現アクティビティのリストをポリシー110に渡してアクティビティの優先度が順序付けされるようにするために、ポリシーマネージャディスパッチエンジン1810によって使用されるオブジェクトである。アクティビティリスト1812は、すべてのアクティビティ122を含むアクティビティ情報オブジェクトの集合として渡される。ポリシー110は、アクティビティ情報オブジェクトの集合を、優先度順のアクティビティサブセットに修正する。ポリシー110がアクティビティ122の格付けを完了した後でポリシーマネージャディスパッチエンジン1810が絶対的なアクティビティ優先度を決定するとき、同じサブセット中のアクティビティは、同じ絶対的な優先度を受け取る。
【0166】
固定優先度ポリシー1814は、アクティビティ範疇に関するユーザ定義の重要度順序付けに基づいてアクティビティ優先度を決定する。例えば、ユーザは、特定の重要度順序を有するものとして以下のアクティビティ範疇を定義することができる。
【0167】
Figure 0005065566
【0168】
アクティビティA1-A3は、リソースマネージャ102に存在している。新しいアクティビティA4が生み出されたとき、リソースマネージャ102は、アクティビティイベントをポリシーマネージャ108に通知する。ポリシーマネージャディスパッチエンジン1810は、アクティビティリスト1812を更新し、アクティビティ122の優先度が順序付けされるように現アクティビティ122のリストをポリシー110に渡す。固定優先度ポリシー1814は、アクティビティリスト1812を、優先度順にアクティビティのサブセットに修正する。
【0169】
Figure 0005065566
【0170】
フォーカスベースのポリシー1816は、リソース管理アクティビティ122を生み出したプロセスのフォーカス履歴に基づいてアクティビティ優先度を決定する。ユーザ対話式アプリケーションだけが、フォーカス履歴を維持するためにフォーカスベースを必要とする。したがって、フォーカスベースのポリシー1816は、ユーザ対話式アプリケーションによって生み出されたアクティビティ122の優先度を決定する。ユーザ対話式アプリケーションのプロセスがフォーカスを得たとき、このプロセスのアクティビティは最初にフォーカス履歴中で識別される。
【0171】
以上の例から、ユーザは、アクティビティA1-A4を特定の重要度順序を有するものとして定義し、その結果、固定優先度ポリシー1814は、各アクティビティがどの優先度セットに属するかを決定した。ユーザがTVの視聴(アクティビティA2、優先度2)を開始し、その後、録画(アクティビティA4、優先度2)を行うことが予定された場合、リソースマネージャ102は、システムの唯一のチューナリソースをどちらのアクティビティに割り振るべきかを決定しなければならない。フォーカスベースのポリシー1816は、ユーザがTVの視聴を開始したとき、TVからの画像を表示するプロセスを、フォーカス履歴中の最初のものとして識別することになる。したがって以下のように、アクティビティA2が、優先度セット2でフォーカス優先度を有することになる。
【0172】
【表1】
Figure 0005065566
【0173】
ユーザ解決ポリシー1818は、リソースマネージャ102が現在のアクティビティ優先度に基づいて競合を解決することができないときに、リソース予約競合を解決する。例えば、ユーザは以下のように、同時に開始する異なる2つのチャネルを録画するために、予定された2つの録画アクティビティを有する場合がある。
【0174】
Figure 0005065566
【0175】
最初に、固定優先度ポリシー1814がアクティビティ優先度を決定し、ポリシー110が、アクティビティリスト1812をアクティビティの優先度サブセットに修正することになる。
【0176】
Figure 0005065566
【0177】
アクティビティA1とA2が両方ともユーザにとって同じ優先度を有すると仮定すると、リソースマネージャ102がシステムの唯一のチューナリソースをどちらのアクティビティに割り振るべきか決定しなければならないときに、リソース競合が発生する。録画Aと録画Bはいずれもシステムフォーカスを得たプロセスではないので、フォーカスベースのポリシー1816はこの競合を解決することはできない。
【0178】
ユーザ解決ポリシー1818は、アクティビティA1とA2の間で競合が存在するという情報をポリシーマネージャディスパッチエンジン1810から受け取ると、競合を解決するためにポリシーマネージャユーザインタフェース1808を介してユーザと通信する。ユーザがアクティビティの優先度を再決定すると、ポリシーマネージャのポリシー110は、ユーザの解決選択を反映するようにアクティビティリスト1812を修正する。ユーザ解決ポリシー1818はまた、リソース競合を解決するためのユーザ対話の必要を減らすために、すべてのアクティビティについてそれらの存続期間にわたるユーザ解決履歴も維持する。
【0179】
図19に、リソースマネージャ102において生み出されたアクティビティのポリシー管理の方法におけるステップを示す。ステップ1900で、ポリシーマネージャディスパッチエンジン1810は、リソースマネージャ102からアクティビティ通知を受け取る。ポリシーマネージャ108は、アクティビティ生成、アクティビティ破壊、アクティビティ予約、アクティビティ予約解除、およびリソース予約競合に関して通知を受ける。
【0180】
アクティビティ通知を受け取ると、ポリシーマネージャディスパッチエンジン1810は、アクティビティリスト1812を更新する(ステップ1902)。次いでポリシーマネージャディスパッチエンジン1810は、アクティビティ通知をポリシー110に転送する(ステップ1904)。
【0181】
ステップ1906で、ポリシー110は、アクティビティ通知(ステップ1900)が2つ以上のアクティビティ間のリソース予約競合に関するものであったかどうかを決定する。ポリシーが競合を解決する必要がある場合は(すなわちステップ1906からの「yes」ブランチ)、ポリシーは、競合するアクティビティの相対的な重要度を決定する(ステップ1908)。これは、前述のように、ユーザ解決ポリシー1818を介してユーザと相談することを含む場合がある。
【0182】
競合するアクティビティの相対的な重要度を決定した後は(ステップ1908)、またはポリシーが競合を解決する必要がない場合は(すなわちステップ1906からの「no」ブランチ)、ポリシーは、アクティビティの優先度の再決定が必要かどうかを決定する(ステップ1910)。通常、アクティビティ生成およびアクティビティ予約の場合は、アクティビティの優先度の再決定が必要である。アクティビティ破壊またはアクティビティ予約解除の場合は、通常はアクティビティの優先度の再決定は必要ない。
【0183】
アクティビティの優先度の再決定が必要ない場合は(すなわちステップ1910からの「no」ブランチ)、ポリシーマネージャ108は、リソースマネージャ102のアクティビティ優先度を更新する必要はなく、方法は終了する(ステップ1912)。アクティビティの優先度の再決定が必要な場合は(すなわちステップ1910からの「yes」ブランチ)、ポリシー110はアクティビティの優先度を再決定する(ステップ1914)。アクティビティの優先度が再決定された後、ポリシーマネージャディスパッチエンジン1810は、アクティビティの絶対的な優先度を決定する(ステップ1916)。次いでポリシーマネージャディスパッチエンジン1810は、リソースマネージャ102のアクティビティ優先度を更新する(ステップ1918)。
【0184】
以上の例では、ポリシーが優先度ベースの競合解決と協働すると仮定している。しかし他の状況では、リソースコンシューマ間に優先度がないこともある。すなわち、アプリケーションに関連する各アクティビティが同一の優先度を有するか、優先度を全く有さないことがある。
【0185】
以下のシナリオを考えてみる。アクティビティA1は、2つの構成C1およびC2を有する。最も好ましい構成C1は、2つのリソースR1およびR2を必要とする。より好ましくない構成C2は、1つのリソースR1だけを利用する。アクティビティA2は、2つの構成、すなわち(1)2つのリソースR1およびR2を利用する最も好ましい構成C1、および(2)1つのリソースR2だけを利用するより好ましくない構成C2を有する。
【0186】
アクティビティA1とA2の好ましい構成を同時に実行しようとすると、競合が生じる。この状況では、リソースマネージャは、両方のアクティビティについて第2の構成を実行することを選択することができ、それにより2つのアクティビティを同時に継続することができる。アクティビティA1とA2の間には優先度の差がないので、一方を犠牲にして他方を実行する必要はない。
【0187】
別のポリシーセットは、より少ないアクティビティをそれらの最も好ましい構成で実行するのではなく、できるだけ多くのアクティビティを、各アクティビティがより好ましくない構成を使用する形で実行することに関するものとすることができる。例えば、前述のシナリオで、アクティビティA1がアクティビティA2よりも優先度が高いとしても、ポリシーマネージャは、アクティビティA1だけをその最良の構成で実施するのではなく、両方のアクティビティをそれらの第2の構成で実行する方を好む。
【0188】
以下は、ポリシー管理アーキテクチャと共に利用する例示的なメソッドである。
【0189】
(CPOLICYMANAGERクラス中のメソッド)
1.void Reprioritize()
a)説明
このメソッドは、ポリシーがアクティビティの優先度の再決定をトリガすることができるように、主ポリシーマネージャディスパッチエンジン(CPolicyManager)によって公開される。例えば、リソースマネージャ中にアクティビティを生み出したアプリケーションにフォーカスが変化したときは、フォーカスポリシーがこのメソッドを使用して、アクティビティの優先度の再決定をトリガする。このメソッドは、ポリシーマネージャディスパッチエンジン中に通知をポストしてから戻る。この通知の結果、ポリシーマネージャディスパッチエンジンはCPolicyManager::CalculatePriorities()を呼び出し、これは、優先度の再決定のためにアクティビティリストをポリシーに渡す。
b)戻り値
なし。
2.HRESULT CalculatePriorities()
a)説明
このメソッドは、システム中のすべてのアクティビティについて優先度を計算するのに使用する。このメソッドはCPolicy::CalculatePriorities()を呼び出す。得られるコンパートメント化されたアクティビティリストは、次いでアクティビティの絶対的な優先度を計算するのに使用され、次に、この絶対的な優先度がリソースマネージャ中に設定される。
b)戻り値
S_OK 成功の場合。
E_FAIL そうでない場合。
3.CActivityList*GetActivityList()
a)説明
このメソッドは、ポリシーがシステム中の現アクティビティのリストを得るのに使用する。例えば、フォーカスベースのポリシーが、関連するリソースマネージャアクティビティを有するプロセスについてのフォーカス履歴を維持するのを開始することができるように、初期化してシステム中の現在のアクティビティリストを得るときに使用する。
b)戻り値
システム中のアクティビティを列挙できるようなメソッドを公開するCActivityListオブジェクトへのポインタ。
4.void OnNewActivity(PRM_ACTIVITY Activity)
a)説明
このメソッドは、ポリシーマネージャディスパッチエンジンが、新しいアクティビティが生み出されたことの通知をリソースマネージャから受け取ったときに、ポリシーマネージャディスパッチエンジンによって呼び出される。このメソッドは、リソースマネージャ中に生み出されたアクティビティを反映する新しいCActivityオブジェクトを生み出し、次いでこの通知を、CPolicy::OnNewActivity()を呼び出すことによってすべてのポリシーに通知する。次いでポリシーは、この通知を処理し、必要なら優先度の再決定をトリガすることができる。
b)パラメータ
Activity-付録に定義するPRM_ACTIVITYタイプの構造体。この構造体は、アクティビティハンドルおよび所有プロセスIDを含む。
c)戻り値
なし。
5.void OnDestroyActivity(PRM_ACTIVITY Activity)
a)説明
このメソッドは、ポリシーマネージャディスパッチエンジンが、アクティビティが破壊されたことの通知をリソースマネージャから受け取ったときに、ポリシーマネージャディスパッチエンジンによって呼び出される。この通知は、CPolicy::OnDestroyActivity()を使用してすべてのポリシーに渡される。アクティビティはこれを使用して、それらの非公開情報をクリーンアップするか、必要なら優先度の再決定をトリガすることができる。
b)パラメータ
Activity-付録に定義するPRM_ACTIVITYタイプの構造体。この構造体は、アクティビティハンドルおよび所有プロセスIDを含む。
c)戻り値
なし。
6.void OnReserve(PRM_ACTIVITY Activity)
a)説明
このメソッドは、ポリシーマネージャディスパッチエンジンが、アクティビティ構成についての予約が完了したことの通知をリソースマネージャから受け取ったときに、ポリシーマネージャディスパッチエンジンによって呼び出される。この通知は、CPolicy::OnReserve()を使用してすべてのポリシーに渡される。
b)パラメータ
Activity-付録に定義するPRM_ACTIVITYタイプの構造体。この構造体は、アクティビティハンドルおよび所有プロセスIDを含む。
c)戻り値
なし。
7.void OnUnreserve(PRM_ACTIVITY Activity)
a)説明
このメソッドは、ポリシーマネージャディスパッチエンジンが、アクティビティ構成についての予約解除が完了したことの通知をリソースマネージャから受け取ったときに、ポリシーマネージャディスパッチエンジンによって呼び出される。この通知は、CPolicy::OnUnreserve()を使用してすべてのポリシーに渡される。
b)パラメータ
Activity-付録に定義するPRM_ACTIVITYタイプの構造体。この構造体は、アクティビティハンドルおよび所有プロセスIDを含む。
c)戻り値
なし。
8.HRESULT OnConflict(PRM_ACTIVITY conflictingActivity, PRM_ACTIVITY*victimArray, ULONG ulNumVictims)
a)説明
これは、リソースマネージャが現在のアクティビティ優先度を用いてリソース競合を解決することができないときに呼び出される。次いでこのメソッドは、CconflictPolicy::OnConflict()を呼び出して、競合に対する解決を得る。競合が解決されると、ポリシーマネージャディスパッチエンジンによって新しいアクティビティ優先度がリソースマネージャ中に設定される。
b)パラメータ
conflictingActivity-これは、予約時にリソース競合を引き起こしたアクティビティである。これは、付録に定義するPRM_ACTIVITYタイプの構造体である。この構造体は、アクティビティハンドルおよび所有プロセスIDを含む。
VictimArray-犠牲者アクティビティであるPRM_ACTIVITY構造体の配列。
UINumVictims-犠牲者アクティビティの数。
c)戻り値
S_OK ポリシーによって競合が解決される場合。
E_FAIL そうでない場合。
【0190】
(CBASEPOLICYクラス中のメソッド)
1.virtual HRESULT GetPolicyName(LPTSTR*pBuffer, ULONG*pBufSize)=0
a)説明
ポリシーについての名前を得る。
b)パラメータ
PBuffer-ulBufSizeで指定されたサイズの、名前のコピー先であるバッファへのポインタ。
pBufSize-バッファのサイズ。ポリシー名のサイズがここにコピーされる。
c)戻り値
S_OK 成功の場合。
E_OUTOFMEMORY 十分なメモリが利用可能でない場合。この場合、必要とされるサイズがpBufSizeにコピーされる。
E_FAIL その他の場合。
2.virtual void OnNewActivity(CActivity*pActivity)
virtual void OnDestroyActivity(CActivity*pActivity)
virtual void OnRserveActivity(CActivity*pActivity)
virtual void OnUnreserveActivity(CActivity*pActivity)
a)説明
これらは、ポリシーマネージャディスパッチエンジン(CPolicyManager)がリソースマネージャから通知を受け取ったときに、ポリシーマネージャディスパッチエンジンによって呼び出される通知メソッドである。ポリシーは、これらの通知を受け取ると、CPolicyManager::Reprioritizeを呼び出すことによって優先度の再決定をトリガすることができる。ポリシーはまた、これらの通知を使用して非公開情報を更新することもできる。例えば、フォーカスポリシーは、そのOnNewActivity()が呼び出されたときに、そのフォーカス履歴追跡に新しいアクティビティを追加する。
b)パラメータ
PActivity:アクティビティハンドルと、所有プロセスIDと、その他のアクティビティ特有情報とを含むCActivityオブジェクトへのポインタ。
c)戻り値
なし。
【0191】
(CPOLICYクラス中のメソッド(CBasePolicy中のメソッドに加えて))
1.virtual HRESULT CalculatePriorities(CBucketList*pBucketList)=0
a)説明
このメソッドは、ポリシーマネージャディスパッチエンジン(CPolicyManager)がシステム中のアクティビティについて優先度を計算するために呼び出す。バケットリストは、最初、このメソッドが第1のポリシーに対して呼び出されたときのシステム中のアクティビティすべてが入った単一のバケットを含む。次いでポリシーは、このバケットリストをコンパートメント化する。次いで、コンパートメント化されたバケットリストは、次の処理のためにポリシーマネージャディスパッチエンジンによって他のポリシーに渡される。
b)パラメータ
PBucketList:アクティビティオブジェクトを含むバケットのリストであるCBucketListオブジェクトへのポインタ。
c)戻り値
S_OK 成功の場合。
E_FAIL そうでない場合。
【0192】
(CCONFLICTPOLICYクラス中のメソッド(CBasePolicy中のメソッドに加えて))
1.virtual BOOL OnConflict(CActivity*pConflictingActivity, CAcitivityList*victimActivityList)=0
a)説明
このメソッドは、リソースマネージャが現在のアクティビティ優先度で競合を解決することができないときに、ポリシーマネージャディスパッチエンジン(CPolicyManager)によって呼び出される。このメソッドは、競合するアクティビティが犠牲者リスト中のすべてのアクティビティよりも重要か、またはそうでないかを決定することによって、競合を解決する。
b)パラメータ
PConflictingActivity-予約中に競合を引き起こすアクティビティ。
VictimActivityList-競合アクティビティによる予約を満たすためにリソースを放棄する必要のある犠牲者アクティビティのリスト。
c)戻り値
TRUE PConflictingActivityが犠牲者リスト中のすべてのアクティビティよりも重要である場合。
FALSE そうでない場合。
【0193】
(リソースマネージャAPIの拡張)
1.HRESULT SetPolicyAttribute(IN HANDLE hActivity,
IN LPTSTR pAttrName,
IN DWORD dwType,
IN LPBYTE pData,
IN DWORD cbData)
a)説明
ポリシーデータベースにポリシー属性を追加するのに使用するメソッド。アプリケーションは、RMCreateActivity()から受け取ったアクティビティへのハンドルを使用して、ポリシー属性を指定することができる。
b)パラメータ
hActivity-RMCreateActivity()によって返されるアクティビティへのハンドル。
pAttrName-終了ヌル文字を含めたポリシー属性の名前を含むバッファへのポインタ。
dwType-指定の値に記憶されたデータタイプを示すDWORDコード。可能なタイプコードのリストについては、プラットフォームSDK文書中の「レジストリ値のタイプ」を参照されたい。
pData-指定の値についてのデータを含むバッファへのポインタ。
cbData-pDataバッファのサイズ。
2.HRESULT GetPolicyAttribute(IN HANDLE hActivity,
IN LPTSTR pAttrName,
OUT LPDWORD lpType,
OUT LPBYTE pData,
OUT LPDWORD lpcbData)
a)説明
ポリシーデータベースに対してポリシー属性を取り出すのに使用するメソッド。
b)パラメータ
hActivity-RMCreateActivity()によって返されるアクティビティへのハンドル。
pAttrName-終了ヌル文字を含めたポリシー属性の名前を含むバッファへのポインタ。
lpType-指定の値に記憶されたデータタイプを示すコードを受け取る変数へのポインタ。
pData-指定の値についてのデータを受け取るバッファへのポインタ。
lpcbData-返されるpDataバッファのサイズ。
【0194】
(インテリジェントインタフェースコンポーネントを備えたアーキテクチャ)
図2に示すリソース管理アーキテクチャ100では、アプリケーション32が、タスクを完了するのに必要なリソースを要求できるほど十分にインテリジェントであると仮定している。しかし、アプリケーションが、それらに必要なリソースの完全なまたはいくらかの知識を有さないことが望ましい場合もある。さらに、リソース管理アーキテクチャ100は、レガシーアプリケーションのある環境に実装される場合もある。このような状況では、レガシーアプリケーションが、リソース管理アーキテクチャの存在を知らなくてもこのようなアーキテクチャを利用できることが望ましい。
【0195】
図20に、リソース管理アーキテクチャ2000を示す。このアーキテクチャは図2と同様だが、アプリケーションとの間に入ってリソースを要求するインテリジェントインタフェースコンポーネント2002を備える。インテリジェントインタフェースコンポーネント2002は、カーネルレベルのコンポーネントでもよく(図示のように)、ユーザレベルのコンポーネントでもよい。
【0196】
インテリジェントインタフェースコンポーネント2002があると、アプリケーション32は、タスクを完了するのにどのリソースが必要かを知らなくてもよい。例えば、アプリケーション32(1)がTVアプリケーションであるとする。TVアプリケーションは、ストリーミングコンテンツをどのように表示装置上に表示するかについては関係があるが、ストリーミングコンテンツがそもそもどのように受信されて表示されるかについてはほとんど関心がない場合がある。すなわち、TVアプリケーションは、TV番組を受信して表示するために特定のチューナ、デコーダ、およびフィルタが必要であることを完全には意識していないことがある。
【0197】
このような場合、インタフェースコンポーネント2002は、テレビジョンの表示など一般レベルのアクティビティにどのリソースが必要かを理解するように設計される。したがって、アプリケーション32(1)が起動されたとき、アプリケーション32(1)は、インタフェースコンポーネント2002を呼び出してTV番組の表示を要求する。インタフェースコンポーネント2002は、リソースマネージャ102と対話して、アクティビティを生み出し、番組を表示するのに必要な同調リソース、デコードリソース、およびフィルタリングリソースの構成を構築する。この時点で、インタフェースコンポーネント2002は本質的に、リソースの予約を要求するためにリソースマネージャに対処する際、図3のプロセスに関して先に述べたようにコンシューマとして振舞う。
【0198】
(スケジュールおよびステートレスプロバイダを備えたアーキテクチャ)
図2に示すリソース管理アーキテクチャ100では、リソースプロバイダ104は、それがどのアクティビティに割り振られているか、割り振られたリソースの量、ならびに今割り振られているという概念について、何らかの認識を有することができる。しかし、必ずしもそうである必要はない。そうではなく、リソースプロバイダは、所有アプリケーションまたは割り振られたリソース量を知らないように構成することもできる。この情報は、リソースプロバイダ104のためにリソースマネージャ102によって維持される。この構成では、リソースプロバイダは「ステートレス」であるという。ステートレスなリソースプロバイダの使用が有益である理由の1つは、将来要求されるかもしれないあり得る構成をアーキテクチャが評価できるからである。
【0199】
図21にリソース管理アーキテクチャ2100を示すが、このアーキテクチャは、リソースプロバイダ2102(1)、2102(2)、...、2102(P)がステートレスである点で図2のアーキテクチャとは異なる。ステートレスなリソースプロバイダは、時間の概念なしで構成され、したがって、今要求されているのか将来要求されるのかについての認識を有さない。リソースプロバイダ2102は、所与の要求があった時にどのリソースがどれだけ使用されているかだけに関係し、この情報はリソースマネージャからリソースプロバイダに供給される。
【0200】
アーキテクチャ2100はまた、後の時点におけるリソースセットの割振りを予定するためのスケジューラ2104も備える。スケジューラ2104は、日時を追跡するためのカレンダーを備える。スケジューラ2104は、「もしも」シナリオを実行して、ステートレスリソースプロバイダ2102によって制御されるリソースが選択時に利用可能になるかどうかを決定するように構成される。例えば、スケジューラ2104が、午後8時などのプライムタイムのシステム使用を表す1つ以上のリソース構成のモックアップを作ると仮定する。スケジューラ2104は次いで、これらの構成にリソースを割り振ることができるかどうかリソースプロバイダ2102に尋ねる。プロバイダは時間の概念を有さず、その決定の根拠とすべきステートデータはリソースマネージャから渡されるので、プロバイダは単に、このような構成の集合を満たすことができるかどうかを示すだけである。
【0201】
(リソースマネージャAPI)
以下は、リソースマネージャについての例示的なAPIである。以下に述べるAPI呼出しは、カーネルモードで利用可能である。リソースマネージャAPIは、プロバイダインタフェース(セクションA)およびコンシューマインタフェース(セクションB)を含む。
【0202】
(A.プロバイダインタフェース)
プロバイダAPI呼出し
1.RmRegisterResource
a)プロトタイプ
NTSTATUS
RmRegisterResource (
IN LPCGUID ResourceType,
IN PUNICODE_STRING ResourceName,
IN PVOID ProviderContext,
IN ULONG AccumulatorSize,
IN RM_PROVIDER_CALLBACK CallbackTable,
OUT PRM_HANDLE ResourceHandle
);
b)説明
リソースプロバイダは、この関数を使用してリソースを登録する。各プロバイダは、サポートする各リソースタイプにつき1度、この関数を呼び出すべきである。
c)パラメータ
ResourceType:リソースのタイプを記述するリソースタイプGUIDへのポインタ。
ResourceName:リソースについてのユーザ可読の名前を指定するユニコードストリング。
ProviderContext:プロバイダコンテキストへのポインタ。このコンテキストポインタは、リソースマネージャからのすべてのコールバック中でプロバイダに返される。
AccumulatorSize:バイトで表したリソースアキュムレータバッファのサイズ。リソースマネージャがリソースアキュムレータを生み出す必要があるときは、リソースマネージャがリソースプロバイダのためにこのメモリ量を割り当てる。
CallbackTable:リソースマネージャがプロバイダにコールバックする際に使用するコールバック関数へのポインタを含む構造体へのポインタ。この構造体は以下のように定義される。
typedef struct_RM_PROVIDER_CALLBACK {
USHORT Version;
USHORT Size;
PRM_PROVIDER_ACCUMULATOR_ADD AccumulatorAdd;
PRM_PROVIDER_ACCUMULATOR_INIT AccumulatorInit;
PRM_PROVIDER_ACCUMULATOR_FREE AccumulatorFree;
PRM_PROVIDER_ACCUMULATOR_COPY AccumulatorCopy;
PRM_PROVIDER_RESERVE_NOTIFY NotifyOnReserve;
PRM_PROVIDER_UNRESERVE_NOTIFY NotifyOnUnreserve;
PRM_PROVIDER_REMOVE_NOTIFY NotifyOnRemove;
} RM_PROVIDER_CALLBACK, *PRM_PROVIDER_CALLBACK;
このコールバック構造体のフィールドは以下のとおりである。
Version:インタフェースのバージョン。プロバイダは、RmRegisterResourceを呼び出す前にこれをRM_VERSION_NUMに設定しなければならない。
Size:構造体のサイズ。プロバイダは、RmRegisterResourceを呼び出す前にこれを(RM_PROVIDER_CALLBACK)のサイズに設定しなければならない。
AccumulatorAdd:リソース属性をリソースアキュムレータに追加するために呼び出す、プロバイダへのコールバック。追加によってリソース割振り超過が生じない場合は、AccumulatorAddはアキュムレータを更新してSTATUS SUCCESSを返すべきである。追加によってリソース割振り超過が生じる場合は、プロバイダは、STATUS_RESOURCE_UNAVAILABLEを返し、バッファを未決定状態にしておくべきである。他のエラーがあれば、そのエラーは適切なエラーコードを返すべきである。
AccumulatorAdd関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
AccumulatorAdd (
IN PVOID ProviderContext,
IN PVOID AttributeBuffer,
IN OUT PVOID Accumulator
);
AccumulatorInit:リソースアキュムレータバッファを初期化するために呼び出す、プロバイダへのコールバック。NULLの場合は、リソースマネージャはバッファを0に初期化する。このコールバックは、リソースアキュムレータバッファが使用される前にリソースアキュムレータバッファに何らかの特別な初期化処理を施す機会をリソースプロバイダに与える。
AccumulatorInit関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
AccumulatorInit (
IN PVOID ProviderContext,
IN OUT PVOID Accumulator
);
AccumulatorFree:リソースマネージャがアキュムレータバッファを開放する前に呼び出す、プロバイダへのコールバック。NULLの場合は、リソースマネージャはアキュムレータバッファを開放するときに何の特別な操作も行わない。このコールバックは、アキュムレータバッファ内のフィールドでポイントされるメモリを解放するかそうでない場合に割振り解除する機会を、リソースプロバイダに与える。リソースプロバイダは、リソースアキュムレータバッファを開放しようとすべきではない。
AccumulatorFree関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
AccumulatorFree (
IN PVOID ProviderContext,
IN OUT PVOID Accumulator
);
AccumulatorCopy:あるリソースアキュムレータバッファを別のリソースアキュムレータバッファにコピーするために呼び出す、プロバイダへのコールバック。NULLの場合は、リソースマネージャは単にバッファを直接コピーするだけである(例えばmemcpyを使用して)。このコールバックは、アキュムレータバッファ内のフィールドでポイントされるメモリをコピーする機会をリソースプロバイダに与える。
AccumulatorCopy関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
AccumulatorCopy (
IN PVOID ProviderContext,
IN PVOID SrcAccumulator,
IN OUT PVOID DestAccumulator
);
プロバイダは、DestAccumulatorを初期化されていないメモリとみなすべきである。具体的には、DestAccumulatorバッファは、AccumulatorCopy関数に渡される前にはどんなAccumulatorInit関数にも渡されない。
NotifyOnReserve:リソースが予約されたことをプロバイダに知らせるための、プロバイダへのコールバック。
NotifyOnReserve関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
NotifyOnReserve (
IN PVOID ProviderContext,
IN PVOID AttributeBuffer,
);
プロバイダは、STATUS_RESOURCE_UNAVAILABLEを返すことにより、この呼出しに対して失敗することがある。例えば、デバイスが故障し、プロバイダがリソースを登録解除できる前にこの通知を受けた場合である。この場合、RMは予約をロールバックする。最も早い機会で、プロバイダはリソースカウントを更新する。
NotifyOnUnReserve:前に予約されたリソース量が未予約であることをプロバイダに知らせるための、プロバイダへのコールバック。
NotifyOnReserve関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
NotifyOnReserve (
IN PVOID ProviderContext,
IN PVOID AttributeBuffer,
);
NotifyOnRemove:アクティビティ内のエラーのせいで、またはツリー中のより高レベルのリソースが除去されたせいで、またはプロバイダがRmRemoveResourceFromConfigurationを呼び出したせいで、前に追加されたリソースが除去されることをプロバイダに知らせるための、プロバイダへのコールバック。
NotifyOnRemove関数についてのプロトタイプは、以下のとおりである。
NTSTATUS
NotifyOnRemove (
IN PVOID ProviderContext,
IN PVOID AttributeBuffer,
);
プロバイダは、このコールバックを使用して、このリソースに関連するどんなデータ構造も解放すべきである。
注1:リソースマネージャは、NotifyOnRemove関数をRMRemoveResourceFromConfiguration内から呼び出すことになる。したがってプロバイダは、RMRemoveResourceFromConfigurationから戻った後は、この予約に関連するどんなデータ構造も解放しようとすべきではない。
注2:リソースマネージャは、NotifyOnRemove関数をRmAddResournceToConfiguration内の失敗の副作用として呼び出すことはない。したがって、何らかの理由でRmAddResourceToConfigurationが失敗した場合は、プロバイダは、このエラーの処理の一部としていかなるデータ構造のクリーンアップをも処理すべきである。
ResourceHandle:リソースマネージャへの他の呼出しで使用する、RmRegisterResourceから返されたハンドル。
d)戻り値
STATUS_SUCCESS:リソースの登録が成功した場合。
他の戻り値はどれもエラーを示す。
2.RmUnregisterResource
a)プロトタイプ
NTSTATUS
RmUnregisterResource (
IN RM_HANDLE ResourceHandle
);
b)説明
リソースプロバイダは、そのリソースをリソースマネージャから登録解除する必要があるときに、この関数を呼び出すべきである。プロバイダは、この呼出しを行う前に、未処理のリソースがあればRmRemoveResourceFromConfigurationを使用してすべての構成から除去すべきである。プロバイダがこれを行わない場合、RMは、あたかもプロバイダがRmRemoveResourceFromConfigurationを呼び出したかのように自動的にすべてのリソースをプロバイダからパージする。
c)パラメータ
ResourceHandle:RmRegisterResourceから元々返されたハンドル。
d)戻り値
STATUS_SUCCESS:リソースの登録解除が成功した。
3.RmLockResource
NTSTATUS
RmLockResource (
IN RM_HANDLE ResourceHandle,
);
a)説明
リソースプロバイダは、プロバイダが表すリソースの量が変化したときなどに、いずれかの内部状態を修正する前にこの関数を呼び出すべきである。これにより、リソースマネージャは、プロバイダのいかなる内部状態の変化とも同期することができる。
b)パラメータ
ResourceHandle:RmRegisterResourceから元々返されたハンドル。
c)戻り値
STATUS_SUCCESS:リソースのロックが成功した。
4.RmUnlockResource
NTSTATUS
RmUnlockResource (
IN RM_HANDLE ResourceHandle,
IN BOOL Update
);
a)説明
リソースプロバイダは、プロバイダが表すリソースの量が変化したときなどに、いずれかの内部状態の修正を完了する前にこの関数を呼び出すべきである。これにより、リソースマネージャは、リソース可用性の変化に応答してシステム中のアクティビティすべてのリソース使用を再計算することができる。
b)パラメータ
ResourceHandle:RmRegisterResourceから元々返されたハンドル。
Update:リソースの量が変化した場合、このパラメータをTRUEに設定すべきである。これは、システムのリソース使用を再計算するようにリソースマネージャに伝えることになる。
c)戻り値
STATUS_SUCCESS:リソースのロック解除が成功した。
5.RmAddResourceToConfiguration
a)プロトタイプ
NTSTATUS
RmAddResourceToConfiguration (
IN PRM_ACTIVITY Activity,
IN PVOID Tag OPTIONAL,
IN RM_HANDLE ParentId,
IN RM_RESOURCE ResourceHandle,
IN PVOID AttributeBuffer OPTIONAL,
IN ULONG AttributeBufferSize,
OUT PRM_HANDLE ResourceId
);
b)説明
構成にリソースを追加する。
c)パラメータ
Activity:前に生み出されたアクティビティオブジェクト。
Tag:追加されつつある子を一意に識別/タグ付けするために親から供給されるポインタ。
ParentId:追加されつつあるリソースの親のリソースハンドル。
ResourceHandle:RmRegisterResourceから返されたハンドル。
AttributeBuffer:プロバイダだけに理解されるデータ(例えばリソース量)を含むバッファへのポインタ。AttribributeBufferSizeが0の場合、これはNULLになるはずである。
リソースマネージャは将来のコールバック関数すべてについてこのバッファの内部コピーを作成することに留意されたい。したがって、リソースプロバイダがこのバッファをそれ自体のスタック上に生み出すこと、および/またはRmAddResourceToConfigurationから戻った後でそれを廃棄することは許容される。しかしリソースマネージャは、この構造体のいずれかの内部フィールドにポイントされたデータをコピーすることはない。このようなデータはプロバイダによって維持されなければならず、いかなるプロセスコンテキスト内でもアクセス可能でなければならない。
AttributeBufferSize:バイトで表したAttributeBufferのサイズ。バッファにデータがない場合は0であるべきである。
ResourceId:このリソース割振りを表すためにこの呼出しによって返されるハンドル。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
6.RmRemoveResourceFromConfiguration
a)プロトタイプ
NTSTATUS
RmRemoveResourceFromConfiguration (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceId
);
b)説明
構成からリソース割振りを除去する。リソースがプロバイダに割り当てられている場合は、自動的に解放される。
c)パラメータ
Activity:前に生み出されたアクティビティオブジェクト。
ResourceId:RmAddResourceToConfigurationから返されたハンドル。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
7.RmSetResourceAttributes
a)プロトタイプ
NTSTATUS
RmSetResourceAttributes (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceID,
IN PVOID AttributeBuffer OPTIONAL,
IN ULONG AttributeBufferSize
);
b)説明
リソースに関する属性を変更する。
c)パラメータ
Activity:前に生み出されたアクティビティオブジェクト。
ResourceID:RmAddResourceToConfigurationから返されたハンドル。
AttributeBuffer:新しい属性を含むバッファへのポインタ。AttributeBufferSizeが0の場合は、NULLになるはずである。
AttributeBufferSize:バイトで表したバッファサイズ。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
8.RmgGetDefaultActivityAndConfiguration
a)プロトタイプ
NTSTATUS
RmGetDefaultActivityAndConfiguration (
OUT PRM_ACTIVITY *Activity,
OUT PRM_HANDLE ConfigId
);
b)説明
デフォルトのアクティビティおよび構成を返す。プロバイダは、レガシークライアントの場合など、リソースを追加すべきアクティビティおよび構成がわからない場合に、この呼出しを使用することができる。
c)パラメータ
Activity:デフォルトのアクティビティを返す。
ConfigId:デフォルトの構成を返す。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
9.RmGetAttributeBuffer
a)プロトタイプ
NTSTATUS
RmGetAttributeBuffer (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceId,
IN PVOID *Buffer
);
b)説明
リソース記述子に関連する属性バッファを得る。
c)パラメータ
Activity:前に生み出されたアクティビティへのポインタ。
ResourceID:上の引数によるアクティビティ内のリソース記述子へのハンドル。
Buffer:属性バッファへのポインタを受け取る変数。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
【0203】
(B.コンシューマインタフェース)
コンシューマAPI呼出し
1.RmCreateActivity
a)プロトタイプ
NTSTATUS
RmCreateActivity (
OUT PRM_ACTIVITY ActivityObject,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN REFGUID TypeGuid
);
b)説明
この関数は新しいアクティビティオブジェクトを生み出す。
c)パラメータ
ActivityObject:生み出されるアクティビティオブジェクトへのポインタがここに返される。
DesiredAccess:アクセス権。例えばACTIVITY_QUERY_STATEやACTIVITY_MODIFY_STATE。
ObjectAttributes:名前やセキュリティなどの標準的なオブジェクト属性を供給する。
TypeGuid:アクティビティのタイプ。事前定義済みタイプのセットのうちの1つ。アクティビティタイプを使用して、他のアクティビティに対する相対的なアクティビティの優先度を決定するのを補助することができる。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
e)注
単一のリソースコンシューマが複数のアクティビティを生み出すことができる。
2.RmReserveResources
a)プロトタイプ
NTSTATUS
RmReserveResources (
IN PRM_ACTIVITY Activity,
IN OUT PRM_ACTIVITY_STATUS ActivityStatus,
IN PKEVENT Event,
IN RM_HANDLE DesiredConfigId,
);
b)説明
RMは、アクティビティ内の構成のためのリソースを予約する。選択される構成は、リソースの可用性およびアクティビティの相対的な優先度に基づく。呼出し元は、任意選択で有効なConfigIdを供給することができ、その場合、RMはその構成を予約することを試みるだけであり、そうでない場合は失敗する。入力時にアクティビティがすでに十分な構成を有する場合(すなわちリソースが構成に割り当てられている場合)、RMはこれを、より望ましい構成が利用可能かどうか調べる要求であると解釈する。RMは、少なくとも既存の構成がリターン時にまだ利用可能であることを保証する(優先度のより高いアクティビティがリソースを必要としているなど、他の理由で既存の構成が立ち退かされていないと仮定して)。
この呼出しは非同期である。ActivityStatusおよびEventのパラメータを使用することにより、この呼出し元は、要求を満たすことができるかどうかをRMが決定するまで待機することができる。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ActivityStatus:この構造体は、要求が完了した後でRMが要求の状態を返すのに使用する。この構造体は以下のように定義される。
typedef struct_RM_ACTIVITY_STATUS
{
NTSTATUS Status;
ULONG Information;
} RM_ACTIVITY_STATUS, *PRM_ACTIVITY_STATUS;
RmReserveResourcesと共に使用されるとき、Statusフィールドは、操作結果を保持するのに使用され、Informationフィールドは、RMが満たした構成IDを受け取る。Informationフィールドは、Statusの値がSTATUS_SUCCESSである場合のみ有効である。
Event:RMがすぐに予約を完了することができない場合、呼出し元はこのイベントを待機して、操作が完了したときを決定すべきである。
DesiredConfigId:呼出し元は、このパラメータを具体的な構成IDで初期化することにより、そのIDの予約を選択することができる。そうでない場合は0で初期化すべきである。
d)戻り値
STATUS_SUCCESS:RMがアクティビティ内のいずれかの構成を満たすことができる場合。
STATUS_RESOURCE_UNAVAILABLE:優先度のより高い他のアクティビティにリソースが割り当てられているので、現在どの構成も満たすことができない。
STATUS_PENDING:RMがまだ操作を完了することができない場合。この場合、呼出し元は、操作が完了するまでEventハンドルを待機すべきである。
3.RmUnreserveResources
a)プロトタイプ
NTSTATUS
RmUnreserveResources (
IN PRM_ACTIVITY Activity
);
b)説明
アクティビティ内の構成に関連するリソースを予約解除する。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
d)戻り値
STATUS_SUCCESSまたはエラーコード。
4.RmGetActivityStatus
a)プロトタイプ
NTSTATUS
RmGetActivityStatus (
IN PRM_ACTIVITY Activity,
IN OUT PRM_ACTIVITY_STATUS ActivityStatus,
IN PKEVENT Event
);
b)説明
アクティビティの状態の変化に関する情報を返す。この呼出しは非同期である。ActivityStatusおよびEventのパラメータを使用することにより、この呼出し元は、アクティビティの状態が変化したとRMが決定するまで待機することができる。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ActivityStatus:この構造体は、要求が完了した後でRMが要求の状態を返すのに使用する。この構造体は以下のように定義される。
typedef struct_RM_ACTIVITY_STATUS
{
NTSTATUS Status;
ULONG Information;
} RM_ACTIVITY_STATUS, *PRM_ACTIVITY_STATUS;
RmGetActivityStatusと共に使用されるとき、Statusフィールドは、操作結果を保持するのに使用され、Informationフィールドは理由を受け取る。例として、RM_RELEASE_CONFIGURATIONやRM_BETTER_CONFIGURATIONなどが挙げられる。Informationフィールドは、Statusの値がSTATUS_SUCCESSである場合のみ有効である。
Event:保留中の状態が現在ない場合、呼出し元はこのイベントを待機して、新しい状態情報が入手可能になったときを決定すべきである。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
5.RmCancelRequest
a)プロトタイプ
NTSTATUS
RmCancelRequest(
IN PRM_ACTIVITY Activity,
);
b)説明
この呼出しは、任意の保留中の非同期呼出しをキャンセルするのに使用することができる。現在、RmReserveResourcesおよびRmGetResourceStatusだけが非同期として定義されている。
この呼出しは、RmCancelRequestを呼び出す同じスレッドから開始された任意の保留中RM要求をキャンセルする。RMがトランザクションをキャンセルするときは、RM_ACTIVITY_STATUS構造体のStatusフィールドをSTATUS_CANCELLEDに設定し、対応するイベントを信号で知らせる。
トランザクションをキャンセルした後、呼出し元は、RM_ACTIVITY_STATUS構造体のStatusフィールドを常にチェックして、トランザクションが実際にキャンセルされたかどうか、またはトランザクションがキャンセルされる前にうまく完了したかどうかを検証すべきである。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
d)戻り値
STATUS_SUCCESS:RMが指定のタイプのトランザクションをすべてキャンセルした。
6.RmCreateConfiguration
a)プロトタイプ
NTSTATUS
RmCreateConfiguration (
IN PRM_ACTIVITY Activity,
IN ULONG Merit,
OUT PRM_HANDLE ConfigId
);
b)説明
指定のアクティビティ内に構成を生み出す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
Merit:このアクティビティ内の他の構成に対して相対的なこの構成の重要性。
ConfigId:生み出される構成へのハンドル。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
7.RmRemoveConfiguration
a)プロトタイプ
NTSTATUS
RmRemoveConfiguration (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ConfigId
);
b)説明
指定のアクティビティから構成を除去する。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ConfigId:除去される構成へのハンドル。予約されているリソースがあれば、RMは自動的にクリーンアップする。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
8.RmGetResourceParent
a)プロトタイプ
NTSTATUS
RmGetResourceParent (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceIdIn,
OUT PRM_HANDLE ResourceIdReturned
);
b)説明
ResourceIdInの親ResourceIdを返す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ResourceIdIn:ResourceIdへのハンドル。
ResourceIdReturned:ResourceIdへのポインタ。得られるResourceIdがこの位置に返される。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
9.RmGetResourceChild
a)プロトタイプ
NTSTATUS
RmGetResourceChild (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceIdParent,
IN RM_HANDLE ResourceIdIn,
OUT PRM_HANDLE ResourceIdReturned
);
b)説明
ResourceIdInの第1の子ResourceIdを返す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ResourceIdParent:ResourceIdまたはConfigurationIdへのハンドル。
ResourceIdIn:ResourceIdへのハンドル。1に設定された場合、関数は第1の子リソースを返す。
ResourceIdReturned:ResourceIdへのポインタ。得られるResourceIdがこの位置に返される。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
10. RmGetResourceInformation
a)プロトタイプ
NTSTATUS
RmGetResourceInformation (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceId,
IN RM_RESOURCE_INFO_TYPE ResourceInfoType,
IN ULONG AvailableBufferSize,
OUT ULONG *RequiredBufferSize,
OUT PVOID *ResourceInfo
);
b)説明
指定のResourceIdに関する情報を返す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ResourceId:ResourceIdまたはConfigurationIdへのハンドル。
ResourceInfoType:どのタイプの情報を返すかを指定するenum値。現在定義されている値およびそれらが返す対応バッファは、以下のとおりである。
ResourceInfo_Default
バッファ中に以下の構造体を返す。
typedef struct_RM_RESOURCE_INFO_DEFAULT
{
BOOL FailedReservation; //このリソースが、その最後の予約を失敗した(This resource failed its last reservation)
BOOL DescendantFailedReservation; //子孫が、その最後の予約を失敗した(A descendant failed its last reservation)
BOOL PeerFailedReservation; //同じプロバイダの仲間が、最後の予約を失敗した(Peer of same provider failed last reservation)
GUID ResourcePoolGUID; //リソースGUID(Resource GUID)
RM_HANDLE ResourcePoolHandle; //プロバイダのハンドル(Handle of provider)
ULONG TagLength; //タグバッファのサイズ(Size of tag buffer)
} RM_RESOURCE_INFO_DEFAULT;
ResourceInfo_Tag
リソースが追加されたときに元々指定されたタグを返す。
ResourceInfo_Amount
バッファ中に以下の構造体を返す。
typedef struct_RM_RESOURCE_INFO_AMOUNT
{
ULONG AmountReserved;
ULONG AmountInSystem;
ULONG AmountAvailable;
ULONG AmountUsed;
ULONG AmountUsedPeak;
WCHAR AmountLabel[32];
WCHAR ProviderDescription[128];
} RM_RESOURCE_INFO_AMOUNT;
AvailableBufferSize:バイトで表したバッファサイズ。
RequiredBufferSize:バイトで表した、バッファ中に返されるデータのサイズ。
ResourceInfo:RMが要求のデータを記憶することになるバッファへのポインタ。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
11.RmGetLastAccumulator
a)プロトタイプ
NTSTATUS
RmGetLastAccumulator(
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ProviderHandle,
OUT PVOID *AccumulatorBuffer
);
b)説明
指定されたアクティビティのリソースのいずれかを追加する前の、最後のアキュムレータバッファを返す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ProviderHandle:RmRegisterResourceから返されたハンドル。
AccumulatorBuffer:リターンが成功したときにアキュムレータバッファへのポインタがここに記憶される。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
e)コメント
この呼出しは、リソース不足のせいでアクティビティが通常なら立ち退かされることになる場合に、リソースプロバイダが再度アクティビティ内のリソースのバランスをとることができるようにするために、RmGetResourcePeerと共に使用することができる。
12.RmGetResourcePeer
a)プロトタイプ
NTSTATUS
RmGetResourcePeer (
IN PRM_ACTIVITY Activity,
IN RM_HANDLE ResourceProvider,
IN RM_HANDLE ResourceIdIn,
OUT PRM_HANDLE ResourceIdReturned
);
b)説明
指定されたアクティビティ内の、指定されたリソースプロバイダを有する次のリソースのResourceIdを返す。
c)パラメータ
Activity:前に生み出されたアクティビティのハンドル。
ResourceProvider:リソースプロバイダへのハンドル。
ResouceIdIn:ResouceIdへのハンドル。このパラメータが1に設定された場合、関数は指定のプロバイダに関連する第1のリソースを返す。
ResourceIdReturned:ResouceIdへのポインタ。得られるResourceIdがこの位置に返される。
d)戻り値
STATUS_SUCCESSまたは適切なエラーコード。
e)コメント
この呼出しを実装すると、以下のようなRmGetResourceInformationの変更が引き起こされることがある。
1.リソースに関連する属性バッファを返すためにResourceInfo_AttributesのResourceInfoTypeを追加する。
2.RM_RESOURCE_INFO_DEFAULT構造体にULONG AttributeBufferLengthフィールドを追加する。
【0204】
(結び)
以上の説明では、構造上の特徴、および/または方法の動作に特有の言葉を使用したが、頭記の特許請求の範囲に定義する本発明は、述べた具体的な特徴または動作に限定されるものではないことを理解されたい。そうではなく、これらの具体的な特徴および動作は、本発明を実施する例示的な形として開示する。
【図面の簡単な説明】
【図1】 一実施形態による、娯楽コンピューティングユニットの形をとる例示的なコンピューティングユニットのブロック図である。
【図2】 図1のコンピューティングユニットによって実現される例示的なリソース管理アーキテクチャのブロック図である。
【図3】 図2のリソース管理アーキテクチャによって実現される例示的なリソース管理方法のステップを記述する流れ図である。
【図4】 述べた実施形態による例示的なリソース予約プロセスを示すブロック図である。
【図5】 述べた実施形態による、リソース予約プロセスで利用される例示的な種々の構造を示すブロック図である。
【図6】 述べた実施形態による、優先度ベースのプリエンプトを用いたリソース割振り方法におけるステップを記述する流れ図である。
【図7】 述べた実施形態による、優先度ベースのプリエンプトを用いたリソース割振りについてのシナリオを示すブロック図である。
【図8】 述べた実施形態による、優先度ベースのプリエンプトを用いたリソース割振りについてのシナリオを示すブロック図である。
【図9】 述べた実施形態による、優先度ベースのプリエンプトを用いたリソース割振りについてのシナリオを示すブロック図である。
【図10】 述べた実施形態による、優先度ベースのプリエンプトを用いたリソース割振りについてのシナリオを示すブロック図である。
【図11】 述べた実施形態による、より好ましい構成からより好ましくない構成に動的にダウングレードする方法におけるステップを記述する流れ図である。
【図12】 述べた実施形態による、より好ましくない構成にダウングレードする方法におけるシナリオの1つを示すブロック図である。
【図13】 述べた実施形態による、より好ましくない構成からより好ましい構成に動的にアップグレードする方法におけるステップを記述する流れ図である。
【図14】 述べた実施形態による、より好ましい構成にダウングレードする方法におけるシナリオの1つを示すブロック図である。
【図15】 構成を構築する方法におけるシナリオの1つを示すブロック図である。
【図16】 述べた実施形態による、構成を構築する方法におけるステップを記述する流れ図である。
【図17】 述べた実施形態による、エラー報告方法におけるステップを記述する流れ図である。
【図18】 例示的なポリシー管理アーキテクチャのブロック図であって、図2のリソース管理アーキテクチャを用いて実現されるポリシーマネージャをさらに示す図である。
【図19】 図18のポリシー管理アーキテクチャによって実現される例示的なポリシー管理方法におけるステップを記述する流れ図である。
【図20】 図2と同様だがインテリジェントインタフェースコンポーネントをさらに備える、別の例示的なリソース管理アーキテクチャのブロック図である。
【図21】 図2と同様だがスケジューリングコンポーネントをさらに備える、別の例示的なリソース管理アーキテクチャのブロック図である。

Claims (18)

  1. リソース管理アーキテクチャを有するシステムであって、
    リソースに関連する複数のリソースプロバイダと、
    前記リソースプロバイダから提供されるリソースを利用する複数のコンシューマと、
    各々が前記複数のリソースプロバイダの少なくとも1つのリソースプロバイダを識別するリソース構成に関して前記リソースプロバイダから提供されるリソースへのアクセスを前記コンシューマのために調停するリソースマネージャと
    含み、
    前記コンシューマが前記リソースマネージャにおいてアクティビティを生み出し、各アクティビティは、対応するコンシューマによって実施されるタスクと関連し、前記アクティビティは、前記調停のために使用される優先度の情報を有し、
    前記コンシューマが前記リソースマネージャにおいて各アクティビティについての1つまたは複数の構成を構築し、各構成がタスクを実行する1つまたは複数のリソースのセットを識別し、前記各構成は、1つまたは複数のリソース記述子を含み、前記各記述子は、前記リソースに関連するリソースプロバイダの識別子、および前記タスクを実行するのに必要なリソースの量を含むデータを保持することを特徴とするシステム。
  2. 前記リソースプロバイダおよび前記リソースマネージャがカーネルレベルに存在することを特徴とする請求項1に記載のシステム。
  3. 少なくとも1つの前記コンシューマがアプリケーションプログラムを含むことを特徴とする請求項1に記載のシステム。
  4. 少なくとも1つのリソースプロバイダが、少なくとも1つの他のリソースプロバイダから提供されるリソースのコンシューマとして行動することを特徴とする請求項1に記載のシステム。
  5. 前記コンシューマが、前記リソースを予約する要求を前記リソースマネージャに提出することを特徴とする請求項1に記載のシステム。
  6. 前記リソースプロバイダが、前記コンシューマが前記リソースを最初に予約せずに使用することができないようにすることを特徴とする請求項5に記載のシステム。
  7. 前記リソースプロバイダが前記リソースマネージャに登録することを特徴とする請求項1に記載のシステム。
  8. 前記リソースプロバイダの各々が、割振りに利用可能な関連するリソースの量を決定するリソース定量化部を含むことを特徴とする請求項1に記載のシステム。
  9. 前記リソース定量化部が、割振りにいくつのリソースが利用可能かについてのカウントを維持するカウンタを含むことを特徴とする請求項8に記載のシステム。
  10. 前記リソース定量化部が、リソースを割振りに利用できる期間を追跡する時間追跡コンポーネントを含むことを特徴とする請求項8に記載のシステム。
  11. 前記リソース定量化部が、割振りに利用可能なリソースのパーセンテージを追跡するパーセンテージ追跡コンポーネントを含むことを特徴とする請求項8に記載のシステム。
  12. 前記リソースマネージャがアプリケーションプログラムインタフェースを公開し、前記リソースプロバイダおよび前記コンシューマが、前記アプリケーションプログラムインタフェースを介して前記リソースマネージャへの呼出しを行うことを特徴とする請求項1に記載のシステム。
  13. 割振りポリシーを確立するポリシーマネージャをさらに含み、前記リソースマネージャが前記割振りポリシーを使用して前記リソースへのアクセスを調停することを特徴とする請求項1に記載のシステム。
  14. 前記コンシューマのために1つまたは複数のリソースのセットを要求するインタフェースコンポーネントをさらに含み、前記インタフェースコンポーネントが前記リソースマネージャに要求を提出することを特徴とする請求項1に記載のシステム。
  15. リソース管理アーキテクチャを有するシステムであって、
    リソースに関連する複数のリソースプロバイダと、
    前記リソースプロバイダから提供されるリソースを利用する複数のコンシューマと、
    各々が前記複数のリソースプロバイダの少なくとも1つのリソースプロバイダを識別するリソース構成に関して前記リソースプロバイダから提供されるリソースへのアクセスを前記コンシューマのために調停するリソースマネージャと
    を含み、
    前記コンシューマの1つが、実行されるタスクに関連して前記リソースマネージャにおいてアクティビティを生み出し、かつ該アクティビティの複数の構成を構築し、前記アクティビティは、前記調停のために使用される優先度の情報を有し、各構成が該タスクを実行する1つまたは複数のリソースのセットを識別し、
    前記リソースマネージャは、特定のリソースをアクティビティに再割振りし、またはアクティビティから取り去って再割振りするために、アクティビティを前記構成のうちの1つから前記構成のうちの別の1つに切り替えるように構成されることを特徴とするシステム。
  16. 前記リソースマネージャは、前記ある構成を前記他の構成に自動的に切り替えるように構成されることを特徴とする請求項15に記載のシステム。
  17. 前記構成は、好ましさ(preference)の順にランク付けされ、前記リソースマネージャは、より好ましい構成からより好ましくない構成に前記アクティビティを切り替えるように構成されることを特徴とする請求項15に記載のシステム。
  18. リソース管理アーキテクチャを有するシステムであって、
    リソースに関連する複数のリソースプロバイダと、
    前記リソースプロバイダから提供されるリソースを利用する複数のコンシューマと、
    各々が前記複数のリソースプロバイダの少なくとも1つのリソースプロバイダを識別するリソース構成に関して前記リソースプロバイダから提供されるリソースへのアクセスを前記コンシューマのために調停するリソースマネージャと
    を含み、
    前記コンシューマが前記リソースマネージャにおいてアクティビティを生み出し、各アクティビティは、対応するコンシューマによって実施されるタスクと関連し、前記アクティビティは、前記調停のために使用される優先度の情報を有し、
    前記コンシューマが前記リソースマネージャにおいて各アクティビティについての1つまたは複数の構成を構築し、各構成がタスクを実行する1つまたは複数のリソースのセットを識別し、前記各構成は、1つまたは複数のリソース記述子を含み、前記各記述子は、前記リソースに関連するリソースプロバイダの識別子、および前記タスクを実行するのに必要なリソースの量を含むデータを保持し、
    前記リソースプロバイダは、実時間の概念なしで構成され、
    その後になって前記リソースのセットの割振りをスケジュールするスケジューリングコンポーネントをさらに含むことを特徴とするシステム。
JP2001580657A 2000-05-02 2001-04-02 リソースマネージャアーキテクチャ Expired - Lifetime JP5065566B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/563,726 US6799208B1 (en) 2000-05-02 2000-05-02 Resource manager architecture
US09/563,726 2000-05-02
PCT/US2001/010605 WO2001084301A2 (en) 2000-05-02 2001-04-02 Resource manager architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012093403A Division JP2012138126A (ja) 2000-05-02 2012-04-16 リソースマネージャアーキテクチャ

Publications (2)

Publication Number Publication Date
JP2004508611A JP2004508611A (ja) 2004-03-18
JP5065566B2 true JP5065566B2 (ja) 2012-11-07

Family

ID=24251651

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2001580657A Expired - Lifetime JP5065566B2 (ja) 2000-05-02 2001-04-02 リソースマネージャアーキテクチャ
JP2012093403A Pending JP2012138126A (ja) 2000-05-02 2012-04-16 リソースマネージャアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012093403A Pending JP2012138126A (ja) 2000-05-02 2012-04-16 リソースマネージャアーキテクチャ

Country Status (5)

Country Link
US (3) US6799208B1 (ja)
EP (1) EP1342156A2 (ja)
JP (2) JP5065566B2 (ja)
AU (1) AU2001249769A1 (ja)
WO (1) WO2001084301A2 (ja)

Families Citing this family (299)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
US8019870B1 (en) * 1999-08-23 2011-09-13 Oracle America, Inc. Approach for allocating resources to an apparatus based on alternative resource requirements
US7111297B1 (en) * 2000-05-02 2006-09-19 Microsoft Corporation Methods and architectures for resource management
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US7137119B1 (en) 2000-05-02 2006-11-14 Microsoft Corporation Resource manager architecture with resource allocation utilizing priority-based preemption
US7058947B1 (en) * 2000-05-02 2006-06-06 Microsoft Corporation Resource manager architecture utilizing a policy manager
US7284244B1 (en) * 2000-05-02 2007-10-16 Microsoft Corporation Resource manager architecture with dynamic resource allocation among multiple configurations
US7418489B2 (en) * 2000-06-07 2008-08-26 Microsoft Corporation Method and apparatus for applying policies
US7174557B2 (en) 2000-06-07 2007-02-06 Microsoft Corporation Method and apparatus for event distribution and event handling in an enterprise
US7171459B2 (en) * 2000-06-07 2007-01-30 Microsoft Corporation Method and apparatus for handling policies in an enterprise
US7444395B2 (en) * 2000-06-07 2008-10-28 Microsoft Corporation Method and apparatus for event handling in an enterprise
US7299259B2 (en) 2000-11-08 2007-11-20 Genesys Telecommunications Laboratories, Inc. Method and apparatus for intelligent routing of instant messaging presence protocol (IMPP) events among a group of customer service representatives
US6822945B2 (en) 2000-11-08 2004-11-23 Genesys Telecommunications Laboratories, Inc. Method and apparatus for anticipating and planning communication-center resources based on evaluation of events waiting in a communication center master queue
US7929562B2 (en) 2000-11-08 2011-04-19 Genesis Telecommunications Laboratories, Inc. Method and apparatus for optimizing response time to events in queue
AU2002230616A1 (en) * 2000-12-06 2002-06-18 Waveset Technologies, Inc. System and method for managing information objects
US20020087366A1 (en) * 2000-12-30 2002-07-04 Collier Timothy R. Tentative-hold-based protocol for distributed transaction processing
US20020091783A1 (en) * 2001-01-10 2002-07-11 Garland Stuart Mandel Customer definable precedence and preemption for message services
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US7302634B2 (en) 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US7024662B2 (en) 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
US20020143914A1 (en) * 2001-03-29 2002-10-03 Cihula Joseph F. Network-aware policy deployment
US7076085B1 (en) 2001-04-12 2006-07-11 Ipix Corp. Method and apparatus for hosting a network camera including a heartbeat mechanism
US7015949B1 (en) 2001-04-12 2006-03-21 Ipix Corporation Method and apparatus for hosting a network camera with refresh degradation
US8026944B1 (en) * 2001-04-12 2011-09-27 Sony Corporation Method and apparatus for hosting a network camera with image degradation
US7024488B1 (en) 2001-04-12 2006-04-04 Ipix Corporation Method and apparatus for hosting a network camera
US7177448B1 (en) 2001-04-12 2007-02-13 Ipix Corporation System and method for selecting and transmitting images of interest to a user
US6785756B2 (en) * 2001-05-10 2004-08-31 Oracle International Corporation Methods and systems for multi-policy resource scheduling
US20020184535A1 (en) * 2001-05-30 2002-12-05 Farah Moaven Method and system for accessing a resource in a computing system
US20030009769A1 (en) * 2001-06-25 2003-01-09 Debra Hensgen Trusted application level resource advisor
US7243369B2 (en) 2001-08-06 2007-07-10 Sun Microsystems, Inc. Uniform resource locator access management and control system and method
US20030033398A1 (en) * 2001-08-10 2003-02-13 Sun Microsystems, Inc. Method, system, and program for generating and using configuration policies
US20030033346A1 (en) * 2001-08-10 2003-02-13 Sun Microsystems, Inc. Method, system, and program for managing multiple resources in a system
US7694303B2 (en) * 2001-09-25 2010-04-06 Sun Microsystems, Inc. Method for dynamic optimization of multiplexed resource partitions
DE10149977A1 (de) * 2001-10-10 2003-04-24 Siemens Ag Verfahren zum Zugriff auf Nutzerdaten, zugehörige Datenverarbeitungsanlage, zugehöriges Programm und zugehörige Datenstruktur
US7133907B2 (en) * 2001-10-18 2006-11-07 Sun Microsystems, Inc. Method, system, and program for configuring system resources
US20030097299A1 (en) * 2001-11-21 2003-05-22 O'kane Robert Peer-to-peer (P2P) and internet content digital acknowledgement trigger used for file transfer
US20030105831A1 (en) * 2001-12-04 2003-06-05 O'kane Robert Peer-to-peer (P2P) and internet content delivery based user based digital acknowledgement trigger used for file transfer
US8768715B2 (en) * 2001-12-13 2014-07-01 Oracle America, Inc. System and method for resource management
US20030126182A1 (en) * 2001-12-28 2003-07-03 Wyatt David A. Method and apparatus for managing physical and virtual resources within a multi-function integrated chipset
US7792978B2 (en) * 2001-12-28 2010-09-07 At&T Intellectual Property I, L.P. System and method to remotely manage and audit set top box resources
US20030126304A1 (en) * 2001-12-31 2003-07-03 Wyatt David A. Method for attaching a resource to a parent within a global resource namespace
US20030135609A1 (en) * 2002-01-16 2003-07-17 Sun Microsystems, Inc. Method, system, and program for determining a modification of a system resource configuration
KR20040105804A (ko) * 2002-03-28 2004-12-16 오페락스 아베 아이피 네트워크 내의 자원예약 방법 및 시스템
US20090222875A1 (en) * 2002-04-18 2009-09-03 Cheng David J Distributed tuner allocation and conflict resolution
US7529822B2 (en) * 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US9886309B2 (en) * 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
US7464145B2 (en) * 2002-07-11 2008-12-09 Intelliden, Inc. Repository-independent system and method for asset management and reconciliation
US8886701B1 (en) * 2002-07-15 2014-11-11 Hewlett-Packard Development Company, L.P. Network based software agent to allow dynamic resource access
US7103889B2 (en) 2002-07-23 2006-09-05 Sun Microsystems, Inc. Method, system, and article of manufacture for agent processing
US7143615B2 (en) * 2002-07-31 2006-12-05 Sun Microsystems, Inc. Method, system, and program for discovering components within a network
US20040024887A1 (en) * 2002-07-31 2004-02-05 Sun Microsystems, Inc. Method, system, and program for generating information on components within a network
US20040022200A1 (en) * 2002-07-31 2004-02-05 Sun Microsystems, Inc. Method, system, and program for providing information on components within a network
US20040030771A1 (en) * 2002-08-07 2004-02-12 John Strassner System and method for enabling directory-enabled networking
USRE46776E1 (en) 2002-08-27 2018-04-03 Genesys Telecommunications Laboratories, Inc. Method and apparatus for optimizing response time to events in queue
DE10239934B4 (de) * 2002-08-30 2006-08-31 Daimlerchrysler Ag Verfahren zur Steuerung der Dienstbelegung in einem Datenbussystem
US7865547B2 (en) * 2002-09-12 2011-01-04 Siemens Enterprise Communications, Inc. System and method for accessing busy IP network resources
US7954127B2 (en) 2002-09-25 2011-05-31 The Directv Group, Inc. Direct broadcast signal distribution methods
FR2845229B1 (fr) * 2002-09-27 2005-01-14 Canon Europa Nv Procede d'optimisation du pilotage d'un appareil, dispositif, systemes et programmes d'ordinateur correspondants
US7296235B2 (en) * 2002-10-10 2007-11-13 Sun Microsystems, Inc. Plugin architecture for extending polices
US7398525B2 (en) * 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
EP1422622A3 (en) 2002-11-15 2007-07-11 Matsushita Electric Industrial Co., Ltd. Apparatus, method and program for contention arbitration
US7707141B1 (en) * 2002-11-27 2010-04-27 Microsoft Corporation Use of a set based approach to constructing complex queries for managing resources built from a set of simple underlying operations
EP1427252A1 (en) * 2002-12-02 2004-06-09 Deutsche Thomson-Brandt Gmbh Method and apparatus for processing audio signals from a bitstream
US7417973B1 (en) * 2002-12-31 2008-08-26 Apple Inc. Method, apparatus and computer program product for ensuring node participation in a network bus
US7836031B2 (en) * 2003-03-28 2010-11-16 Microsoft Corporation Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
US20040205048A1 (en) * 2003-03-28 2004-10-14 Pizzo Michael J. Systems and methods for requesting and receiving database change notifications
JP3822577B2 (ja) 2003-05-22 2006-09-20 株式会社エヌ・ティ・ティ・ドコモ コンピュータ及びプログラム
JP2005004350A (ja) * 2003-06-10 2005-01-06 Sony Ericsson Mobilecommunications Japan Inc リソース管理方法及び装置、リソース管理プログラム、記憶媒体
US7594256B2 (en) * 2003-06-26 2009-09-22 Sun Microsystems, Inc. Remote interface for policy decisions governing access control
US7900092B2 (en) * 2003-07-11 2011-03-01 Computer Associates Think, Inc. Kernel-level method of flagging problems in applications
JP2005038071A (ja) * 2003-07-17 2005-02-10 Hitachi Ltd ストレージの容量を最適化する管理方法
US8032890B2 (en) * 2003-07-22 2011-10-04 Sap Ag Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources
US7730182B2 (en) 2003-08-25 2010-06-01 Microsoft Corporation System and method for integrating management of components of a resource
US7516455B2 (en) * 2003-09-05 2009-04-07 Microsoft Corporation Probabilistic scheduling
US8117624B2 (en) * 2003-09-16 2012-02-14 Matrox Electronic Systems Ltd. Method and apparatus for performing real-time commands in a non real-time operating system environment
US20050071471A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Automatic bandwidth control for file servers with a variable priority client base
US7533173B2 (en) * 2003-09-30 2009-05-12 International Business Machines Corporation Policy driven automation - specifying equivalent resources
US7451201B2 (en) * 2003-09-30 2008-11-11 International Business Machines Corporation Policy driven autonomic computing-specifying relationships
US8892702B2 (en) * 2003-09-30 2014-11-18 International Business Machines Corporation Policy driven autonomic computing-programmatic policy definitions
US8158532B2 (en) * 2003-10-20 2012-04-17 Novellus Systems, Inc. Topography reduction and control by selective accelerator removal
US7516442B2 (en) * 2003-10-23 2009-04-07 Microsoft Corporation Resource manifest
US7305376B2 (en) * 2003-10-23 2007-12-04 Microsoft Corporation Multiple language-dependent resources compacted into a single resource file
EP1685487A2 (en) * 2003-11-13 2006-08-02 Koninklijke Philips Electronics N.V. Method and system for restrained budget use
US20050108687A1 (en) * 2003-11-18 2005-05-19 Mountain Highland M. Context and content sensitive distributed application acceleration framework
US20050132379A1 (en) * 2003-12-11 2005-06-16 Dell Products L.P. Method, system and software for allocating information handling system resources in response to high availability cluster fail-over events
US9378187B2 (en) 2003-12-11 2016-06-28 International Business Machines Corporation Creating a presentation document
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7571380B2 (en) 2004-01-13 2009-08-04 International Business Machines Corporation Differential dynamic content delivery with a presenter-alterable session copy of a user profile
US7430707B2 (en) 2004-01-13 2008-09-30 International Business Machines Corporation Differential dynamic content delivery with device controlling action
US7890848B2 (en) 2004-01-13 2011-02-15 International Business Machines Corporation Differential dynamic content delivery with alternative content presentation
US8499232B2 (en) 2004-01-13 2013-07-30 International Business Machines Corporation Differential dynamic content delivery with a participant alterable session copy of a user profile
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7552437B2 (en) * 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7464159B2 (en) * 2004-01-14 2008-12-09 International Business Machines Corporation Managing analysis of a degraded service in a grid environment
US7430741B2 (en) * 2004-01-20 2008-09-30 International Business Machines Corporation Application-aware system that dynamically partitions and allocates resources on demand
US20050188075A1 (en) * 2004-01-22 2005-08-25 International Business Machines Corporation System and method for supporting transaction and parallel services in a clustered system based on a service level agreement
US8346909B2 (en) * 2004-01-22 2013-01-01 International Business Machines Corporation Method for supporting transaction and parallel application workloads across multiple domains based on service level agreements
KR100630052B1 (ko) * 2004-01-26 2006-09-27 삼성전자주식회사 실시간 전송 프로토콜 데이터의 전송을 위한 처리 시스템 및 방법
JP4435588B2 (ja) * 2004-01-30 2010-03-17 株式会社日立製作所 ストレージシステム
EP1721251A2 (en) * 2004-02-18 2006-11-15 Koninklijke Philips Electronics N.V. Method and system for restrained budget use with controlled budget transfer
US8046763B1 (en) * 2004-02-20 2011-10-25 Oracle America, Inc. Regulation of resource requests to control rate of resource consumption
US8584129B1 (en) * 2004-02-20 2013-11-12 Oracle America, Inc. Dispenser determines responses to resource requests for a single respective one of consumable resource using resource management policy
US20050188384A1 (en) * 2004-02-24 2005-08-25 Kumanan Yogaratnam Electronic content processing systems and methods
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US9558042B2 (en) 2004-03-13 2017-01-31 Iii Holdings 12, Llc System and method providing object messages in a compute environment
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US20050222884A1 (en) * 2004-03-31 2005-10-06 Ralf Ehret Capacity planning of resources
US7814491B1 (en) * 2004-04-14 2010-10-12 Oracle America, Inc. Method and apparatus for managing system resources using a container model
US7827239B2 (en) 2004-04-26 2010-11-02 International Business Machines Corporation Dynamic media content for collaborators with client environment information in dynamic client contexts
US7519683B2 (en) 2004-04-26 2009-04-14 International Business Machines Corporation Dynamic media content for collaborators with client locations in dynamic client contexts
CN102355466B (zh) 2004-04-30 2016-01-20 黑莓有限公司 处理数据传输的系统和方法
US20050251835A1 (en) * 2004-05-07 2005-11-10 Microsoft Corporation Strategies for pausing and resuming the presentation of programs
US7640343B2 (en) * 2004-05-27 2009-12-29 Microsoft Corporation Using resource item lists to consume resource items
US7266547B2 (en) 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7100135B2 (en) * 2004-06-18 2006-08-29 Intel Corporation Method and system to evaluate signal line spacing
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8307174B1 (en) * 2004-06-25 2012-11-06 Emc Corporation System and method for managing sessions and reallocating memory resources used for replication of data in a data storage environment
US8185814B2 (en) 2004-07-08 2012-05-22 International Business Machines Corporation Differential dynamic delivery of content according to user expressions of interest
US7487208B2 (en) 2004-07-08 2009-02-03 International Business Machines Corporation Differential dynamic content delivery to alternate display device locations
US9167087B2 (en) 2004-07-13 2015-10-20 International Business Machines Corporation Dynamic media content for collaborators including disparate location representations
US7426538B2 (en) 2004-07-13 2008-09-16 International Business Machines Corporation Dynamic media content for collaborators with VOIP support for client communications
US20060015557A1 (en) * 2004-07-13 2006-01-19 International Business Machines Corporation Dynamic media content for collaborator groups
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7617498B1 (en) * 2004-09-15 2009-11-10 Nortel Networks Limited Resource conflict management using predefined XML schemas
US8170901B2 (en) * 2004-10-01 2012-05-01 Microsoft Corporation Extensible framework for designing workflows
US7269652B2 (en) * 2004-10-18 2007-09-11 International Business Machines Corporation Algorithm for minimizing rebate value due to SLA breach in a utility computing environment
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US7499970B2 (en) * 2004-11-12 2009-03-03 International Business Machines Corporation Method and system for supervisor partitioning of client resources
US8219807B1 (en) 2004-12-17 2012-07-10 Novell, Inc. Fine grained access control for linux services
US8271785B1 (en) 2004-12-20 2012-09-18 Novell, Inc. Synthesized root privileges
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US10176439B2 (en) * 2005-01-11 2019-01-08 International Business Machines Corporation Managing networked resources
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US20060287937A1 (en) * 2005-01-18 2006-12-21 Manyworlds, Inc. Generative Investment Process
US8214398B1 (en) 2005-02-16 2012-07-03 Emc Corporation Role based access controls
JP4233531B2 (ja) * 2005-02-16 2009-03-04 ソニー株式会社 情報処理装置および方法、並びにプログラム
US8091088B2 (en) * 2005-02-22 2012-01-03 Microsoft Corporation Method and system for hierarchical resource management involving hard and soft resource limits
US7870301B2 (en) * 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US7376770B2 (en) * 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7958085B1 (en) * 2005-03-07 2011-06-07 Adobe Systems Incorporated Managing media-content licenses, including option formation
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US8631130B2 (en) 2005-03-16 2014-01-14 Adaptive Computing Enterprises, Inc. Reserving resources in an on-demand compute environment from a local compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1703451A1 (en) * 2005-03-18 2006-09-20 Sap Ag A data processing system and method of calculating a distribution
US8185905B2 (en) * 2005-03-18 2012-05-22 International Business Machines Corporation Resource allocation in computing systems according to permissible flexibilities in the recommended resource requirements
EP1708088A1 (en) * 2005-03-31 2006-10-04 Sap Ag Allocating resources based on rules and events
US8484334B2 (en) 2005-03-31 2013-07-09 Sap Aktiengesellschaft Allocating resources based on rules and events
US7950038B2 (en) * 2005-04-01 2011-05-24 The Directv Group, Inc. Transponder tuning and mapping
US7945932B2 (en) 2005-04-01 2011-05-17 The Directv Group, Inc. Narrow bandwidth signal delivery system
US7900230B2 (en) 2005-04-01 2011-03-01 The Directv Group, Inc. Intelligent two-way switching network
US7987486B2 (en) 2005-04-01 2011-07-26 The Directv Group, Inc. System architecture for control and signal distribution on coaxial cable
US7958531B2 (en) * 2005-04-01 2011-06-07 The Directv Group, Inc. Automatic level control for incoming signals of different signal strengths
US8024759B2 (en) 2005-04-01 2011-09-20 The Directv Group, Inc. Backwards-compatible frequency translation module for satellite video delivery
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US20060253472A1 (en) * 2005-05-03 2006-11-09 Wasserman Theodore J System, method, and service for automatically determining an initial sizing of a hardware configuration for a database system running a business intelligence workload
US7769735B2 (en) * 2005-05-03 2010-08-03 International Business Machines Corporation System, service, and method for characterizing a business intelligence workload for sizing a new database system hardware configuration
US8443083B2 (en) * 2005-05-04 2013-05-14 Qualcomm Incorporated Arbitration of resources at a wireless device among contending applications
US8074214B2 (en) 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
US8352935B2 (en) 2005-05-19 2013-01-08 Novell, Inc. System for creating a customized software distribution based on user requirements
US20060265436A1 (en) * 2005-05-20 2006-11-23 Andrew Edmond Grid network for distribution of files
WO2006129819A1 (en) * 2005-05-31 2006-12-07 Matsushita Electric Industrial Co., Ltd. Broadcast receiving terminal and program execution method
US20060277594A1 (en) * 2005-06-02 2006-12-07 International Business Machines Corporation Policy implementation delegation
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
JP4352028B2 (ja) * 2005-06-29 2009-10-28 富士通株式会社 運用ポリシー評価システムおよび運用ポリシー評価プログラム
US7707579B2 (en) * 2005-07-14 2010-04-27 International Business Machines Corporation Method and system for application profiling for purposes of defining resource requirements
US8326990B1 (en) 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
US8245270B2 (en) * 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US8789115B2 (en) * 2005-09-02 2014-07-22 The Directv Group, Inc. Frequency translation module discovery and configuration
US7937732B2 (en) 2005-09-02 2011-05-03 The Directv Group, Inc. Network fraud prevention via registration and verification
ATE458220T1 (de) * 2005-09-12 2010-03-15 Siemens Ag Verfahren zur steuerung eines zugriffs auf ressourcen eines datenverarbeitungssystems und steuerungsprogramm
US7675933B2 (en) * 2005-09-23 2010-03-09 Palm, Inc. System and method for enabling radio operations on a wireless computing device
US7934216B2 (en) * 2005-10-03 2011-04-26 International Business Machines Corporation Method and system for load balancing of computing resources
US8019275B2 (en) 2005-10-12 2011-09-13 The Directv Group, Inc. Band upconverter approach to KA/KU signal distribution
US7991348B2 (en) 2005-10-12 2011-08-02 The Directv Group, Inc. Triple band combining approach to satellite signal distribution
US20070089142A1 (en) * 2005-10-14 2007-04-19 John Norin Band converter approach to Ka/Ku signal distribution
US20070094670A1 (en) * 2005-10-26 2007-04-26 Graves David A Method and an apparatus for providing automatic emergency mode plan generation in a utility computing environment
US8117505B2 (en) * 2005-11-07 2012-02-14 Microsoft Corporation Resource exhaustion prediction, detection, diagnosis and correction
US20070127410A1 (en) * 2005-12-06 2007-06-07 Jianlin Guo QoS for AV transmission over wireless networks
WO2007072544A1 (ja) * 2005-12-20 2007-06-28 Fujitsu Limited 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム
US20070150599A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Generation of resource-usage profiles for application sessions of a number of client computing devices
US7487307B2 (en) * 2006-01-05 2009-02-03 International Business Machines Corporation Method, apparatus and program product for managing memory in a virtual computing system
US20080059395A1 (en) * 2006-01-10 2008-03-06 Manyworlds, Inc. Adaptive Online Experimentation
KR100772872B1 (ko) * 2006-02-24 2007-11-02 삼성전자주식회사 다중 자바 어플리케이션 환경에서 가상 아이디를 이용하여자원을 관리하는 장치 및 그 방법
US8676973B2 (en) * 2006-03-07 2014-03-18 Novell Intellectual Property Holdings, Inc. Light-weight multi-user browser
US20070239498A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Framework for modeling cancellation for process-centric programs
US20070256078A1 (en) * 2006-04-28 2007-11-01 Falk Nathan B Resource reservation system, method and program product used in distributed cluster environments
CN101502116A (zh) * 2006-06-09 2009-08-05 直视集团公司 用于各种格式位流的呈现模式
BRPI0712972A2 (pt) * 2006-06-16 2012-04-17 Directv Group Inc sistema para recepção de sinais de vìdeo via satélite para a exposição em monitor em aparelho para exibição da informação de vìdeo
US20080022317A1 (en) * 2006-06-19 2008-01-24 James Thomas H Dedicated tuner for network administration functions
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US20070297590A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Managing activity-centric environments via profiles
US20070300225A1 (en) * 2006-06-27 2007-12-27 Microsoft Coporation Providing user information to introspection
US7620610B2 (en) * 2006-06-27 2009-11-17 Microsoft Corporation Resource availability for user activities across devices
US7761393B2 (en) * 2006-06-27 2010-07-20 Microsoft Corporation Creating and managing activity-centric workflow
US7836002B2 (en) * 2006-06-27 2010-11-16 Microsoft Corporation Activity-centric domain scoping
US7970637B2 (en) * 2006-06-27 2011-06-28 Microsoft Corporation Activity-centric granular application functionality
US20070300185A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Activity-centric adaptive user interface
US8364514B2 (en) * 2006-06-27 2013-01-29 Microsoft Corporation Monitoring group activities
US20070299713A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Capture of process knowledge for user activities
US20080134276A1 (en) * 2006-06-30 2008-06-05 Martin Orrell Receiver and aspects thereof
GB2440199B (en) * 2006-07-13 2008-11-12 British Telecomm Electronic programme guide for a mobile communications device
US20080046435A1 (en) * 2006-08-18 2008-02-21 Microsoft Corporation Service discovery and automatic configuration
US7730480B2 (en) 2006-08-22 2010-06-01 Novell, Inc. System and method for creating a pattern installation by cloning software installed another computer
US8082546B2 (en) * 2006-09-29 2011-12-20 International Business Machines Corporation Job scheduling to maximize use of reusable resources and minimize resource deallocation
US8719875B2 (en) 2006-11-06 2014-05-06 The Directv Group, Inc. Satellite television IP bitstream generator receiving unit
US8631413B2 (en) * 2007-01-26 2014-01-14 Kyocera Corporation Determining the termination priority of applications based on capability of applications to retain operation state information
US20080229372A1 (en) * 2007-03-14 2008-09-18 At&T Knowledge Ventures, L.P. Method and system for delivering media programs
EP2126682A1 (de) * 2007-03-26 2009-12-02 Record4Free.TV AG Videodatenübertragung über usb-schnittstelle
US8234620B1 (en) * 2007-04-30 2012-07-31 Oracle America, Inc. Method and system for software development using distributed computing resources
US8712318B2 (en) 2007-05-29 2014-04-29 The Directv Group, Inc. Integrated multi-sat LNB and frequency translation module
US8266287B2 (en) 2007-06-12 2012-09-11 International Business Machines Corporation Managing computer resources in a distributed computing system
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8042122B2 (en) * 2007-06-27 2011-10-18 Microsoft Corporation Hybrid resource manager
US8238813B1 (en) 2007-08-20 2012-08-07 The Directv Group, Inc. Computationally efficient design for broadcast satellite single wire and/or direct demod interface
US20090077297A1 (en) * 2007-09-14 2009-03-19 Hongxiao Zhao Method and system for dynamically reconfiguring PCIe-cardbus controllers
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
EP2195951A4 (en) 2007-10-02 2013-01-23 Ericsson Telefon Ab L M ADDING AN INDICATION OF THE SPECIFIC CQI QUANTITY TO BE REPORTED IN THE UPGRADE CURRENCY
US9942618B2 (en) 2007-10-31 2018-04-10 The Directv Group, Inc. SMATV headend using IP transport stream input and method for operating the same
US20090241121A1 (en) * 2007-12-24 2009-09-24 Gil Nechushtai Device, Method and Computer Program Product for Monitoring Collaborative Tasks
US9495210B1 (en) * 2008-06-30 2016-11-15 EMC IP Holding Company LLC Logical device model
US20100011367A1 (en) * 2008-07-11 2010-01-14 Gm Global Technology Operations, Inc. Methods and systems for allocating a resource of a vehicle among a plurality of uses for the resource
US20100042656A1 (en) * 2008-08-18 2010-02-18 Microsoft Corporation Claim generation for testing claims-based applications
US9143554B2 (en) * 2008-10-13 2015-09-22 Hewlett-Packard Development Company, L.P. Control of a computing system having adjustable inputs
US8370493B2 (en) * 2008-12-12 2013-02-05 Amazon Technologies, Inc. Saving program execution state
BRPI1006912A2 (pt) 2009-01-06 2016-02-16 Directv Group Inc estimação de deriva de frequência para unidade externa de baixo custo
US8510744B2 (en) * 2009-02-24 2013-08-13 Siemens Product Lifecycle Management Software Inc. Using resource defining attributes to enhance thread scheduling in processors
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US9378062B2 (en) * 2009-06-18 2016-06-28 Microsoft Technology Licensing, Llc Interface between a resource manager and a scheduler in a process
US8719831B2 (en) * 2009-06-18 2014-05-06 Microsoft Corporation Dynamically change allocation of resources to schedulers based on feedback and policies from the schedulers and availability of the resources
FR2947133B1 (fr) * 2009-06-18 2017-09-15 Sagem Comm Procede de controle d'un decodeur et decodeur mettant en ouvre un tel procede.
JP5521403B2 (ja) * 2009-06-23 2014-06-11 ソニー株式会社 情報処理装置とリソース管理方法およびプログラム
US20110016471A1 (en) * 2009-07-15 2011-01-20 Microsoft Corporation Balancing Resource Allocations Based on Priority
CN101631214A (zh) * 2009-08-06 2010-01-20 中兴通讯股份有限公司 一种手机电视电子节目单的更新方法及装置
US8065454B1 (en) 2009-08-20 2011-11-22 Qlogic, Corporation System and method for mapping functions to and from network devices using configuration compatible with an adapter by remapping plurality of logical ports of adapter
EP2312442A3 (en) * 2009-08-27 2012-02-01 Siemens Product Lifecycle Management Software Inc. System and method for thread scheduling in processors
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8832663B2 (en) 2009-11-23 2014-09-09 International Business Machines Corporation Thread serialization and disablement tool
US8549523B2 (en) 2009-11-23 2013-10-01 International Business Machines Corporation Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool
US8924982B2 (en) 2010-01-12 2014-12-30 Amazon Technologies, Inc. Managing private use of program execution capacity
US10019216B2 (en) 2010-04-07 2018-07-10 Lenovo Innovations Limited (Hong Kong) Information processing terminal and control method thereof
US8713565B2 (en) 2010-04-28 2014-04-29 International Business Machines Corporation Automated tuning in a virtual machine computing environment
US9098333B1 (en) 2010-05-07 2015-08-04 Ziften Technologies, Inc. Monitoring computer process resource usage
US8606920B1 (en) 2010-05-28 2013-12-10 Amazon Technologies, Inc. Providing notification of computing resource availability for on-demand allocation
US20120022949A1 (en) * 2010-07-21 2012-01-26 George Jai System and Method for Formulating a Life Plan
US9098521B2 (en) 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
US8601484B2 (en) 2010-09-15 2013-12-03 Qualcomm Incorporated System and method for managing resources and markers of a portable computing device
US8615755B2 (en) 2010-09-15 2013-12-24 Qualcomm Incorporated System and method for managing resources of a portable computing device
US8631414B2 (en) 2010-09-15 2014-01-14 Qualcomm Incorporated Distributed resource management in a portable computing device
US8806502B2 (en) 2010-09-15 2014-08-12 Qualcomm Incorporated Batching resource requests in a portable computing device
US20120102200A1 (en) * 2010-10-26 2012-04-26 Qualcomm Incorporated Application specific resource management
US8966020B2 (en) 2010-11-02 2015-02-24 International Business Machines Corporation Integration of heterogeneous computing systems into a hybrid computing system
US8959220B2 (en) 2010-11-02 2015-02-17 International Business Machines Corporation Managing a workload of a plurality of virtual servers of a computing environment
US8984109B2 (en) 2010-11-02 2015-03-17 International Business Machines Corporation Ensemble having one or more computing systems and a controller thereof
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US20120159499A1 (en) * 2010-12-17 2012-06-21 Verizon Patent And Licensing Inc. Resource optimization
US10755235B2 (en) * 2011-01-28 2020-08-25 International Business Machines Corporation Meeting time constraint for a sequence of meetings of a task in a calendaring and scheduling system
WO2012154157A1 (en) * 2011-05-06 2012-11-15 Google Inc. Apparatus and method for dynamically changing encoding scheme based on resource utilization
US8484392B2 (en) * 2011-05-31 2013-07-09 Oracle International Corporation Method and system for infiniband host channel adaptor quality of service
US9161226B2 (en) 2011-10-17 2015-10-13 Blackberry Limited Associating services to perimeters
US9497220B2 (en) 2011-10-17 2016-11-15 Blackberry Limited Dynamically generating perimeters
US9613219B2 (en) 2011-11-10 2017-04-04 Blackberry Limited Managing cross perimeter access
US8799227B2 (en) 2011-11-11 2014-08-05 Blackberry Limited Presenting metadata from multiple perimeters
JP5805887B2 (ja) * 2011-12-07 2015-11-10 クアルコム,インコーポレイテッド ポータブルコンピューティングデバイスにおけるリソース要求のバッチングおよびフォーク
US8943504B2 (en) 2012-04-20 2015-01-27 Qualcomm Incorporated Tracking and releasing resources placed on a deferred unlock list at the end of a transaction
US9369466B2 (en) 2012-06-21 2016-06-14 Blackberry Limited Managing use of network resources
US9086919B2 (en) * 2012-08-23 2015-07-21 Dell Products, Lp Fabric independent PCIe cluster manager
US10380041B2 (en) 2012-08-23 2019-08-13 Dell Products, Lp Fabric independent PCIe cluster manager
US9201693B2 (en) 2012-09-04 2015-12-01 Microsoft Technology Licensing, Llc Quota-based resource management
US9594594B2 (en) * 2012-10-18 2017-03-14 Advanced Micro Devices, Inc. Media hardware resource allocation
US8937949B2 (en) 2012-12-20 2015-01-20 Oracle International Corporation Method and system for Infiniband host channel adapter multicast packet replication mechanism
US20140280698A1 (en) * 2013-03-13 2014-09-18 Qnx Software Systems Limited Processing a Link on a Device
RU2526762C1 (ru) * 2013-03-26 2014-08-27 Федеральное государственное унитарное предприятие "Центральный научно-исследовательский институт машиностроения" (ФГУП ЦНИИмаш) Контроллер распределения ресурсов
US9288125B2 (en) 2013-06-14 2016-03-15 Microsoft Technology Licensing, Llc Application control of embedded web content execution
US20160179580A1 (en) * 2013-07-30 2016-06-23 Hewlett Packard Enterprise Development L.P. Resource management based on a process identifier
WO2015034485A1 (en) * 2013-09-04 2015-03-12 Hewlett-Packard Development Company, L.P. Providing services as resources for other services
US9632569B2 (en) * 2014-08-05 2017-04-25 Qualcomm Incorporated Directed event signaling for multiprocessor systems
EP3091700B1 (en) * 2015-05-05 2018-03-21 Mitsubishi Electric R&D Centre Europe B.V. Method for allocating time-frequency resources for transmitting data packets over a frequency selective channel
US20170115878A1 (en) * 2015-10-23 2017-04-27 Pure Storage, Inc. Proactively tuning a storage array
US10452442B2 (en) * 2015-11-27 2019-10-22 Huawei Technologies Co., Ltd. System and method for resource management
US10560318B2 (en) 2016-01-27 2020-02-11 Oracle International Corporation System and method for correlating fabric-level group membership with subnet-level partition membership in a high-performance computing environment
US10972375B2 (en) 2016-01-27 2021-04-06 Oracle International Corporation System and method of reserving a specific queue pair number for proprietary management traffic in a high-performance computing environment
US11018947B2 (en) 2016-01-27 2021-05-25 Oracle International Corporation System and method for supporting on-demand setup of local host channel adapter port partition membership in a high-performance computing environment
US10212326B2 (en) * 2016-11-18 2019-02-19 Microsoft Technology Licensing, Llc Notifications for control sharing of camera resources
CN113535382B (zh) * 2016-12-23 2024-12-06 创新先进技术有限公司 资源处理方法及装置
US10496331B2 (en) 2017-12-04 2019-12-03 Vmware, Inc. Hierarchical resource tree memory operations
JP7173337B2 (ja) * 2019-06-19 2022-11-16 日本電信電話株式会社 リソース管理装置、リソース管理方法およびプログラム
US20210200589A1 (en) * 2019-12-30 2021-07-01 Mcafee, Llc Resource Management for Web Browser Based Applications
US11221881B2 (en) * 2019-12-31 2022-01-11 Microsoft Technology Licensing, Llc Computer resource leak detection
DE102021002354A1 (de) 2021-04-28 2022-11-10 Universität Stuttgart, Körperschaft Des Öffentlichen Rechts Ressourcenbasiertes Konzept zur Betriebsplanung verteilter Raumfahrtsysteme
CN113312243B (zh) * 2021-06-29 2024-07-05 胡学锋 一种资源监控方法及系统
US11811681B1 (en) 2022-07-12 2023-11-07 T-Mobile Usa, Inc. Generating and deploying software architectures using telecommunication resources
US12356207B2 (en) 2022-07-12 2025-07-08 T-Mobile Usa, Inc. Telecommunication resource deployment using machine learning systems and methods
US12164887B2 (en) 2022-07-12 2024-12-10 T-Mobile Usa, Inc. Identifying standards-related requirements for software architectures using telecommunication resources
US12532066B2 (en) 2023-07-25 2026-01-20 Qualcomm Incorporated Managing control of cameras in a multi-camera device

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6170654A (ja) 1984-09-14 1986-04-11 Hitachi Ltd 分散処理システムにおける資源管理方式
US4649479A (en) 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US5014192A (en) 1985-05-06 1991-05-07 Motorola Computer X, Inc. System for locating a file in a logical ring by sequentially forwarding access request with file system name and file name
US5450570A (en) 1988-09-09 1995-09-12 Compaq Computer Corp. Computer implemented method and apparatus for dynamic configuration of a computer system and circuit boards including computer resource allocation conflict resolution
US5270920A (en) * 1991-05-13 1993-12-14 Hughes Training, Inc. Expert system scheduler and scheduling method
US5421011A (en) 1991-12-20 1995-05-30 International Business Machines Corporation Method and system for access and accounting control in a data processing system by using a single resource account for a user or a group of users
US5504670A (en) * 1993-03-31 1996-04-02 Intel Corporation Method and apparatus for allocating resources in a multiprocessor system
CA2131406C (en) * 1993-09-21 2002-11-12 David D'souza Preemptive multi-tasking with cooperative groups of tasks
US6948172B1 (en) * 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
US5467268A (en) 1994-02-25 1995-11-14 Minnesota Mining And Manufacturing Company Method for resource assignment and scheduling
US5787246A (en) 1994-05-27 1998-07-28 Microsoft Corporation System for configuring devices for a computer system
US5649479A (en) * 1994-10-13 1997-07-22 M & R Printing Equipment, Inc. Ink recovery device
US5640569A (en) * 1995-04-28 1997-06-17 Sun Microsystems, Inc. Diverse goods arbitration system and method for allocating resources in a distributed computer system
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
JPH08328884A (ja) * 1995-06-02 1996-12-13 Toshiba Corp 資源管理装置
JP4086259B2 (ja) * 1995-08-04 2008-05-14 株式会社東芝 通信システム
US5671361A (en) 1995-09-28 1997-09-23 University Of Central Florida Priority rule search technique for resource constrained project scheduling
US6282561B1 (en) 1995-12-07 2001-08-28 Microsoft Corporation Method and system for resource management with independent real-time applications on a common set of machines
US6003061A (en) * 1995-12-07 1999-12-14 Microsoft Corporation Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider
US5890134A (en) * 1996-02-16 1999-03-30 Mcdonnell Douglas Corporation Scheduling optimizer
US5838968A (en) * 1996-03-01 1998-11-17 Chromatic Research, Inc. System and method for dynamic resource management across tasks in real-time operating systems
US5799208A (en) * 1996-04-03 1998-08-25 United Microelectronics Corporation Apparatus for data communication between universal asynchronous receiver/transmitter (UART) modules and transceivers in a chip set by selectively connecting a common bus between multiplexer/demultiplexer units
US5737611A (en) * 1996-04-05 1998-04-07 Microsoft Corporation Methods for dynamically escalating locks on a shared resource
US5781736A (en) 1996-04-30 1998-07-14 International Business Machines Corporation Method for obtaining the state of network resources in a distributed computing environment by utilizing a provider associated with indicators of resource states
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5826082A (en) * 1996-07-01 1998-10-20 Sun Microsystems, Inc. Method for reserving resources
US5995745A (en) 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US6112243A (en) * 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
US5896539A (en) 1997-04-14 1999-04-20 International Business Machines Corporation Method and system for controlling access to a shared resource in a data processing system utilizing dynamically-determined weighted pseudo-random priorities
JPH1124947A (ja) * 1997-07-08 1999-01-29 Sanyo Electric Co Ltd コンピュータシステムの排他制御方法及びコンピュータシステム
FR2766592B1 (fr) * 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
JPH1165863A (ja) 1997-08-26 1999-03-09 Hitachi Ltd 共有資源管理方法
US6385638B1 (en) * 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
US6230200B1 (en) 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
JP3079079B2 (ja) * 1998-01-07 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 画面表示装置及び画面表示制御方法
US6377540B1 (en) 1998-07-31 2002-04-23 Motorola, Inc. Method and apparatus for managing resource allocation conflicts in a communications systems
JP2000076085A (ja) * 1998-08-28 2000-03-14 Nec Software Kobe Ltd 情報処理装置とリソース不足通知方法および記録媒体
US6341303B1 (en) 1998-08-28 2002-01-22 Oracle Corporation System and method for scheduling a resource according to a preconfigured plan
US6185221B1 (en) 1998-11-09 2001-02-06 Cabletron Systems, Inc. Method and apparatus for fair and efficient scheduling of variable-size data packets in an input-buffered multipoint switch
US6480861B1 (en) 1999-02-26 2002-11-12 Merrill Lynch, Co., Inc Distributed adaptive computing
KR100617228B1 (ko) 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
US6363434B1 (en) 1999-03-30 2002-03-26 Sony Corporation Of Japan Method of managing resources within a network of consumer electronic devices
US6470339B1 (en) * 1999-03-31 2002-10-22 Hewlett-Packard Company Resource access control in a software system
US6442631B1 (en) * 1999-05-07 2002-08-27 Compaq Information Technologies Group, L.P. Allocating system resources based upon priority
US6418447B1 (en) 1999-06-14 2002-07-09 International Business Machines Corporation Registration of object factories under multiple interface names
JP3628914B2 (ja) * 1999-06-29 2005-03-16 松下電器産業株式会社 資源予約管理装置
US6665701B1 (en) 1999-08-03 2003-12-16 Worldcom, Inc. Method and system for contention controlled data exchange in a distributed network-based resource allocation
US6550057B1 (en) 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment
US6799208B1 (en) 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US7249179B1 (en) * 2000-11-09 2007-07-24 Hewlett-Packard Development Company, L.P. System for automatically activating reserve hardware component based on hierarchical resource deployment scheme or rate of resource consumption
US6857020B1 (en) 2000-11-20 2005-02-15 International Business Machines Corporation Apparatus, system, and method for managing quality-of-service-assured e-business service systems
US7133907B2 (en) * 2001-10-18 2006-11-07 Sun Microsystems, Inc. Method, system, and program for configuring system resources
US7035930B2 (en) * 2001-10-26 2006-04-25 Hewlett-Packard Development Company, L.P. Method and framework for generating an optimized deployment of software applications in a distributed computing environment using layered model descriptions of services and servers
US6828082B2 (en) * 2002-02-08 2004-12-07 Chartered Semiconductor Manufacturing Ltd. Method to pattern small features by using a re-flowable hard mask

Also Published As

Publication number Publication date
US6799208B1 (en) 2004-09-28
WO2001084301A3 (en) 2003-04-17
JP2012138126A (ja) 2012-07-19
AU2001249769A1 (en) 2001-11-12
US7337446B2 (en) 2008-02-26
EP1342156A2 (en) 2003-09-10
US20050033846A1 (en) 2005-02-10
US20050044205A1 (en) 2005-02-24
JP2004508611A (ja) 2004-03-18
US7451450B2 (en) 2008-11-11
WO2001084301A2 (en) 2001-11-08

Similar Documents

Publication Publication Date Title
JP5065566B2 (ja) リソースマネージャアーキテクチャ
US7111297B1 (en) Methods and architectures for resource management
US7058947B1 (en) Resource manager architecture utilizing a policy manager
US7137119B1 (en) Resource manager architecture with resource allocation utilizing priority-based preemption
US7284244B1 (en) Resource manager architecture with dynamic resource allocation among multiple configurations
US6003061A (en) Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider
Rajkumar et al. Resource kernels: A resource-centric approach to real-time and multimedia systems
JP4430885B2 (ja) 分配されるチューナ割り振りおよびコンフリクトの解決方法
Pyarali et al. Evaluating and optimizing thread pool strategies for real-time CORBA
US7721289B2 (en) System and method for dynamic allocation of computers in response to requests
JPH0756754A (ja) マルチメディア・グループ資源割当て装置及び方法
US20060212869A1 (en) Resource management method and apparatus
CN111124674B (zh) 一种硬件资源的管理方法、存储介质及终端
US6748443B1 (en) Unenforced allocation of disk and CPU bandwidth for streaming I/O
US20020007408A1 (en) Resource management
US7685297B2 (en) Resource control
US12118399B2 (en) Resource allocation method, device and audio-visual playback terminal
US20050138664A1 (en) System and method for allocating resources in an adaptive media center processing system
JP4455799B2 (ja) イベント予約メカニズム
Mercer Operating system resource reservation for real-time and multimedia applications
US20070157201A1 (en) CPU resource manager
JP4285307B2 (ja) データ処理装置およびその方法
KR100471746B1 (ko) 연성 실시간 태스크 스케줄링 방법 및 그 기록매체
CN121752998A (zh) 用于资源管理的电子设备和方法
Venkataramani A reservation protocol for multimedia resource management system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080314

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110302

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110404

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120416

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120417

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120810

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5065566

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term