(57)【特許請求の範囲】
【請求項１】
プロセッサと、
オペレーティング・システムと、
前記プロセッサで実行されるプロセスが使用するデバイスと、
前記オペレーティング・システムと協働してコンピュータ・システムに、
第１のプロセスと第２のプロセスを含む複数のプロセスを生成する機能と、
前記デバイスに使用コストを設定する機能と、
前記第１のプロセスと前記第２のプロセスに単位時間当たりに異なる増加率でチケット数を付与し、いずれかのプロセスが前記デバイスを使用した後に該使用したプロセスが保有するチケット数を更新することで前記第１のプロセスと前記第２のプロセスに時間軸上で変化するチケット数を保有させる機能と、
前記第１のプロセスまたは前記第２のプロセスを実行する際に前記デバイスに設定された使用コストと前記プロセスが保有するチケット数を比較する機能と、
前記比較する機能の結果に基づいて前記プロセスに対する前記デバイスの使用を許可する機能とを含む制御機能を実現させるプログラムと
を有するコンピュータ・システム。
【請求項２】
前記使用を許可する機能が、前記デバイスの時分割利用による使用を許可する機能である請求項１に記載のコンピュータ・システム。
【請求項３】
前記使用コストを設定する機能が、前記設定した使用コストを環境情報に基づいて変更する機能を含む請求項１または請求項２に記載のコンピュータ・システム。
【請求項４】
前記環境情報が前記コンピュータ・システムの内部で生成される請求項３に記載のコンピュータ・システム。
【請求項５】
前記環境情報が前記コンピュータ・システムに電力を供給するバッテリィの残存容量を含み、前記使用コストを設定する機能が前記残存容量の減少に応じて前記使用コストを増大させる機能を含む請求項３または請求項４に記載のコンピュータ・システム。
【請求項６】
前記環境情報が前記コンピュータ・システムの筐体内部の温度を含み、前記使用コストを設定する機能が前記筐体内部の温度の上昇に応じて前記使用コストを増大させる機能を含む請求項３〜請求項５のいずれかに記載のコンピュータ・システム。
【請求項７】
前記環境情報が前記コンピュータ・システムの外部から提供される無線または電力に関連する情報を含む請求項３〜請求項６のいずれかに記載のコンピュータ・システム。
【請求項８】
前記使用コストを設定する機能は消費電力の大きなデバイスにはそれより消費電力の小さなデバイスよりも大きな使用コストを設定する機能を含む請求項１〜請求項７のいずれかに記載のコンピュータ・システム。
【請求項９】
前記保有させる機能は、いずれかのプロセスが前記デバイスを使用した直後に該使用したプロセスが保有しているチケット数から所定の消費チケット数を減算するかまたは前記プロセスが保有しているチケット数をリセットして更新する機能を含む請求項１〜請求項８のいずれかに記載のコンピュータ・システム。
【請求項１０】
前記制御機能が、
前記プロセッサに使用コストを設定する機能と、
前記第１のプロセスまたは前記第２のプロセスを実行する際に前記プロセッサに設定された使用コストと各プロセスが保有するチケット数を比較する機能と、
前記比較する機能の結果に基づいて前記プロセスに割り当てられたタイム・スライスの間に前記プロセッサの動作を中断する機能と
を含む請求項１〜請求項９のいずれかに記載のコンピュータ・システム。
【請求項１１】
前記デバイスが、機能が同一で複数の性能を備え、
前記制御機能が、
前記複数の性能のそれぞれに性能コストを設定する機能と、
前記チケット数に対応しプロセスが利用可能なデバイスの性能を決めるためのオークション・リミットを前記第１のプロセスおよび前記第２のプロセスに設定する機能と、
前記第１のプロセスまたは前記第２のプロセスを実行する際にそれぞれの性能に設定された前記性能コストと前記プロセスに設定された前記オークション・リミットを比較する機能と、
前記比較する機能の結果に基づいて前記複数の性能の中から選択したいずれかの性能の使用を前記プロセスに許可する機能と
を含む請求項１〜請求項１０のいずれかに記載のコンピュータ・システム。
【請求項１２】
コンピュータ・システムが搭載するデバイスを管理する方法であって、
前記コンピュータ・システムが、第１のプロセスと第２のプロセスを含む複数のプロセスを生成するステップと、
前記コンピュータ・システムが、前記デバイスに使用コストを設定するステップと、
前記コンピュータ・システムが、前記第１のプロセスと前記第２のプロセスに単位時間当たりに異なる増加率でチケット数を付与し、いずれかのプロセスが前記デバイスを使用した後に該使用したプロセスが保有するチケット数を更新することで前記第１のプロセスと前記第２のプロセスに時間軸上で変化するチケット数を保有させるステップと、
前記コンピュータ・システムが、前記第１のプロセスまたは前記第２のプロセスを実行する際に前記デバイスに設定された使用コストと前記プロセスが保有するチケット数を比較するステップと、
前記コンピュータ・システムが、前記比較するステップに応答して前記プロセスに前記デバイスの使用を許可するステップと
を有する管理方法。
【請求項１３】
オペレーティング・システムが実装されデバイスを含むコンピュータに、
第１のプロセスと第２のプロセスを含む複数のプロセスを生成する機能と、
前記デバイスに使用コストを設定する機能と、
前記第１のプロセスと前記第２のプロセスに単位時間当たりに異なる増加率でチケット数を付与し、いずれかのプロセスが前記デバイスを使用した後に該使用したプロセスが保有するチケット数を更新することで前記第１のプロセスと前記第２のプロセスに時間軸上で変化するチケット数を保有させる機能と、
前記第１のプロセスまたは前記第２のプロセスを実行する際に前記デバイスの使用コストと前記プロセスが保有するチケット数を比較して前記プロセスに前記デバイスの使用を許可する機能と
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムにおいてアプリケーション・プログラムによるハードウエア資源の使用を管理する技術に関する。
【背景技術】
【０００２】
Ｗｉｎｄｏｗｓ（登録商標）、ＭＡＣ  ＯＳ（登録商標）、またはＵＮＩＸ（登録商標）といったマルチタスクのオペレーティング・システム（ＯＳ）では、ＯＳが複数のタスクまたはプロセスをタイム・スライスごとに切り替えながら実行する。アプリケーション・プログラム（以下、アプリケーションという。）は、所定の作業を行うためにメモリ、バス、ハードディスク、またはディスプレイなどのハードウエア資源を使用する。
【０００３】
特許文献１の発明では、アプリケーションにデータ転送帯域幅などのリソースの使用を許可する旨の情報である使用権情報を与え、リソースに使用量の限界である限界情報を与えて、アプリケーションからリソースの使用要求があった場合に、使用権情報と限界情報に基づいて使用を許可できるか否かを判断する。使用の許可ができる場合は有効期限を定めてアプリケーションにリソースの使用権を与えるとともに、使用権にかかる分量に応じて使用権情報を更新する。この技術によれば、リソースを使用する複数のアプリケーションのそれぞれは、リソース限界値や他のアプリケーションによるリソースの必要性に依存した処理を行わなくてもそのリソースが現在使用可能である場合に使用権情報と限界情報とに基づいた判断でリソースの使用権を得ることができるようになる。
【０００４】
特許文献２の発明は、複数のプロセスにプロセッサ資源を比例的に共有させる方法に関する。各プロセスには、所定のチケット数が割り当てられ、プロセスの優先度がチケット数に基づいて計算される。ＯＳは、最高の優先度を有する実行待ちのスレッドをディスパッチ・キューから取り出して実行する。スレッドが実行されるたびにチケット数は減少しチケット数がゼロに達した場合に、再び初期のチケット数が割り当てられる。その結果、複数のスレッドは、それぞれに割り当てられたチケット数に比例した時間でプロセッサにより実行される。この発明によれば、与えるチケット数によりプロセスを実行するプロセッサ資源の量を調整できるので、公平な割り当てをすることができるようになる。
【特許文献１】特開２００１−２２５９７号公報
【特許文献２】特開平１１−２１２８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の資源管理は、特許文献１のように、時間的に同時に共有できる転送帯域幅という資源の分量を使用権情報と限界情報とに基づいて各アプリケーションに割り当てたり、特許文献２のように時間的に同時に共有できない単一のプロセッサ資源を時間軸上で調整した上で各アプリケーションに割り当てたりして行っていた。いずれの場合も、有限であるハードウエア資源が使用可能である限りアプリケーション全体でその総量を使用することを前提にしている。
【０００６】
しかし、コンピュータ・システムの利用形態がますます高度化してくると、アプリケーションによるハードウエア資源の使用を、個別のハードウエア資源の使用状況を把握したりアプリケーション間で分配方法を調整したりして管理するこれまでの方法では十分とはいえなくなってきた。ユーザは、コンピュータ・システムにおいてアプリケーションを実行して目的を達成するが、ユーザがコンピュータ・システムを利用して得る満足度に関する評価尺度は、直接アプリケーションの実行から得られることだけでなくそれ以外の価値に対する認識も高まってきている。
【０００７】
たとえば、たとえば、ポータブル・コンピュータがバッテリィで動作しているときには、残りの使用可能時間という評価尺度が重要になる。使用可能時間は、プロセスによるハードウエア資源の使用時間により決定されるが、ユーザの使用可能時間の延長または調整という要求とプロセスの実行による目的の遂行を両立させるには、新しい評価軸をコンピュータ・システムに導入してデバイスを使用する必要がある。
【０００８】
そこで本発明の目的は、デバイスの使用を高度に管理することができるコンピュータ・システムを提供することにある。さらに本発明の目的は、コンピュータ・システムにおいてデバイスの使用を高度に管理する方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかるコンピュータ・システムはノート型パーソナル・コンピュータ（以下、ノートＰＣという。）、デスクトップ型コンピュータ、ホスト・コンピュータ、またはサーバ・システムなどのプログラムで動作する電子機器全般を含む。コンピュータ・システムは、必ずしも一つの筐体に収まる必要はなく、ネットワークで結合されることにより機能的にコンピュータ・システムを構成するようなものであってもよい。コンピュータ・システムはシングルコア・プロセッサを複数含んでいてもよい。また、プロセッサはマルチコア・プロセッサでもよい。コンピュータ・システムは複数のプロセスを時分割して実行する。
【００１０】
コンピュータ・システムに導入された本発明にかかるプログラムは、ＯＳと協働してコンピュータ・システムにデバイスの制御機能を実現させる。プログラムとＯＳの機能分担は、本明細書に実施例として記載したものに限定されない。たとえばほとんどの機能をＯＳが担うようにしてもよい。制御機能は、デバイスに使用コストを設定する。使用コストは、プロセスがデバイスの利用頻度を決定するための一方のパラメータである。制御機能は、プロセスに時間軸上で変化するチケット数を保有させる。時間軸上で変化するチケット数はプロセスがデバイスの使用頻度を決定するための他方のパラメータである。チケット数と使用コストが比較された結果により、プロセスが時間軸上でデバイスを使用できる機会が決定される。
【００１１】
使用コストとチケット数は同じ尺度の数値であり、制御機能は、使用コストとチケット数を比較してプロセスにデバイスの使用を許可する。制御機能はデバイスの使用コストが小さいほど、またプロセスが保有するチケット数が多いほどプロセスがデバイスを使用する頻度を増加させる。ただし、本発明においてはデバイスとプロセスにそれぞれパラメータを付与して２つのパラメータの関係でデバイスの使用頻度を決定することができれば、使用コスト、チケット数および比較式を適当に定義して使用を許可する論理にさまざまな方法を採用することができる。
【００１２】
制御機能は設定した使用コストを環境情報に基づいて変更してもよい。環境情報はバッテリィの残存容量や筐体温度のようにコンピュータ・システムの内部で生成しても、また無線や電力に関する情報のようにコンピュータ・システムの外部から受け取ってもよい。環境情報をコンピュータ・システムの内部で生成する場合は、環境情報が提供する個々のコンピュータ・システムに特有の目的に添ってプロセスにデバイスを使用させることができる。
【００１３】
環境情報をコンピュータ・システムの外部から与える場合は、複数のコンピュータ・システムからなるコンピュータ群が、環境情報が示す特有の目的に添って動作するように各コンピュータ・システムのプロセスにデバイスを使用させることができる。いずれの場合でも環境情報に基づいて使用コストを設定することで複数のプロセス全体としての平均的なデバイスの使用頻度を環境情報に関連する一定の目的に向けて決定しながら、時間軸上で保有させるチケット数に重み付けしてプロセス間に優劣をつけることによりきめ細かな制御をすることができる。本発明においては、環境情報が使用コストに与える影響を強くして、個別のプロセスに対して完全にデバイスの使用を禁止することもある。
【００１４】
環境情報は、バッテリィの残存容量や筐体温度のようにコンピュータ・システムの動作中に変化するものであってもよく、また、電力のピーク・カット時間帯のように長い時間の間には変化するが動作時間中には変化しないものであってもよい。消費電力の大きなデバイスにはそれより消費電力の小さなデバイスよりも大きな使用コストを設定すると、コンピュータ・システムを省電力という目的に添って動作させることができる。デバイスは時分割利用タイプでも占有利用タイプでもよいが、時分割利用タイプのデバイスに適用すると特に省電力を図ることができる。
【００１５】
制御機能は、第１のプロセスと第２のプロセスに対してそれぞれに経過時間に応じて異なる数で増加するチケット数を保有させるために、第１のプロセスと第２のプロセスのチケット数をそれぞれ単位時間あたり異なる数だけ増加させる。すなわち、両者の時間当たりの増加率を異なる値に設定する。そして、プロセスがデバイスを使用した後には、その使用に対応した消費チケット数だけプロセスが保有していたチケット数から減算したり、保有していたチケット数をリセットしたりすることで更新して、時間軸上で当該プロセスがデバイスを使用できる頻度を調整することができる。
【００１６】
プロセッサを制御対象のデバイスとして扱う場合は、プロセスが保有するチケット数が不足してプロセッサの使用を阻止された場合に、そのプロセスのタイム・スライスの間プロセッサの動作を中断させて周波数を低下させたり電圧を低下させたりすることができる。
【００１７】
本発明の他の態様では、コンピュータ・システムが、機能が同一で性能の異なる複数のデバイスを含む。プログラムの制御機能は、複数のデバイスのそれぞれに性能コストを設定する機能と、プロセスにオークション・リミットを設定する機能と、性能コストとオークション・リミットを比較して複数のデバイスの中からいずれかを選択する機能とを含む。性能コストとオークション・リミットはともに性能面でのデバイスの使用に関するパラメータであり、それぞれ使用コストおよびチケット数に対応する。性能コストおよびオークション・リミットまたはそのいずれか一方はコンピュータ・システムの動作中に変化する環境情報に基づいて変化させることができる。
【発明の効果】
【００１８】
本発明により、デバイスの使用を高度に管理することができるコンピュータ・システムを提供することができた。さらに本発明により、コンピュータ・システムにおいてデバイスの使用を高度に管理する方法およびプログラムを提供することができた。
【発明を実施するための最良の形態】
【００１９】
[定義]
図１は、アプリケーションの実行に対する本実施形態にかかるデバイス管理の原理を説明する図である。アプリケーションとは表計算とかワードプロセッサとかいうようにユーザからみたときに特定の用途に向けられた独立した存在のプログラムをいう。コンピュータ・システムにおいてアプリケーションが実行されるときは、ＯＳがそのアプリケーションを実行するためのプロセスを生成する。プロセスは、ＯＳ上で動作するプログラムの最小単位でタスクともいわれる。具体的には、プロセスは、ワードプロセッサの場合において、検索、印刷、またはファイル出力といった作業内容に対応する。プロセスは、さらにスレッドというプログラムの実行単位に細分化されて実行される。本明細書では、全体を通じてプロセッサが実行するプログラムの単位をプロセスという用語で代表して説明する。
【００２０】
プロセスは、プロセッサで実行されてコンピュータ・システムのさまざまなデバイスを使用しながらアプリケーションの目的を実現する。プロセスがデバイスを使用するということは、プロセスが実行される過程でデバイスにアクセスし、アクセスされたデバイスが動作することを意味する。マルチタスクＯＳでは、複数のプロセスはそれぞれに割り当てられたタイム・スライスで実行されるため同時に実行されることはなく、各プロセスが使用するデバイスも同時に使用されることはないといえる。
【００２１】
ここで本実施形態において制御対象とする「デバイスの使用」という概念について説明する。コンピュータ・システムに実装されるデバイスの使用に関しては、占有利用という考え方と時分割利用という考え方をすることができる。占有利用とは、メイン・メモリや補助記憶装置の記憶空間の一部を複数のプロセスが同時にある程度の時間支配しながら利用しているような状態をいう。プロセス間では、一定の量の記憶空間を占有する位置や範囲が調整される。データ・バスの帯域幅も同時に複数のプロセスのそれぞれで生成されたデータで占有されるのでこの範疇に含めることができる。
【００２２】
これに対して時分割利用とは、プロセッサやディスプレイ装置のように各プロセスがデバイスの全体を時間的に区分して利用する状態をいう。占有状態も時分割状態もプロセスによるデバイスの利用の仕方に着目した定義方法であり、デバイスごとにいずれか一方に区分できる場合もあるが区分できない場合もある。たとえば、補助記憶装置は、占有利用をするタイプであると同時に時分割利用もするタイプである。時分割利用タイプのデバイスは、時分割の頻度を変化させると動作時間が変化し消費電力が変化する。
【００２３】
本実施の形態では、時分割利用タイプのデバイスに対する使用を許可したり禁止したりする管理方法を説明するが、占有利用タイプのデバイスの占有範囲の管理に対する適用を排除するものではない。本実施の形態では、プロセスに対してはチケット数およびオークション・リミットというメタファを導入し、デバイスに対しては使用コストおよび性能コストというメタファを導入する。チケット数は、プロセスがデバイスにアクセスする頻度を決めるためのパラメータである。オークション・リミットは、プロセスが利用可能なデバイスの性能を決めるためのパラメータである。使用コストは、所定のチケット数を保有するプロセスに対するデバイスの使用頻度を決定するためのパラメータである。性能コストは所定のオークション・リミットを保有するプロセスに提供するデバイスの性能を決定するためのパラメータである。これらのメタファは、本発明の思想に基づいたときに同じ性質のパラメータを示すものであればその名称はいかなるものであってもよい。
【００２４】
環境情報とは、デバイスに対して設定された使用コストおよび性能コストに影響を与える因子であり、コンピュータ・システムの特定の利用目的に関連している定量化されたデータである。環境情報は、温度や湿度などのような自然状態を示す一次因子でも、それをコンピュータ・システムが加工して生成した人工的な二次因子、三次因子でもよい。環境情報はコンピュータ・システムの動作時間中に変動する場合もあるが、当該動作時間中は一定しているが停止後の次の動作時間には変化しているような場合もある。環境情報は、コンピュータ・システムの内部で生成しても、またネットワークを通じてコンピュータ・システムの外部から受け取ってもよい。
【００２５】
[デバイスの時分割使用の管理]
本実施形態においては、コンピュータ・システムの内部で新たなプロセスが生成されると、そのプロセスは時間軸上で変化するチケット数を保有するようになる。そのチケット数は、たとえば時間経過とともに増加しプロセスがデバイスを使用したときに更新されその後同様に増加することを繰り返す。単位時間あたりの増加率はプロセスごとに異なる値に設定することができる。具体的な方法として、各プロセスに対してコンピュータ・システムが単位時間ごとに単位チケット数を付与する。付与された単位チケット数は積算されて各プロセスが現在のチケット数として保有する。一例では、単位チケット数をすべてのプロセスに対して同じ値とし、単位時間をプロセスごとに異なる値とする。他の例では、単位時間をすべてのプロセスに対して同じ値とし、単位チケット数をプロセスごとに異なる値に設定する。
【００２６】
いずれの場合でも、プロセスごとに単位時間あたりに付与するチケット数を異なる値にすることができる。また、コンピュータ・システムの各デバイスには、使用コストが設定される。プロセスは、あるデバイスの使用コスト以上の現在のチケット数を保有していればそのデバイスを使用することができる。現在のチケット数が足りなければ、さらに所定の単位時間ごとに単位チケット数を受け取ってチケット数が足りるようになるまで待つ必要がある。プロセスがデバイスを使用すると、現在のチケット数が所定の消費チケット数だけ減算されたりリセットされてゼロになったりする。その後単位チケット数はプロセスが存在する限り同じ割合で付与される。一旦設定したチケット数の単位時間当たりの増加率は、時間軸上で永久に固定しておく必要はなく環境情報に基づいて変化させてもよい。
【００２７】
図１（Ａ）は、デバイスの使用コスト１１を時間軸上で一定にしたときに、単位時間当たりのチケット数の増加率が異なるプロセス１３とプロセス１５が、時分割利用タイプのデバイスを使用するときの様子を示す図である。この例では、時間軸上でプロセス１３のチケット数は、プロセス１５のチケット数に対して２倍の速度で増加している。あるいは、同一のチケット数を得るまでの時間がプロセス１３はプロセス１５の半分になっている。
【００２８】
実際にプロセスがデバイスを使用するタイミングは、ＯＳのスケジューラの制御状態により変化するが、図１（Ａ）では、プロセス１３は時刻ｔ１で現在のチケット数が使用コストに等しくなり、プロセス１５は時刻ｔ２で現在のチケット数が使用コストに等しくなって、それぞれデバイスを使用したものとして表現している。各プロセスがデバイスを使用すると、現在のチケット数はリセットされ、その後プロセスが存在する限り同じ割合で増加している。プロセス１３、１５がデバイスを使用したときには、ある数量の消費チケット数を現在のチケット数から減算するようにしてもよい。
【００２９】
リセットする場合は、時間軸上でつねにプロセス１３はプロセス１５より使用コスト１１のデバイスに対して２倍の使用頻度を獲得するが、減算する場合は、それ以前のデバイスの使用状態によりそれ以降の使用頻度が変わる。たとえば、プロセス１５が、過去に長い時間デバイスを使用しないで多くのチケット数を保有している場合は、それ以後プロセス１５はプロセス１３よりも高い使用頻度でデバイスを使用することがあり得る。したがって、コンピュータ・システムごとに導入されているアプリケーションの種類やデバイスの管理方法によってそれぞれの特徴を判断してリセットするか減算するかを決めることが望ましい。
【００３０】
図１（Ｂ）は、使用コスト１７が環境情報に基づいて時間的に変化している場合に、プロセス１３とプロセス１５がデバイスを使用するときの様子を示している。この場合は使用コスト１７が、環境情報に従属して時間軸上で線形に増大している。図１（Ａ）では、時間的に増加する現在のチケット数の割合によりプロセス間でのデバイスの使用頻度を調整することができた。しかし、コンピュータ・システムでは、デバイスの使用頻度をプロセス間の優劣に基づいた調整だけで最適化できるとは限らない。たとえば、ポータブル・コンピュータは、バッテリィ残量により使用可能時間が決まる。この場合に、どれだけの使用可能時間をポータブル・コンピュータに残すかということはプロセス間の優劣に基づいた調整では決めることができない。なぜなら、優位におかれたプロセスが高い頻度でデバイスを使用するということは、残りの使用可能時間の調整という視点を欠くからである。
【００３１】
これに対して、バッテリィ残量が少なくなったときにすべてのプロセスに対してアクセス頻度を制限するという方法も考えられる。この場合は、使用可能時間の調整を図ってはいるが、プロセス間の優劣という視点を欠く。バッテリィ残量が少なくなったときの望ましいコンピュータ・システムの制御は、残りの使用可能時間を長くするという目的に対して複数のプロセス全体に平均的に協力させながら、その一方で特定のプロセスには優先的にデバイスを使用できるようにすることである。その場合、いかなるプロセスにもデバイスを使用させなかったり、特定のデバイスにだけデバイスを使用させなかったり、デバイスを使用させない時間を制限したりするようなことまで含んだきめ細かな制御をする必要がある。
【００３２】
図１（Ｂ）では、環境情報としてバッテリィの残存容量を採用し、残存容量が少なくなるにしたがってデバイスの使用コストを増大させているが、プロセス１３とプロセス１５のいずれに対しても図１（Ａ）と同じ条件で単位チケット数を付与している。いずれのプロセスも時間の経過とともにデバイスを使用できる頻度が低下しているが、時間軸上でみた場合には、図１（Ａ）と同様に、プロセス１３はプロセス１５よりも２倍の頻度でデバイスを使用していることが理解できる。プロセス１３に無限のチケット数を付与すれば、環境情報の影響を完全に排除することもできる。また、バッテリィの残存容量に対して使用コストが増大する割合（使用コスト１７の傾き）を変えることにより、ユーザがアプリケーションを実行する際の快適度とバッテリィ駆動による残りの使用可能時間という二律背反の状態を適当な状態に設定することができる。
【００３３】
[デバイスの性能管理]
図１（Ａ）、図１（Ｂ）では、時間軸上において使用コストとチケット数を変化させてプロセスがデバイスを使用する頻度を制御する方法を説明したが、性能コストとオークション・リミットを用いたデバイス性能の選択方法を、図１（Ｃ）を参照して説明する。性能コストは使用コストに対応し、オークション・リミットはチケット数にそれぞれ対応するパラメータである。デバイスの中には、コンピュータが同一の機能で異なる性能のデバイスとして認識するものがある。たとえば、ディスプレイ装置の中にはデバイス・ドライバがコントローラに任意の輝度を設定できるものがある。したがって、コンピュータ・システムはディスプレイ装置を輝度という性能の異なる複数のデバイスとして認識する。
【００３４】
ディスプレイ装置は輝度を上昇させるほどユーザの快適度は向上するが消費電力が増大してバッテリィでの動作時間が短縮するので輝度の大きなディスプレイ装置ほど性能コストを高く設定する。図１（Ｃ）は、３つのプロセス１９、２１、２３が性能が輝度で区分された輝度大のディスプレイ装置２９、輝度中のディスプレイ装置２７、および輝度小のディスプレイ装置２５の中からいずれかを選択するときの様子を示している。それぞれのディスプレイ装置２９、２７、２５にはコンピュータ・システムが性能コストとしてそれぞれ３００、２００、１００を設定する。
【００３５】
プロセス１９、２１、２３には、コンピュータ・システムによりそれぞれオークション・リミット１００、２００、３００が与えられている。いま、プロセス１９、２１、２３のそれぞれに対して使用を許可するディスプレイ装置を選択するときは、プロセスは自らが保有するオークション・リミットをディスプレイ装置に対して提示する。そしてプロセスは、オークション・リミット以下で最大の性能コストが設定されたディスプレイ装置の使用許可を受ける。プロセス２３は、３００のオークション・リミットを保有するので、すべてのディスプレイ装置２５、２７、２９を使用することができ、プロセス２１は、ディスプレイ装置２５、２７を使用することができ、プロセス１９はディスプレイ装置２５だけを使用することができる。
【００３６】
プロセスが保有するオークション・リミットやデバイスに設定する性能コストは、コンピュータ・システムの動作中に環境情報に応じて変化させることもできる。たとえば、バッテリィの残存容量が低下したときに、すべてのプロセス１９、２１、２３のオークション・リミットを１００にすれば、いずれのプロセスにもディスプレイ装置２５だけを使用させることができる。あるいは、ディスプレイ装置２７の性能コストを３００まで増大させると、プロセス１９とプロセス２１はいずれもディスプレイ装置２５だけを使用するようになる。
【００３７】
[ノートＰＣのハードウエアの構成]
図２は、本実施の形態にかかるノートＰＣ５０のハードウエアの構成を示す概略ブロック図である。ＣＰＵ５１は、ノートＰＣの中枢機能を担う演算処理装置で、ＯＳ、ＢＩＯＳ、デバイス・ドライバ、あるいはアプリケーション・プログラムなどを実行する。ＣＰＵ１１はまた、図３に記載した本実施の形態にかかる、チケット／コスト・マネージャ１０２および中間ドライバ１０５ａ〜１０５ｃを実行する。ＣＰＵ５１は、ＣＰＵブリッジ５３およびＩ／Ｏブリッジ５５を中心に構成されるチップセットにさまざまなバスを経由して接続された各デバイスを制御する。ＣＰＵ５１は、所定の時間周波数と低下させたり、電圧を低下させたりするいわゆるスロットリングという機能を備える。ＣＰＵブリッジ５３は、メイン・メモリ５７へのアクセス動作を制御するためのメモリ・コントローラ機能や、ＣＰＵ５１と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能などを含む。
【００３８】
メイン・メモリ５７は、ＤＤＲ（Double Data Rate）バスを介してＣＰＵ２１に接続され、ＣＰＵ５１が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用される書き込み可能メモリである。メイン・メモリ５７には、プロセスの生成に応じて図３に示したコスト・データベース１０９およびチケット・データベース１１１が構築される。ビデオ・コントローラ５９は、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｘ１６バス６１を介してＣＰＵ５１に接続され、ビデオ・チップおよびＶＲＡＭ（図示せず）を搭載して、ＣＰＵ５１からの描画命令を受けて描画すべきイメージを生成しＶＲＡＭに書き込み、ＶＲＡＭから読み出されたイメージを描画データとして液晶ディスプレイ６３に送る。液晶ディスプレイ６３は、ＣＰＵ５１からの信号に基づいてドライバが輝度を数段階に設定できるように構成されている。
【００３９】
ビデオ・コントローラ５９には、グラフィック・アクセラレータが搭載されており、ＣＰＵ５１からの信号に基づいてドライバがグラフィック・アクセラレータを有効または無効に設定することができる。グラフィック・アクセラレータの設定を有効にするとメイン・メモリ５７からＣＰＵ５１を経由しないでＶＲＡＭにデータを転送して高解像度の画像を表示することができる。
【００４０】
無線モジュール６５は、たとえばＩＥＥＥ８０２．１１ｎに準拠した多入力多出力（ＭＩＭＯ）の無線通信に適合しており、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｘ１バスを介してＩ／Ｏブリッジ５５に接続され、アンテナを介して無線ネットワークとのデータ通信を行う。またＩ／Ｏブリッジ５５は、シリアルＡＴＡインターフェイスおよびＵＳＢインターフェイスとしての機能も含み、シリアルＡＴＡを介してハードディスク・ドライブ(ＨＤＤ)６７、および光学ドライブ（図示せず）などと接続される。さらにＩ／Ｏブリッジ５５は、ＰＣＩバスまたはＬＰＣバス７３を介して、従来からノートＰＣに使用されている古い規格に対応するデバイスであるレガシー・デバイス、あるいは高速なデータ転送を要求しないデバイスに接続される。
【００４１】
ＬＰＣバス７３には、エンベデッド・コントローラ７５、Ｉ／Ｏコントローラ７７、さらにシステムの起動に使用されるＢＩＯＳを格納したＢＩＯＳ−ＲＯＭ（図示せず）などが接続されている。エンベデッド・コントローラ７５は、８〜１６ビットのＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータであり、さらに複数チャネルのＡ／Ｄ入力端子、Ｄ／Ａ出力端子、タイマー、およびデジタル入出力端子を備えている。エンベデッド・コントローラ７５には、それらの入出力端子を介して冷却ファン（図示せず）、温度センサ７９、および電源装置を制御するパワー・コントローラ８１などが接続されており、ノートＰＣ内部の動作環境の管理にかかるプログラムをＣＰＵ５１とは独立して実行させることができる。温度センサ７９は、ノートＰＣ５３の筐体内部の温度を測定し、それに対応したアナログ電圧をエンベデッド・コントローラ７５のＡ／Ｄ入力端子に出力する。Ｉ／Ｏコントローラ７７には、キーボードやマウスなどからなる入力装置８３が接続される。
【００４２】
エンベデッド・コントローラ７５は、筐体内部の温度に基づいて冷却ファンの回転数を制御したり、ＣＰＵ５１の動作周波数を制御したりする。エンベデッド・コントローラ７５とパワー・コントローラ８１との間は、専用のバスであるＳＰＩ（Serial Peripheral Interface）によって接続される。パワー・コントローラ８１には、電源装置８５が接続される。
【００４３】
電源装置８５は、ＡＣアダプタ８９またはバッテリ８７から供給される直流電力を、ノートＰＣ５０を動作させるために必要な複数の電圧に変換して各々のデバイスに対して電力を供給するＤＣ−ＤＣコンバータを含む。ＡＣアダプタ８９は、ノートＰＣ１に対して着脱自在である。また、電源装置８５は充電器を含み、ＡＣアダプタ８９がノートＰＣ５０に接続されている場合は、バッテリ８７は充電器で充電される。バッテリィ８７は内部にＣＰＵを含むインテリジェント・バッテリィ・パックとして構成されており、エンベデッド・コントローラ７５に残存容量のデータを定期的に送る。
【００４４】
なお、図２は本実施の形態を説明するために、本実施の形態に関連する主要なハードウウエアの構成および接続関係を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、ノートＰＣ５０を構成するには多くのデバイスが使われるが、それらは当業者には周知であるので、ここでは詳しく言及しない。図で記載した複数のブロックを１個の集積回路もしくは装置としたり、逆に１個のブロックを複数の集積回路もしくは装置に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。また、各々のデバイスの間を接続するバスおよびインターフェイスなどの種類はあくまで一例に過ぎず、それら以外の接続であっても当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
【００４５】
[ノートＰＣのソフトウエアの構成]
図３は、ノートＰＣ５０に実装されたソフトウエアおよびハードウエアの関係を説明するためのブロック図である。ＯＳ１０３は、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、またはＵＮＩＸ（登録商標）などのプリエンプティブなマルチタスクＯＳである。ＯＳ１０３上では、周知のアプリケーション１０１ａ、１０１ｂ、１０１ｃが動作する。図３においては、チケット／コスト・マネージャ１０２、中間ドライバ１０５ａ、１０５ｂ、１０５ｃ、コスト・データベース１０９、およびチケット・データベース１１１を除いた要素は周知である。中間ドライバ１０５ａ、１０５ｂ、１０５ｃは、ＯＳ１０３に組み込まれてＣＰＵ５１が特権モードのときに動作する。
【００４６】
チケット／コスト・マネージャ１０２は、単位チケット数や、オークション・リミット、使用コストおよび性能コストなどの情報を管理・保有するプログラムである。チケット／コスト・マネージャ１０２は、メイン・メモリ５７にコスト・データベース１０９とチケット・データベース１１１を構築する。チケット／コスト・マネージャ１０２は、チケット・データベース１１１に単位チケット数を積算した現在のチケット数とそれに対応するプロセスの識別子とを記録する。チケット／コスト・マネージャ１０２は、チケット・データベース１１１にプロセスの識別子に対応するオークション・リミットを記憶する。
【００４７】
チケット／コスト・マネージャ１０２、コスト・データベース１０９にデバイスの識別子と使用コストおよび性能コストの情報を記憶する。チケット／コスト・マネージャ１０２はさらに、使用コスト、性能コスト、およびオークション・リミットを環境情報に応じて変更してコスト・データベース１０９を更新することができる。
【００４８】
ＯＳ１０３は、カーネル部分に周知のプロセス管理１０３ａ、プロセス・スケジューラ１０３ｂ、デバイス・マネージャ１０３ｃを含む。図３にはデバイスとして、ＣＰＵ５１、メイン・メモリ５７、ディスプレイ６３、無線モジュール６５、およびＨＤＤ６７を代表的に示している。ドライバ１０７ａ、１０７ｂ、１０７ｃは対応するデバイスを動作させる専用プログラムである。デバイス・ドライバ１０７ａ、１０７ｂ、１０７ｃとＯＳ１０３の間では、中間ドライバ１０５ａ、１０５ｂ、１０５ｃが動作する。
【００４９】
中間ドライバ１０５ａ、１０５ｂ、１０５ｃは、ＣＰＵ５１で実行されるプロセスからのデバイスに対するすべてのアクセスをモニターして、コスト・データベース１０９とチケット・データベース１１１に問い合わせ、対応するデバイスが使用可能か否かを判断してＣＰＵ５１に通知する。中間ドライバは、対応するデバイスがプロセスにより使用されたときは、チケット・データベース１１１に登録されていた現在のチケット数から所定の消費チケット数を減算したり、現在のチケット数をリセットしたりしてチケット・データベース１１１を更新する。チケット・データベース１１１の更新は、中間ドライバがチケット・マネージャ１０２にリクエストして間接的に行うこともできるし、適切なセマフォを用いて中間ドライバ１０５ａ、１０５ｂ、１０５ｃが直接更新することもできる。
【００５０】
[プロセス]
図４（Ａ）は、マルチタスクＯＳ１０３のもとで動作するアプリケーション１０１ａ、１０１ｂ、１０１ｃに対して生成されたプロセスの状態を示す状態遷移図で、図４（Ｂ）は、各プロセスの状態を表すプロセス制御ブロック（ＰＣＢ）のデータ構造を示す図である。いずれかのアプリケーションが実行されると、ＯＳのプロセス管理１０３ａはプロセスごとに必要なデバイスを割り付けてプロセスを生成する。プロセスは基本的に、プロセスの生成（Created）１５１、実行可能状態（Ready state）１５３、実行状態（Running）１５５、実行待ち状態（Waiting State）１５７、およびプロセスの消滅（Terminated）１５９のいずれかの状態にある。
【００５１】
プロセスは、実行中のプログラムとＣＰＵ５１の状態を示す情報などで構成されており、ＯＳはプロセスをＰＣＢ１６１というデータ構造で管理する。ＰＣＢ１６１において、プロセッサ状態は、ＣＰＵ５１がプロセスを中断したときのレジスタ、スタック、およびプログラム・カウンタなどの状態に関する情報でコンテキストともいう。プロセスの優先度は、プロセス間におけるコンテキスト・スイッチの優先順位を示す情報である。
【００５２】
タイム・スライス情報は、タイム・スライスの初期値や残り時間に関する情報である。タイム・スライスとはプロセスがＣＰＵに対して一度の実行権を獲得したときに許される最大実行時間をいう。プロセス識別子は、各プロセスに割り当てられた一意の番号である。デバイス情報は、当該プロセスに割り当てられたデバイスの識別情報である。ＰＣＢ１６１には、ＯＳにより異なるその他のさまざまな情報が含まれる。
【００５３】
ＯＳ１０３により生成されたプロセスのＰＣＢ１６１はＯＳ１０３のデータ領域に確保された実行可能キューに登録されて実行可能状態１５３になる（遷移１）。実行可能キューには同一または他の複数のアプリケーションに対して生成された複数のプロセスが登録されている。スケジューラ１０３ｂは、プロセスの優先度を含む所定のスケジューリング・アルゴリズムでプロセスを実行状態１５５と実行可能状態１５３の間で遷移させてコンテキスト・スイッチを行う（遷移２、遷移３）。実行可能状態１５３から実行状態１５５に遷移させることをディスパッチといい、さまざまなアルゴリズムを採用することができる。プリエンプティブなマルチタスクを行うスケジューラ１０３ｂは、実行中のプロセスに与えられたタイム・スライスが経過すると、当該プロセスに対するＣＰＵ５１の実行権を強制的に横取りしてプロセスを実行可能キューに登録し、他のプロセスを実行状態１５５に移行させる。
【００５４】
実行状態１５５に入ったプロセスが、自らの実行に必要なデバイスが取り外されたり故障したりして使用できない状態になっていることが判明したときは、実行待ち状態１５７に移行し（遷移４）、ＯＳ１０３はＰＣＢ１６１をＯＳのデータ領域に確保された実行待ちキューに登録する。実行待ちキューに登録されたプロセスに割り付けられていたデバイスが使用可能になると、そのデバイスはＯＳ１０３経由でＣＰＵ５１に割り込みをかけてプロセス管理１０３ａに通知し、プロセス管理１０３ａは当該プロセスを実行待ち状態１５７から実行可能状態１５３に移行させＰＣＢ１６１を実行可能キューに登録する。その後プロセスは、スケジューラ１０３ｂのアルゴリズムに基づいて実行状態１５５に移行してＣＰＵ５１により実行される。ＣＰＵ５１で実行されたプロセスが終了すると、プロセス管理１０３ａは、当該プロセスをプロセスの消滅１５９に移行させる（遷移６）。
【００５５】
[プロセスによるデバイスの使用手順]
図５は、ノートＰＣ５０においてアプリケーション１０１ａがＨＤＤ６７を使用するときの手順を示すフローチャートである。ブロック２０１でアプリケーション１０１ａが実行されると、ブロック２０３でプロセス管理１０３ａがプロセスＸを生成する。プロセスＸは、実行に際してＨＤＤ６７を使用する必要があるため、ブロック２０５でプロセス管理１０３ａはプロセスＸにＨＤＤ６７を割り付ける。ブロック２０７でプロセス管理１０３ａは、プロセスＸのＰＣＢ１６１を作成してブロック２０９で実行可能キューに登録する。ＰＣＢ１６１は、プロセスＸの識別子とＨＤＤ６７の識別子を含む。
【００５６】
スケジューラ１０３ｂは、所定のスケジューリング・アルゴリズムに基づいて、実行可能キューに登録されたプロセスＸおよびその他のプロセスに対して実行可能状態１５３と実行状態１５５の間でのコンテキスト・スイッチを行う。ブロック２１１で、プロセスＸをディスパッチする順番がくると、スケジューラ１０３ｂは、プロセスＸを実行状態１５５に移行させる。ＣＰＵ５１は、プロセスＸのＰＣＢ１６１をメモリに読み込んだりレジスタやスタックに反映させたりして実行を開始する。ブロック２１３において、プロセスＸはＨＤＤ６７の使用をデバイス・ドライバ１０７ｃに要求する。
【００５７】
中間ドライバ１０５ｃは、プロセスＸから要求されたＨＤＤ６７に対するアクセス情報をすべてモニターし、プロセスＸに対してＨＤＤ６７の使用を許可するか否かを判断する。なお、この判断に関する詳細は図６のフローチャートで後に説明する。中間ドライバ１０５ｃがＨＤＤ６７の使用を許可しない場合はブロック２１７に移行する。ＨＤＤ６７の使用を許可する場合は、ブロック２１９に移行してプロセスＸはＨＤＤ６７を使用することが可能になり、ブロック２２１でプロセスが実行される。
【００５８】
ブロック２２３では、プロセス管理１０３ａが、プロセスＸが終了したか否かを判断し、終了した場合はブロック２２７のプロセスの消滅状態１５９に移行させてプロセスＸを消滅させる。この時点でプロセスＸに関するＰＣＢ１６１は消滅する。プロセスが終了していない場合およびＨＤＤ６７の使用が許可されなかったときは、スケジューラ１０３ｂがブロック２２５で今回のプロセスＸに対するタイム・スライスが終了したか否かを判断し、終了していない場合はブロック２１３に戻る。タイム・スライスが終了したときは、スケジューラ１０３ｂは、プロセスＸをブロック２０９に移行させて、ＰＣＢ１６１を実行可能キューに登録し、他のプロセスをＣＰＵ５１にディスパッチする。ブロック２１７からブロック２１３に移行する場合は、プロセスＸはＨＤＤ６７を使用することができなかったためそのタイム・スライスは無駄に消費されたことになる。
【００５９】
[デバイスの使用許可の手順]
図６は、プロセスＸにＨＤＤ６７の使用を許可するか否かを判断する手順を示すフローチャートである。ブロック３０１は図５のブロック２０３に対応しており、プロセス管理１０３ａによりプロセスＸが生成される。ブロック３０３および３０５では、プロセス管理１０３ａからプロセスＸを生成したことの通知を受けたチケット／コスト・マネージャ１０２がメイン・メモリ５７にコスト・データベース１０９とチケット・データベース１１１を構築し初期化する。コスト・データベース１０９とチケット・データベース１１１では、プロセスＸが消滅するとチケット／コスト・マネージャ１０２によりプロセスＸに関する情報は廃棄される。チケット・データベース１１１には、プロセスごとの識別子と単位チケット数が蓄積された現在チケット数が記憶される。
【００６０】
チケット／コスト・マネージャ１０２は、ノートＰＣ５０に搭載されるアプリケーションを特権グループ、通常グループ、低位グループに区分けして、同一グループに含まれるアプリケーションのプロセスには単位時間当たりに付与する単位チケット数を同一にすることができる。そして、特権グループのプロセスにはつねに無限大の単位チケット数を付与し、通常グループのプロセスには１００ミリ秒ごとに１００の単位チケット数を付与し、低位グループのプロセスには２００ミリ秒ごとに１００の単位チケット数を付与することができる。あるいは、通常グループのプロセスには１００ミリ秒ごとに１００の単位チケット数を付与し、低位グループのプロセスには１００ミリ秒ごとに５０の単位チケット数を付与することができる。
【００６１】
特権グループには、システム・プロセス、ネットワーク・スタック、ＥＸＰＬＯＲＥＲ、およびそのほかのアプリケーションを含めることができる。通常グループには、文書作成ソフト、表計算ソフト、電子メール・クライアントなどのオフィス・アプリケーション、およびすべての未定義のアプリケーションを含めることができる。低位グループには、ウィルス・チェックやデフラグなどのバックグラウンド・サービスのアプリケーションを含めることができる。
【００６２】
コスト・データベース１０９には、デバイスごとにその識別子と現在の使用コストが登録される。現在の使用コストとは、最初に設定された使用コストが時間経過の中で環境情報に応じて変更される可能性があることを意味している。最初に設定された使用コストがその後も変更されない場合は最初に設定された使用コストが現在の使用コストになる。最初に設定される使用コストは、消費電力の大きいデバイスほど大きくなるといったように設定することができる。
【００６３】
ブロック３０７では、チケット／コスト・マネージャ１０２は、保有している初期の使用コストを、デバイス・マネージャ１０３ｃに登録されているＨＤＤ６７に対してコスト・データベース１０９に現在の使用コストとして登録する。チケット／コスト・マネージャ１０２は、各デバイスの使用コストを環境情報に基づいて時間軸上で変更することができる。たとえば、エンベデッド・コントローラ７５からバッテリィ８７の残存容量を環境情報として取得し、残存容量が低下したときにその程度に応じて特定のデバイスの使用コストを増大させてすべてのプロセスに対して平均的に当該デバイスの使用頻度を低下させることができる。したがって、現在の使用コストは、チケット／コスト・マネージャ１０２が保有するあらかじめ定められた一定の値でも環境情報に応じてノートＰＣ５０の動作中に変更される値でもよい。一定の値の場合は、コスト・データベース１０９に登録する時点の使用コストが現在の使用コストになる。
【００６４】
ブロック３０９では、チケット／コスト・マネージャ１０２はプロセス管理１０３ａから得た情報に基づいて、プロセスＸの現在の状態が実行状態１６５または実行可能状態１５３にあるか否かを判断する。プロセスＸが２つの状態のいずれかである場合は、チケット／コスト・マネージャ１０２はチケット・データベース１１１に定期的に単位チケット数を積算していき現在のチケット数を記憶させる。プロセスＸが２つの状態のいずれでもない場合には単位チケット数は付与されない。したがって、プロセスＸが実行待ち状態１５７になっているときには、単位チケット数は付与されない。
【００６５】
ブロック３１３は、図５のブロック２１３に対応しており、実行状態１５５にあるプロセスＸがデバイス・ドライバ１０７ｃに対してＨＤＤ６７の使用要求をする。中間ドライバ１０５ｃは、各プロセスからのＨＤＤ６７に対するアクセスを常時モニターしており、プロセスＸからアクセスがあると、コスト・データベース１０９とチケット・データベース１１１にそれぞれプロセスＸに関する現在の使用コストと現在のチケット数を問い合わせる。
【００６６】
ブロック３１５では、中間ドライバ１０７ｃは現在の使用コストと現在のチケット数を比較して、現在のチケット数が大きければブロック３１９でプロセスＸに対するＨＤＤ６７の使用を許可し、現在のチケット数が小さければブロック３１７でプロセスＸに対するＨＤＤ６７の使用を禁止する。ブロック３１９とブロック３１７の状態は、図５のブロック２１９とブロック２１７に反映される。ブロック３２１では、プロセスＸによりＨＤＤ６７が使用されると、中間ドライバ１０５ｃは、ブロック３２３でチケット・データベース１１１のプロセスＸに関する現在のチケット数から消費チケット数を減算してチケット・データベース１１１を更新する。
【００６７】
中間ドライバ１０５ｃは、消費チケット数を減算することに代えて、現在のチケット数をリセットしてゼロにしてもよい。消費チケット数を減算する場合は、スケジューラ１０３ａによりディスパッチされるまでの時間が長いようなプロセスは、その間に多くの単位チケット数の付与を受けて、その後デバイスを高い頻度で使用することができる。現在のチケット数をリセットする場合は、時間軸上で付与される単位チケット数と付与する単位時間により定まる一定の頻度でプロセスがデバイスを使用する状態になる。
【００６８】
ブロック３１７でプロセスＸがデバイスの使用が禁止されている場合は、そのタイム・スライスの間は、実質的にプロセスＸは実行されない。タイム・スライスが経過するとプロセスＸは実行待ちキューに登録される。そして、再度ＣＰＵ５１にディスパッチされたときには、ブロック３１３に戻ってＨＤＤ６７の使用要求をし、現在のチケット数が現在の使用コストより大きくなっていればブロック３１９に移行することができる。
【００６９】
[チケット数とデバイスの使用状況]
図７は、図５、図６の手順でプロセスＸがＨＤＤ６７を使用するときの様子を説明する図である。図７では一例として、ＨＤＤ６７の使用コストを３００とし、プロセスＸは単位時間当たり１００の単位チケット数を受け取るものとする。時刻ｔ１、ｔ２・・・ｔ８の各時刻とそれに隣接する時刻との間の時間は単位時間である。図７（Ａ）では、プロセスＸがＨＤＤ６７を使用したときに現在のチケット数から消費チケット数が２００減算される例を示し、図７（Ｂ）は、プロセスＸがＨＤＤ６７を使用したときに現在のチケット数がゼロにリセットされる例を示している。
【００７０】
図７（Ａ）において、プロセスＸには時刻ｔ１、ｔ２、ｔ３・・・ｔ８ごとに単位チケット数１００が付与される。タイム・スライス＃１〜＃１１は、スケジューラ１０３ｂによりプロセスＸが実行状態におかれた時刻の位置に示されている。時刻ｔ３の直前では、チケット・データベース１１１に記憶された現在のチケット数が２００であり、使用コスト３００に満たないため、タイム・スライス＃１〜＃３ではプロセスＸがＨＤＤ６７を使用することができない。時刻ｔ３で現在のチケット数が３００まで増大しため、使用コスト３００に到達しタイム・スライス＃４においてプロセスＸはＨＤＤ６７を使用することができる。
【００７１】
時刻ｔ４では、チケット・データベース１１１において現在のチケット数から消費チケット数である２００が減算され現在のチケット数は１００になる。時刻ｔ５では現在のチケット数が３００になり、プロセスＸがディスパッチされたタイム・スライス＃７でＨＤＤ６７が使用される。それ以降は同様に単位チケット数の積算と消費チケット数の減算が行われ、プロセスＸはタイム・スライス＃１０でＨＤＤ６７を使用することができる。
【００７２】
図７（Ｂ）では、図７（Ａ）と同様に時刻ｔ３でタイム・スライス＃４においてプロセスＸが実行されると、現在のチケット数はゼロにリセットされている。そして、同様に単位チケット数の積算と現在のチケット数のリセットが行われ、プロセスＸはタイム・スライス＃８でＨＤＤ６７を使用することができる。
【００７３】
[デバイスの性能の選択の手順]
図８は、ノートＰＣ５０においてディスプレイ装置６３の性能を選択するときの手順を示すフローチャートである。図８は、図５のブロック２１９で使用するデバイスを決定する手順に相当する。ブロック４０１では、プロセスＸが生成される。ブロック４０３および４０５では、プロセス管理１０３ａがプロセスＸを生成したことの通知を受けたチケット／コスト・マネージャ１０２がメイン・メモリ５７にコスト・データベース１０９とチケット・データベース１１１を構築し初期化する。
【００７４】
ブロック４０７では、チケット／コスト・マネージャ１０２は、保有している初期の性能コストをデバイス・マネージャ１０３ｃに登録されているノートＰＣ５０のデバイスに対して、コスト・データベース１０９に現在の性能コストとして登録する。ブロック４０９ではチケット／コスト・マネージャ１０２は、プロセスＸに対して保有している初期のオークション・リミットをチケット・データベース１１１に現在のオークション・リミットとして登録する。現在の性能コストおよび現在のオークション・リミットとは、初期の性能コストおよび初期のオークション・リミットがチケット／コスト・マネージャ１０２により時間経過の中で環境情報に基づいて変更される可能性があることを意味する。
【００７５】
ディスプレイ６３の現在の性能コストと現在のオークション・リミットの一例を図９に示す。図９では、輝度を小、中、大の３段階に分けてそれぞれに性能コストとして１００、３００、５００を設定している。すべてのプロセスは特権グループ、通常グループ、および劣位グループの３つのグループのいずれかに入るように識別されている。そして特権グループのプロセスには、無限大のオークション・リミットを付与し、通常グループのプロセスには、３００のオークション・リミットを付与し、さらに劣位グループのプロセスには１００のオークション・リミットを付与している。
【００７６】
劣位グループのプロセスは、ノートＰＣ５０を省電力モードで動作させるときにユーザの快適度をできるだけ損なわないアプリケーションに対応しており輝度が小のディスプレイだけで使用することができる。特権グループのプロセスは、輝度が大、中、小のいずれのディスプレイ装置６３でも使用することができる。通常グループのプロセスは、輝度が中、小のいずれかのディスプレイ装置６３を使用することができる。
【００７７】
チケット／コスト・マネージャ１０２は、現在の性能コストおよび現在のオークション・リミットまたはそのいずれか一方を環境情報に応じて時間軸上で変更することができる。たとえば、バッテリィの残存容量が低下してきたときには、特権グループと通常グループのプロセスに付与するオークション・リミットも１００にして、すべてのプロセスが、輝度が小のディスプレイ装置６３だけを使用するようにする。あるいは、輝度が中のディスプレイ装置６３の性能コストを５００に変更して、通常グループのプロセスは輝度が小のディスプレイ装置６３を使用するようにする。
【００７８】
ブロック４１１では、プロセスＸが実行状態１５５に移り、デバイス・ドライバ１０７ａにディスプレイ装置６３の使用要求をする。ブロック４１３では、中間ドライバ１０５ａがプロセスＸの現在のオークション・リミットとディスプレイ装置６３に設定された現在の性能コストを比較して、オークション・リミット以下で最も性能コストの高い輝度のディスプレイ装置６３を選択する。ただし、中間ドライバ１０５ａは性能コストがオークション・リミット以下の他の輝度のディスプレイ装置６３を選択してもよい。そして新たに選択した輝度のディスプレイ装置６３が現在他のプロセスで使用されているディスプレイ装置６３の性能も含めて最大の性能であるか否かを判断する。
【００７９】
新たに選択したディスプレイ装置６３が現在他のプロセスで使用されているディスプレイ装置６３の性能も含めて最大の性能であるときは、ブロック４１７に移行して新たに選択した輝度のディスプレイ装置６３をいずれのプロセスにも使用させるようにデバイス・ドライバ１０７ａに通知する。新たに選択したディスプレイ装置が最大の性能でないときは、ブロック４１５に移行して、新たに選択した性能を採用しないでデバイス・ドライバ１０５ａはそれ以前に設定されていた輝度を維持する。
【００８０】
したがって、それまでに設定されていた輝度よりも大きな輝度が選択されたときだけ中間ドライバ１０５ａは、デバイス・ドライバ１０７ａの輝度設定を変更するので、実行するプロセスの変化により頻繁に輝度が変化するような状態を回避することができる。ブロック４１３の判断は、プロセスが変化したことにより頻繁に性能が変化することが望ましくないデバイスだけに適用するものであり、必ずしもすべてのデバイスに必要な手順ではない。
【００８１】
複数の性能を備えるデバイスとしては、輝度の変更が可能なディスプレイ装置の他に、アクセラレータを有効にしたり無効にしたりすることができるグラフィック・デバイスがある。この場合はデバイス・ドライバの設定によりアクセラレータを有効にした場合を性能大および性能中にして、アクセラレータを無効にした場合を性能小に設定することができる。さらにアクセスがないときのＨＤＤの回転速度を高速にした場合を性能大および性能中にして、回転速度を低速にした場合を性能小に設定することができる。これらの性能の大きさに応じて性能コストを設定することで、バッテリィ駆動の場合の使用可能時間とノートＰＣ５０におけるアプリケーションの実行の快適度を調和させることができる。
【００８２】
[応用例]
これまでは、使用コスト、チケット数量、性能コスト、およびオークション・リミットというメタファを採用し、さらに環境情報としてバッテリィの残存容量を採用してデバイスを管理して残りの使用可能時間の調整を行う方法を中心に説明した。しかし、本発明のデバイスの管理方法によれば、従来のプロセスに対するデバイスの管理方法では解決できないさまざまな課題を解決することができる。
【００８３】
環境情報としては、温度センサ７９が検出したノートＰＣ５０の筐体内部の温度を利用することができる。ノートＰＣ５０は筐体内部の温度が上昇して限界温度を超えると、ＣＰＵ５１の周波数を低下させたり、ディスプレイ装置６３の輝度を低下させたりすることができる。そのような状態は、デバイスのサービス度が低下してユーザの快適度と相反するものである。筐体内部の温度が一旦限界温度を超えると、制御にはヒステリシス特性があるので、もとの状態に戻るまで一定の時間がかかりその間ユーザの利用快適度は損なわれる。
【００８４】
したがって、筐体内部の温度が上昇したときには、限界温度を超えないように複数のプロセス全体が平均的にデバイスへのアクセス頻度を減らすようにすることで、アクセス頻度の低下による不快度と限界温度を超えたときの不快度をトレードオフしながら適切な状態にすることができる。しかも筐体温度が上昇した場合でも優先グループに属するプロセスに対しては、アクセス頻度が低下しないようにすることができる。
【００８５】
また、多数のコンピュータ・システムを保有する企業では、夏期の特定の時間帯に電力のピーク・カットを行って、電力費用の節減や電力施設に対する投資の抑制を図ることがある。この場合は、環境情報として企業全体の消費電力や電力会社から要請されたピーク・カットの時間帯を採用し、ピーク・カットをする必要がある時間帯は消費電力が大きなデバイスの使用コストを上げるようにする。その結果、特別のプロセスのアクセス頻度は低下させないで、かつすべてのプロセスの平均的なアクセス頻度を減らすことで、個々のコンピュータ・システムの電力を低減することができる。
【００８６】
環境情報を外部から与える場合は、コンピュータ・システム間で同一の環境情報を使用コストや性能コストに反映させる程度が異なるようにしてもよい。たとえば、ピーク・カットの時間帯であっても重要なコンピュータ・システムでは使用コストを上げないようにし通常のコンピュータ・システムだけ使用コストを上げるようにすると、複数のコンピュータ・システムを抱える環境下で、個々のコンピュータ・システム内の複数のプロセス間の優劣の事情、複数のコンピュータ・システム間の事情をきめ細かく制御しながら、コンピュータ・システム全体の電力管理を行うことができる。
【００８７】
無線ＬＡＮでは無線通信の帯域幅（転送レート）が限られている。複数のクライアントが同時に一つのアクセス・ポイントに接続されるときにはアービトレーションが必要となり通信時間が長くなる。いま、日次計算処理などの自動処理をクライアントＡで行っており、別のクライアントＢで通常のオフィスワークを行っているような場合を想定する。例えば、毎日午後１１：００から午後１１：５９までの間は、クライアントＡの帯域幅を広げるように関連する無線ＬＡＮポートの使用コストを下げる一方で、クライアントＢの使用コストを上げたりする。
【００８８】
この場合は、環境情報として時間帯を採用することで、企業の中で無線ＬＡＮを共有するクライアント環境の中で個別のクライアントのパフォーマンスを維持することができるようになる。さらに、アクセス・ポイントが監視する無線通信のトラフィックが所定値を越えた場合に、クライアント間で使用コストの差を設けるようにすることもできる。たとえば、重要なクライアントの無線ＬＡＮポートの使用コストを下げ、通常のクライアントの使用コストを上げることでクライアント間での帯域幅の調整をすることが可能になる。
【００８９】
移動中のノートＰＣはさまざまなキャリアのアクセス・ポイントを通じて無線ＬＡＮや無線ＷＡＮなどのネットワークに接続することができる。そして一般にアクセス・ポイントによって通信コストは異なる。その場合は、ビーコンのＳＳＩＤから得たアクセス・ポイントの識別子を環境情報に利用して無線ＬＡＮポートの使用コストを変更することで、通信費用の低減を図ることができる。また、使用コストもノートＰＣごとに変えることで、企業が保有するノートＰＣ全体の通信費用の調整を図ることができるようになる。
【００９０】
ノートＰＣに実装されている無線ＬＡＮカードの多くは、ＩＥＥＥ８０２．１１ａ／ｂ／ｃの３種類の規格で採用する周波数帯で利用できる。理論上の性能では、帯域幅は８０２．１１ｂで最大１１Ｍｂｐｓ、８０２．１１ａ／ｇで最大５４Ｍｂｐｓであるため、無線ＬＡＮカードは８０２．１１ａ／ｇのＳＳＩＤから所定の電波強度を検知したときは自動的にそのアクセス・ポイントに接続するように構成されている場合がある。
【００９１】
ノートＰＣの近くに電子レンジがあるときには、２．４ＧＨｚ帯を使用する８０２．１１ｂ系統と８０２．１１ｇ系統がノイズの影響を受けて接続エラーを起こしやすい。このときに、８０２．１１ｂ／ｇ系統の電波強度が強い場合でもそれらの使用コストを上げて逆に８０２．１１ａ系統の使用コストを下げることで、エラー・レートの少ない無線通信をすることができるようになる。また、８０２．１１ａ／ｇ系統に対する接続数が多くて干渉を受けやすい状況にある場合や、アクセス・ポイントまでの距離が遠くて電波が弱い場合には、エラーやリトライの発生で実際の帯域幅は８０２．１１ｂ系統の方が広くなっている場合もある。そういう状況では、８０２．１１ｂ系統の無線ＬＡＮポートの性能コストを下げて８０２．１１ａ／ｇ系統の性能コストを上げることにより、プロセスが８０２．１１ｂ系統を利用し易くすることができる。これらの場合は、ノイズの量やエラー・レートを環境情報として利用することができる。
【００９２】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【図面の簡単な説明】
【００９３】
【図１】アプリケーションの実行に対する本実施形態にかかるデバイス管理の原理を説明する図である。
【図２】ノートＰＣのハードウエアの構成を示す概略ブロック図である。
【図３】ノートＰＣに実装されたソフトウエアおよびハードウエアの関係を説明するためのブロック図である。
【図４】プロセスの状態遷移とＰＣＢのデータ構造を説明する図である。
【図５】ノートＰＣにおいてアプリケーションがＨＤＤを使用するときの手順を示すフローチャートである。
【図６】プロセスにＨＤＤの使用を許可するか否かを判断する手順を示すフローチャートである。
【図７】プロセスがＨＤＤを使用するときの様子を説明する図である。
【図８】ノートＰＣにおいてディスプレイ装置の性能を選択するときの手順を示すフローチャートである。
【図９】現在の性能コストと現在のオークション・リミットの一例を示す図である。
【符号の説明】
【００９４】
１１、１７…使用コスト
１３、１５、１９、２１、２３…プロセス
２５、２７、２９…ディスプレイ装置（輝度小、輝度中、輝度大）
【図１】
0004448163.tif 000002
【図２】
0004448163.tif 000003
【図３】
0004448163.tif 000004
【図４】
0004448163.tif 000005
【図５】
0004448163.tif 000006
【図６】
0004448163.tif 000007
【図７】
0004448163.tif 000008
【図８】
0004448163.tif 000009
【図９】
0004448163.tif 000010