(57)【要約】物理的に認識するカーネルを実装する技術を説明する。リソースを制御し、およびコンピュータ上での処理を行うカーネルまたはオペレーティングシステムを環境的に認識させるようにする。コンピュータの物理的環境を１つまたは２つ以上のセンサによって測定する。測定または観測を評価する。予め定めた環境条件が測定または観測に従って存在するとき、カーネルをそれに応じて適合させる。どのようにカーネルによりメモリを管理するか、またはどのようにカーネルによりプロセスを管理するか等のカーネルのコアとなる挙動を、感知された環境条件の点から修正する。すなわち、カーネルレベルの機能性を、ユーザ空間のアプリケーションコードとは異なり、特定の環境条件に応答して修正する。実施形態は、センサ観測を監視するポリシーエンジンおよびカーネルに到達する施行モジュールを有し、当該ポリシーエンジンによって到達した結論に基づいてカーネルを修正することができる。他の実施形態においては、カーネル自体により環境データを格納し、監視し、および応答する。
2013546101.tif 000002
【特許請求の範囲】
【請求項１】
メモリおよびプロセッサを備えるコンピュータ上で実行するオペレーティングシステムの挙動を修正し、前記オペレーティングシステムにより前記コンピュータの前記プロセッサ、メモリ、およびその他のリソースを制御する、方法であって、
複数のポリシーを読み取り、該複数のポリシーの各々により、前記オペレーティングシステムを現在の環境に適合させるために取るべき１つまたは２つ以上の条件および１つまたは２つ以上のアクションを指定することと、
前記コンピュータの前記現在の物理的な環境の観測を備える観測値を受信することと、
前記観測値に対する前記ポリシーを評価して観測値が予め定めた条件を満たすことを決定し、およびそれに応答して、前記複数のポリシーにおいて特定された前記オペレーティングシステムの機能を修正することを備えることを特徴とする方法。
【請求項２】
前記観測値を、前記コンピュータに取り付けられ、前記コンピュータの外側の物理的な環境を感知するセンサの読み取り値から導出することを特徴とする請求項１に記載の方法。
【請求項３】
前記観測値を監視し、および前記特定された条件の何れかが前記観測値によって満たされるかを繰り返し決定することとをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記オペレーティングシステムはカーネルモジュールを備えるカーネルを備え、および前記オペレーティングシステムの機能を修正することは、前記カーネルモジュールの一つによって実装される設定またはアルゴリズムを修正することを備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記修正されたカーネルモジュールは、割り込み処理モジュール、スレッドスケジューリングモジュール、プログラム実行モジュール、メモリ管理モジュール、デバイスドライバ管理モジュール、セキュリティオブジェクト、ネットワーキングモジュール、または不揮発性ストレージシステム、のいずれかを備え、および
前記修正することは、前記修正されたカーネルモジュールによりどのように前記コンピュータのリソースを制御するかを改変することを備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記観測は、前記環境の気温の測定、前記コンピュータの速度または加速度の測定、地理的位置の測定、高度の測定、気圧の測定、または周囲の電磁力の測定、大気中の含有量の測定、地震活動の測定、または電力の測定のいずれかを備えることを特徴とする請求項５に記載の方法。
【請求項７】
プロセッサおよびハードウェアコンポーネントを備えるコンピューティング装置により処理を実行することを可能とする情報を格納する、１つまたは２つ以上のコンピュータ可読ストレージ媒体であって、
前記処理は、
前記コンピューティング装置の現在の物理的な環境についての環境データを受信することと、
前記物理的な環境の物理的な環境の条件を特定する一連のルールを評価して、前記物理的な環境がルールによって特定された条件を現在有することを前記環境データから決定することと、
前記物理的な環境が前記特定された条件を有することを決定したことに応答して、前記オペレーティングシステムのリソース制御の挙動を修正し、それにより前記オペレーティングシステムの前記リソース制御の挙動を前記物理的な環境に従って修正することを特徴とする１つまたは２つ以上のコンピュータ可読ストレージ媒体。
【請求項８】
前記環境データを前記受信することは、前記物理的な環境の様相を感知する物理的なセンサを読み取ることを備え、および前記物理的なセンサを感知することは、気温、速度、湿度、気圧、加速度、振動、または磁力強度のいずれかを示す信号を生成することを備えることを特徴とする請求項７に記載の１つまたは２つ以上のコンピュータ可読ストレージ媒体。
【請求項９】
前記リソース制御の挙動は、前記オペレーティングシステムがどのように前記ハードウェアコンポーネントまたはプロセッサに対するアクセスの優先順位付けを実行するかを備えることを特徴とする請求項７に記載の１つまたは２つ以上のコンピュータ可読ストレージ媒体。
【請求項１０】
前記リソース制御の挙動は、前記オペレーティングシステムのメモリ管理、前記オペレーティングシステムの電源の管理、前記オペレーティングシステムのプロセスもしくはスレッドのスケジューリング、またはオペレーティングシステムの入力／出力管理のいずれかを備えることを特徴とする請求項７に記載の１つまたは２つ以上のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は物理的環境のカーネル認識に関し、より詳細には物理的に認識するカーネルを実装する技術に関する。
【背景技術】
【０００２】
現代のオペレーティングシステムは、異なるプログラムを同じハードウェア上で実行する必要性およびコンピュータのハードウェアリソースの利用を最大限利用する要望から発展した。プロセッサが最初に処理を始める時（いわゆる「ベアメタル」）、プロセッサ上でユーザまたはアプリケーションプログラムを直接に実行することが可能であるが、コンピュータのハードウェアリソースをマーシャリングし、どの命令をロードするべきか決定し、ある種のシステム障害を処理する、等々のように、各々の新しいプログラムに対して、同じタイプの制御コードをリライトおよびリロードして同じ基本的な機能を実行することは非効率であることが明らかになった。さらにまた、コンピュータのハードウェアリソースの利用を高めることが望ましくなった。すなわち、高価なコンピュータは、異なるユーザが当該コンピュータをリセットし、および彼らの個々のプログラムをロードすると、しばしば使用されなくなる。これらおよびその他の理由から、オペレーティングシステムと呼ばれる専門化されたプログラムが開発された。
【０００３】
オペレーティングシステムは、今日、固有の機能およびハードウェアリソースの状態にのみに基づいてコンピュータのハードウェアリソースを効率的におよび安全に管理することをめざす専門のソフトウェアとして設計され続けている。このように、オペレーティングシステムはホスト自体の固有のコンピュータの環境の周辺のみで設計されている。効率的なリソースの利用、最適なコンピュータの処理速度、信頼性、等のための機能性およびアルゴリズムは、ホストコンピュータ自体についての入力ならびに情報にのみ依存していた。つまり、中核のオペレーティングシステムの挙動および機能性は、コンピュータの状態についての情報を「認識」していた、すなわちそのような情報を知らされていただけである。タスクスケジューリング、メモリ保護および割り当て、リソースへのアクセス制御、ならびに周辺装置の管理等の機能によって、ホストのコンピュータ・ハードウェアおよびソフトウェアの状態についての情報（セマンティック情報を含む）をすべて動作させる。
【０００４】
現代のオペレーティングシステムのホスト中心の設計原則および目的は、現代のオペレーティングシステムがコンピュータにとってモバイルとなることがありふれたことになる前に主に開発されたという事実を反映しているかもしれない。このように、オペレーティングシステムはホストコンピュータ自体のバーチャル環境を認識するだけであった。コンピュータの小型化がそれらの機動性および使用の範囲を高めた一方で、それらのオペレーティングシステムはバーチャル環境に注力したままであった。ラップトップコンピュータ、モバイル装置、および組み込み装置は、今や、オペレーティングシステムが発展したときに予期されなかった場所ならびに方法で使用される。例えば、コンピュータはしばしば車輌またはロボットの神経中枢である。モバイルコンピュータは物理的環境における変化を経験するかもしれない。科学者および軍人はフィールド条件が多く要求される場所においてコンピュータを使用するかもしれないが、ホストコンピュータの物理的な環境についての情報（気温、湿度、気圧、位置、速度等）は、オペレーティングシステムによって直接的に使用されていない。
【０００５】
これら変化にもかかわらず、オペレーティングシステムはホストコンピュータのすぐ近くでの動的な物理的環境を考慮する方法でそれらの主要な機能を実行するための設計はされていない。オペレーティングシステムが発展しならびに複雑さおよび設計の種類が増えるにつれてでさえ、それらオペレーティングシステムは命令を実行するバーチャルまたは抽象的なコンピューティング環境、外部の周辺装置とのアプリケーションの対話を促進する、等々とのみ概念的に関係しているにとどまっている。物理的世界の存在についてのいずれとの対話または情報も、特定の周辺装置と対話する特定のアプリケーションを通じてのみコンピュータによって対処されている。このようなアプリケーションは典型的にユーザ空間（非カーネル空間）において常駐し、および通常はオペレーティングシステムそれ自体に関連していない幾つかの特定の目的のための即時の物理的環境に関する情報に対処する。さらに、ユーザ空間アプリケーションはカーネルまたはオペレーティングシステム自体の挙動を変化させない。
【０００６】
上述したように、コンピュータはモバイルになっている。コンピュータおよびそれらのオペレーティングシステムは、オペレーティングシステムの発展の間に予期されなかった場所に行きならびに予期されなかった方法で使用されつつある。例えば、ＧＰＳ(Global Positioning System)部品を持つ装置はフリーウェイに沿って高速で進むかもしれず、工場の自動化ロボットは物理的に好ましくない環境を動くかもしれず、そのフィールドにおける端末は過度の熱や寒さを経験するかもしれない。これらコンピューティング装置を制御するオペレーティングシステムは、それらが実行する物理的環境の変化を認識することが無い。
【０００７】
物理的環境の変化を認識するオペレーティングシステムに関連した技術を以下に説明する。
【発明の概要】
【０００８】
以下の発明の概要は、後述の発明の詳細な説明において説明される幾つかの概念を紹介するためにのみ含まれている。この発明の概要は包括的なものではなく、および特許請求の範囲に記載された、特許請求された主題の技術的範囲を定めることを意図したものではない。
【０００９】
物理的に認識するカーネルを実装するための技術を以下に説明する。リソースおよびコンピュータ上の処理を制御するカーネルまたはオペレーティングシステムを環境的に認識させる。コンピュータの物理的環境を１つまたは２つ以上のセンサによって測定する。その測定または観測を評価する。予め指定された環境条件が測定または観測に従って存在する時、カーネルをそれに応じて適合させる。どのようにカーネルによってメモリを管理するかまたはどのようにカーネルによってプロセスを管理するか等の、カーネルの中核となる挙動を、感知された環境条件の点から修正する。すなわち、カーネルレベルの機能性は、ユーザ空間のアプリケーションコードとは対照的に、特定の環境条件に応答して修正される。実施形態は、センサ観測を監視するポリシーエンジンおよびカーネルに到達して当該ポリシーエンジンによって到達した結論に基づいてカーネルを修正する施行モジュールを有することができる。別の実施形態においては、カーネル自体が環境データに対する格納、監視、および応答を行う。
【００１０】
付随する機能の多くを添付の図面と併せて考慮された以下の発明の詳細な説明を参照して説明する。
【図面の簡単な説明】
【００１１】
本発明にかかる説明は以下の発明の詳細な説明を添付の図面に照らして読むことでより深い理解がなされるであろう。添付の図面において、同様の参照番号は添付の発明の詳細な説明における同様の構成部品をさすために使用される。
【図１】環境的に認識するオペレーティングシステム設計を示すブロック図である。
【図２】カーネルをホストコンピュータの物理的な環境に適合させるための処理を示すフローチャート図である。
【図３】詳細な実施形態を示すブロック図である。
【図４】ポリシーファイルを示す図である。
【図５】ポリシーファイルの例を示す図である。
【図６】図３に対応する処理を示すフローチャート図である。
【図７】環境的に認識するカーネルまたはオペレーティングシステムを示すブロック図である。
【図８】図７に対応する処理を示すフローチャート図である。
【発明を実施するための形態】
【００１２】
以下に述べる実施形態はオペレーティングシステムのホストコンピュータの物理的な環境を認識しおよび適合するオペレーティングシステムに関連する。物理的な環境を考慮するオペレーティングシステムのための設計概念の概要から説明を開始する。当該設計を実装するための特定の実施形態を次いで説明する。ポリシーおよび施行モデルを使用する実施形態を次に説明する。ポリシーをどのように定め、および用いるかについての詳細を包含し、次いで、オペレーティングシステムの中核となる機能が直接の環境認識ならびに環境条件の変化に対する自己適合を有するオペレーティングシステムについて述べる。
【００１３】
図１は環境的に認識するオペレーティングシステム設計を示す。コンピュータ１００は物理的な環境１０２にある。コンピュータ１００はプロセッサ、プロセッサと共に用いられるメモリのようなストレージ、入出力機能、等々を持つ何れの種類のコンピューティング装置であってもよい。コンピュータ１００は何れの形式または目的を有することができ、および組み込み装置、モバイルハンドヘルド装置、ラップトップ、車輌またはモバイル機器に一体化されたモニターレス装置、動いている状態のもしくは動的な環境条件に晒されるパーソナルコンピュータまたはその他いかなる種類のコンピュータであってもよい。物理的な環境１０２は屋外または移動により変化する必要はない。物理的な環境１０２は本明細書においてコンピュータ１００のすぐ近くであると考える。
【００１４】
コンピュータ１００は１つまたは２つ以上の物理的なセンサ１０４を備える。各々の物理的なセンサ１０４により物理的な環境１０２の測定可能な様相を感知する。物理的なセンサ１０４はいかなる種類であってもよく、例えば、気温センサ、動きセンサ、地理的位置センサ（例えば、ＧＰＳ装置）、回転または慣性センサ（例えば、ジャイロスコープ）、圧電センサ、空気圧センサ、加速度計、湿度センサ、光センサ、磁界センサ、亜原子粒子探知器、放射線センサ、消費電力センサ、地震センサ、大気量センサ、電圧入力センサ、等々とすることができる。
【００１５】
コンピュータ１００は、カーネル１０６をも有するが、当該カーネルはコンピュータを制御するオペレーティングシステムの一部である。カーネル１０６は公知のカーネルの何れのタイプ、例えば、モノリシックカーネル、マイクロカーネル、これら双方の混成体、組み込みカーネル、リアルタイムカーネル、またはその他に基づくことができる。さらに、カーネル１０６はハイパーバイザまたは次にバーチャルマシンをホストするハイパーバイザの実行を管理するマネジメントオペレーティングシステムとすることができる。以下に述べるように、カーネル１０６は何れのカーネルによって典型的に実行される種々の機能を有するが、従来のカーネルとは異なり、それらの機能はコンピュータ１００の物理的な環境に適合される。
【００１６】
図２は、カーネル１０６をそのホストコンピュータ１００の物理的な環境１０２に適合させるための処理を示す。概念的に、物理的な環境１０２によりカーネル１０６の挙動を通知する。すなわち、物理的な環境１０２における変化が感知されおよび特定されると、カーネル１０６の機能性は適合する。具体的には、ステップ１３０において、以下に説明される種々の手段によって、物理的なセンサ１０４からの読み取り値、すなわちデータを受信する。読み取り値をノイズに対してフィルターし、解釈し、およびことによってはローカルプロトコルを介してポリシーエンジンに渡す必要があるかもしれない。ステップ１３２において、観測値を予め定義されたまたはユーザ指定の条件と比較し、カーネルまたはオペレーティングシステムの機能性の何れの修正が求められるかどうかの決定をする。
【００１７】
ステップ１３４において、観測値から特定の環境条件が存在すると決定された時、オペレーティングシステム、および特に、カーネル１０６の挙動または機能性を修正する。カーネル１０６の修正は、コンピュータ１００の管理プログラムおよびコンピュータ１００のハードウェアとコンピュータ１００上で実行するアプリケーション１０８との間のメディエータとしての、その中核となる機能の一つに作用することができる。このように、カーネル１０６の挙動自体が物理的な環境１０２に敏感である。これは、環境的に通知される、カーネルが処理するアプリケーションの単なる活動（例えば、スケジューリング、メモリ割り当て、等）から識別されることになる。さらにまた、修正の性質は変化し得る。カーネル１０６が使用するアルゴリズムを改変し、取り替える、等をすることができる。このようなアルゴリズムに作用するカーネル状態を物理的な環境の条件に応答して修正すことができる。要するに、カーネル１０６を修正して、リソースのエグゼクティブおよびコントローラとしてその役割をどのように実行するかに作用するようにする。
【００１８】
理解のため、いくつかの適合例を述べる。条件およびアクションの仕様等の詳細、および施行の機構を以下に説明する。気温値がある特定の閾値を超えると感知した時、オペレーティングシステムもしくはカーネル１０６の挙動が調整され、それによって、多分、幾つかのメンテナンス家庭を間引きまたは処理優先順位を下げ、あるいはＣＰＵに供給される電圧を下げるSpeedStep（登録商標）のような省電力機能を使用することによって、ＣＰＵがより少ない動作を実行しまたは遅いレートで動作ようにする。突然の速度の変化が検知された時、いかなるディスクフラッシュを防止し、およびファイルに対する新しい書き込みを順番に待機させることによって、カーネル１０６によりハードディスクに対するいかなる書き込みも阻止することができる。あるレベルの放射線が検知されたとき、カーネル１０６はそのメモリ管理ルーチンを改変して、エラー訂正符号を用いて放射線によって誘発されるビット反転を低減させることができる。気温が予め定められた閾値を超えるか下回る時（コンピュータが屋外にあることを示唆している）、カーネル１０６のセキュリティパラメータを調整して、セキュリティを高めることができる。環境条件の組合せが検知されたとき、カーネル１０６は特定の指定された処理または装置のためのＩ／Ｏ(Input/Output)動作の再優先順位付けを行うことができる。コンピューティング装置が、（遠心分離機内または回転する車輌内で発生するように）現在、一定の加速／力を受けていることを決定するのに応答して、スレッドまたはタスクスケジューリングアルゴリズムに変化があり、したがってオペレーティングシステムが実行ユニットをスケジュールする方法が変化する。
【００１９】
オペレーティングシステムの機能を調整するための条件は、オペレーティングシステムの条件を含むこともできる。オペレーティングシステムの機能は、オペレーティングシステム条件と組合せた環境条件に基づいて調整することができる。オペレーティングシステムから利用可能なこのような情報は、ＣＰＵアイドル時間、合計メモリ使用、ユーザ入力からの時間、動作中のスレッドまたはコンテキストの数、オープンファイルの数、動作中のネットワークコネクション、保留中の割り込みがあるか、等々とすることができる。一般的に、あるオペレーティングシステム条件が存在するときのみ、環境条件は意味を与えるようにしてもよい。例えば、「気温＞８０ および ＣＰＵ使用＜５０」のような条件は「１増分だけのＣＰＵ速度を減少させる」のようなアクションのためのトリガとして用いることができる。または、「使用メモリ＜５０ＭＢ および 速度＞３０であれば、ディスクキャッシュのサイズをＸだけ増加させる」とする。別な例として、「メモリページフォールト(Memory.pagefaults)＞１０／秒 および 湿度＞８０であれば、プロセッサ割り当て(Processor.allocation)＝モード２」とする。感知された物理的な環境値およびシステム値の組合せを用いるいかなるブール演算式も、特定され、および当該ブール演算式が満たされた時にとられる何らかのアクションに関連付けられることができる。
【００２０】
図３は詳細な実施形態を示す。カーネル１０６は公知の中核となる種々の機能のいかなるものも実行することができる。カーネル１０６は、メモリマネージャ１５０、Ｉ／Ｏ制御モジュール１５２、プロセスの生成を処理するためのマルチタスキングモジュール１５４およびＣＰＵをそれらが共有することを含むことができる。電源マネージャ１５６は例えば、スリープ状態、シャットダウン状態、またはアイドル状態のような種々の電源状態に入ることに関連した、種々の電源管理機能を実行することができる。種々のその他の機能またはモジュール１５８により、オブジェクト管理、ファイルシステム管理、ストリームプロセッシング、およびその他公知の機能のようなその他の公知のカーネル機能を提供することができる。
【００２１】
種々のカーネル１０６の機能によりコンピュータ１００の種々のハードウェアコンポーネントへのおよびそれらコンポーネントからのアクセスを制御することができる。このような公知のハードウェアコンポーネントは、一実施形態においては、グラフィックカードまたはディスプレイアダプタ等の周辺装置１６０、電源１６２、入力装置１６４、揮発性ストレージ（例えば、メモリ）および／または不揮発性ストレージ（例えば、ディスクドライブ）等のストレージ装置１６６を含むことができる。言うまでもなく、コンピュータ１００は、カーネル１０６を実行し、およびカーネル１０６によって制御される別のハードウェアリソースでもあるプロセッサ（図示せず）を有することができる。
【００２２】
カーネル１０６およびハードウェアコンポーネントに加えて、コンピュータ１００は物理的な環境１０２の感知された様相を検知し、および応答するためのシステムを有する。前述したように、種々のセンサ１０４Ａ、１０４Ｂ、１０４Ｃ、１０４Ｄ、１０４Ｅをコンピュータ１００の一部とすることができる。センサ１０４Ａ−１０４Ｅにより気温、位置、動きの種類、気圧、磁界、荷電粒子または素粒子、大気ガス、重力、等を感知することができる。１つの種類のセンサのみが必要であることに留意されたい。さらに、センサ１０４Ｃおよび１０４Ｅ等の幾つかのセンサはコンピュータ１００の外側に存在することができ、またはセンサ１０４Ａ、１０４Ｂ、および１０４Ｄ等の幾つかのセンサはコンピュータ１００の内側もしくはコンピュータ１００に一体化させることができる。センサはコンピュータ１００のハードウェアの一部である必要はないが、コンピュータ１００はコンピュータ１００と同じ局所的な物理的な環境１０２におけるセンサによって通信された読み取り値を受信することができる。
【００２３】
環境適合システムは、種々のソフトウェアコンポーネントをも含む。計装レイヤ１６８はコンピュータ１００上で実行する。計装レイヤ１６８はセンサ１０４Ａ−１０４Ｅからのデータを抽出するレイヤである。すなわち、計装レイヤ１６８は、多分、各センサ１０４Ａ−１０４Ｅのデバイスドライバと交信することによって、各種のセンサ１０４Ａ−１０４Ｅと交信するためのロジックを有することができる。計装レイヤ１６８は、オペレーティングシステムがもともと備えている計測レイヤ１６８を通して、またはプラグアンドプレイインターフェースを通して受信した環境の読み取り値を用いることもできる。計装レイヤ１６８は、コンフィギュレーション設定を通して、どのセンサが接続されているかおよびそれらがどのように交信するかについての情報を有することができる。この情報により、計装レイヤ１６８によりセンサ読み取り値をポリシーエンジン１７２との交信のための共通のフォーマットに変換しおよびカプセル化することができる。ポリシーエンジン１７２は、カーネル空間において比較的高い優先順位で（例えば、高い優先順位の割り込みで）実行して、迅速な介在を可能にする。カプセル化された物理的な観測値１７４をポリシーエンジン１７２に渡す。物理的な観測値１７４は、名前−値の対のような形式を有することができ、ここで、名前または識別子によって観測源（例えば、センサ１０４Ｃを特定する番号または名前）を特定し、および対応するセンサからの物理的な読み取り値に対応する値を含む。カプセル化された物理的な観測値１７４は、含まれた観測値のデータの種類を示すフラグを有することもできる。
【００２４】
ポリシーエンジン１７２により、物理的な観測値１７４に基づいたカーネル１０６の挙動を管理するルールを実装することができる。このようなルールの例は上記に一覧された。ポリシーエンジン１７２によって評価されたルールは、ローカルバスまたはデータネットワークを介して別のコンピュータから受信されるコマンドまたは設定等のその他のデータ１７４を考慮することができる。ポリシーエンジン１７２は、メモリの状態についてのデータ、ディスクの活動についてのデータ、ＣＰＵ使用についてのデータ、等のようなシステムデータ１７６を受信することもできる。（例えば、センサが観測値を送信する頻度が、ポリシーエンジン１７２がセンサの観測値を用いるルールを評価する頻度と異なる時）ポリシーエンジン１７２は、受信された物理的な観測値１７４をキャッシュすることもでき、それにより、観測値を環境における傾向に合成することおよび対応するセンサと同期させることの双方を可能とする。
【００２５】
ポリシーエンジン１７２は、１つまたは２つ以上のライブラリ（図示せず）を実行することもできる。ライブラリは、ルールによって呼び出されることができ、ユーザがプログラムした高レベルの機能を実装してもよい。例えば、機能は（物理的な観測値１７４において提供されたような）地理的位置を現在のコンピュータ１００の位置での予想された天候条件等のその他のデータに対して、マッピングしてもよい。他の機能は、最近の位置または速度の読み取り値のキャッシュされたシーケンスを読み取り、次いでコンピュータ１０６の現在の物理的な加速を計算するようにしてもよい。他の機能は、磁気観測および速度観測から誘発された電気エネルギーを計算するようにしてもよい。一般的に、ポリシーエンジン１７２は物理的な観測を解釈するいかなるコードを実行することとしてもよい。
【００２６】
ポリシーエンジン１７２によりルールを評価するが、ここでルールは環境条件（ある物理的な条件）および取るべき何らかのアクションの双方を指定し、ここでアクションは一般的にカーネル１０６またはそれを取り囲むオペレーティングシステの中核となる挙動に対して作用しまたは改変する。ルールをストレージ装置１６６に格納されたポリシーファイルまたはポリシーステートメント１７８において指定することができる。ポリシーエンジン１７２が実行を開始した時、ポリシーエンジン１７２によって、ポリシーステートメント１７８が読み取られ、構文解析され、および繰り返し評価される。ポリシーエンジン１７２はブール演算式を含む形式言語を実装することができる。ルールは、幾つかの複雑なまたは複合のブール演算式（例えば、"(VI + V２) > A AND (CI < C２ OR Dl > D２)"）を有することができ、ここで、変数は物理的な観測値１７４のデータ、オペレーティングシステムデータ１７６、またはその他のデータ１７４を格納する。
【００２７】
ルールは施行アクションを伴い、その施行アクションは、カーネル１０６を修正するために何れのステップまたは複数ステップが取られるかを示す。アクションは施行モジュール１８０によって実装され、その施行モジュール１８０により、カーネル空間（カーネル特権のメモリ空間）において実行するか、またはカーネル１０６に対するコールを発行する。ここで、カーネルモードにおける動作は性能を改善することができるが、いずれも許容可能である。施行モジュール１８０を、ポリシーエンジン１７２によって呼び出し可能な高レベルの施行アクション機能を提供するＡＰＩ(Application Programming Interface)とすることができる。例えば、施行モジュール１８０は、カーネル１０６に対して種々のコールを発行し、およびカーネル１０６がどのように動作するかを調節するフラグまたはコンフィギュレーションの設定を変化させることにより、コンピュータ１００の種々の活動をＳ秒間一時停止する"一時停止する(S)"と呼ばれる機能を有してもよい。施行アクションのその他のタイプも可能である。ユーザモードスレッドを凍結し、または優先順位付けを解除してもよい。それ以上のいかなるディスクアクセスをロックしてもよい。休止状態またはシャットダウンを開始してもよい。外部の周辺装置への電源を遮断してもよい。逆に、プロセッサが組み込み装置上で低電力状態にある場合、プロセッサに上向きに給電し、一方で低い優先順位のスレッドを押し下げることにより、装置がすぐに作動刺激に応答することができるようにする。上述したように、カーネル１０６の挙動をコンピュータ１００の物理的な環境１０２に基づいて制御する。
【００２８】
図４はポリシーファイル２００を示す。ポリシーファイルは、ポリシーエンジン１７２および施行モジュール１８０を構成する情報を有することができる。ポリシーファイル２００は、幾つかのマークアップ言語コードまたは別の形式言語におけるコードを包含することができる。読み取り値を提供している異なるセンサを宣言するセンサセクション２０２を含むことができる。センサ宣言によりセンサの名前およびデータタイプを指定してもよい。ポーリング頻度も含めて、どれくらいの頻度でセンサが新しい読み取り値を提供するかを示すこと、またはどれくらいの頻度でキャッシュされたセンサの大部分の観測がポリシーエンジン１７２によって読み取られおよび更新されるかを指定してもよい。施行セクションにより幾つかのグローバルルールを指定してもよいし、または高レベルのアクションもしくは施行機能（例えば、上述の"Suspend(S)"機能）を定義してもよく、それを何れかのルールのアクションによって呼び出すことができる。ポリシーセクション２０６はポリシー１７８等の種々のポリシーを包含してもよい。図４は、例のみを示している。マークアップ言語、名前−値の対のような形式等を使用する要求はなく、一般的にポリシーを記述するのに数多くの公知の方法がある。
【００２９】
ポリシーは１つまたは２つ以上のルール２０７を有することができる。ルール２０７により条件２０８およびアクション２１０を定義することができる。条件２０８は、前述の通り、現在または最近の環境の観測値およびおそらく付属されるデータに従って、ポリシーエンジン１７２によって評価される。ルール２０７の条件２０８により真と評価する時、対応する施行アクション２１０は施行モジュール１８０によって呼び出されおよび実行される。
【００３０】
図５はポリシーファイル２３０の例を示す。種々のセンサの種類が物理的なセンサ１０４に対応して、定義される。ポリシーエンジン１７２または計装レイヤ１６８はセンサの定義を使用して、どの物理的なセンサ１０４と交信するか、どのようにそれらと交信するか、およびどのようにそれらの観測を解釈するかを特定する。図５におけるセンサおよびポリシー定義は図示のために提供された例にすぎない。環境適合システムを用いると、ユーザは柔軟におよび簡単に新たなセンサを追加し、ポリシーを追加または修正し、新しいルールまたはアクションを指定し、新しいオペレーティングシステムコンポーネント（カーネルコンポーネントを含む）等を、カーネル１０６を構築し直す必要なしに、動的にロードすることができることに注意されたい。それでもなお、一実施形態において、施行アクションにより、オペレーティングシステムが再起動される（ことによっては新しいコンポーネントまたはライブラリがカーネル１０６とリンクされることを可能とする）ことを要求するカーネル１０６の再構成を惹起してもよい。
【００３１】
図６は図３に対応する処理を示す。ステップ２５０において、環境の観測、例えば、("気温", 100)のような名前−値の対が受信されまたは読み取られる。ステップ２５０は関連したセンサのために指定されたポーリング頻度に従って実行されることができる。あるいはまた、ステップ２５０は何れのセンサから新しい観測値が受信されるたびに実行することができる。ステップ２５２において、プロセスは受信された読み取り値または観測値を参照する何れかのポリシーを特定する。例えば、ポリシー１７８が、屋外の気温についての条件を特定するルールを有する場合、当該ポリシーまたはルールが特定される。ステップ２５４において、何れかの特定したルールを評価する。すなわち、ルールの条件は、ステップ２５０において受信された適切な観測値または読み取り値に従って評価される。ルールが満たされない（条件が真ではない）場合、プロセスはステップ２５０に戻る。ステップ２５６において、真と評価された各々の条件に対して、対応するアクションを施行モジュール１８０によって実行する。その結果は、ステップ２５８においてカーネル１０６の状態または機能性が修正されるということである。以前に述べた通り、（多分、レジストリもしくはコンフィギュレーションファイルにおいて）カーネル１０６のコンフィギュレーションパラメータを修正することにより、あるいは幾つかの実行可能なコードまたはカーネル１０６によって管理されるカーネル特権のメモリ空間における変数を変化させることによって、カーネル１０６を種々の方法で修正することができる。その効果は、カーネル１０６が環境的に認識するようになることである。すなわち、カーネル１０６によりコンピュータ１００を制御する方法を、コンピュータ１００の種々の指定された環境の物理的な条件に修正し、または適合する。
【００３２】
図７は環境的に認識するカーネルまたはオペレーティングシステムを示す。本実施形態は、組み込みシステム、または小さくおよび効率的であるように設計されたマイクロカーネルのようなカーネルに適しているかもしれない。本実施形態において、カーネルと物理的なセンサ読み取り値との間の中間のレイヤを使用するよりも、環境のデータをカーネル２８０内に渡し、およびそのレジスタまたはメモリに格納する。言い換えると、カーネル２８０によって、カーネルのホストコンピュータが常駐する現在のまたは最近の物理的な環境についての環境データ２８２を格納する。環境データ２８２を、ホストコンピュータのバス上に実装してもよいデータ交換プロトコル２８４を介して、受信することができる。本実施形態において、中核となる機能２８６またはカーネル２８０のサービス／コンポーネントによって、環境２８２が更新された時に生成された割り込みに応答し、定期的に、環境データを監視しまたは環境データ２８２を読み取る。一実施形態において、共有された環境のセンサはネットワークまたはデータリンクを通してデータをリモートで交信することができる。
【００３３】
コアとなる機能２８６を適切に構成して、それらの通常のシステム機能に加えて、それら機能が、環境データ２８２に基づいてどのようにそれら機能がそのような機能を実行するかを変化させるロジックを有もする。包括的に、以下の何れにおけるオペレーティングシステムの機能性を修正することができる。すなわち、割り込み処理、スレッドスケジューリング、プログラム実行、メモリ管理、デバイスドライバ、セキュリティオブジェクト、ネットワーキング、および不揮発性ストレージシステムを修正することができる。例えば、バーチャルメモリ管理プログラム（ＶＭＭ）は現在の気温を包含しているレジスタをチェックし、それに応答し、ＶＭＭによりメモリ空間を変化させ、新しいキャッシュアルゴリズムにスワップし、またはディスクに格納したバーチャルメモリに対してマッピングするメモリ空間への書き込みを一時的にブロックする、等々を実行するループを有することもできる。カーネルは、コアとなる機能２８６の小さなマップおよびそれら機能がそれぞれアクセスする環境データ２８２、およびおそらく関連付けられた環境データ２８２が変化するときに実行されるそれぞれのコアとなる機能２８６におけるコード部分（例えば、スレッド）のアドレスをも維持するコンポーネントを有することができる。
【００３４】
図８は図７に対応する処理を示す。ステップ３００において、カーネルモジュールまたはコアとなる機能２８６は、メモリを管理し、どのプロセスが現在実行されるかを含んでいるコンテキストおよびプロセスを実行することを管理し、電力を調整し、ファイルシステム活動を処理する、等々のようなカーネル２８０におけるその通常の機能を繰り返して実行している。ステップ３０２において、カーネルモジュール（軽い監視モジュールまたはコアとなる機能２８６のいずれか）により環境データ２８２を監視し、およびその変化を検知する。ステップ３０４において、変化した環境データ２８２に対して敏感な、コアとなる機能２８６によって挙動の適合が要求されるかを決定する。テストされた環境の条件が存在する場合、カーネルパラメータを変化させ、１つまたは２つ以上のカーネルコールを呼び出す、等々のように適切なアクションが取られる。図８のアプローチにより、コンピュータのハードウェアに最も近いカーネル２８０は、コンピュータのハードウェアを脅かす環境の条件に対してすぐに反応することができる。放射線による損傷または磁気誘導、急な加速または減速、等のような突然の変化により、全ての活動を完全に一時停止し、ハードウェアコンポーネントの給電を完全に遮断し、脆弱なデータを保護し、データセキュリティを高める、等々のような目安によりすぐに応答させることができる。
【００３５】
種々の実装を上述してきたが、実施例は図示および議論のために提供される。環境的に認識するカーネルの概念は異なる形態において実現することができる。さらに、本明細書において説明される技術は、いかなる種類のオペレーティングシステムまたはカーネルにも用いることができる。例えば、当該技術を、（厳格なタイムウインドにおいてイベントに応答しなければならない）ハードバージョンおよび（一定の遅延が許可される）ソフトバージョンを含む、リアルタイムオペレーティングシステム（ここで、オペレーティングシステムは特定のイベントに特定の時間内で反応しなければならない）で用いることができる。カーネルに関して、いかなる種類のカーネル設計、例えば、マイクロカーネル、モノリシックカーネル、およびハイブリッドを用いることができる。
【００３６】
結論
以上に説明した実施形態および機能は、コンピュータまたは装置が読み取り可能な揮発性もしくは不揮発性媒体に格納された情報の形態で実現することができる。当該媒体は、光学のストレージ（例えば、ＣＤ−ＲＯＭ(Compact Disk Read Only Memory)）、磁気媒体、フラッシュ読み取り専用メモリ（ＲＯＭ）、あるいはデジタル情報を格納する現在または将来の何れかの手段等の媒体を少なくとも含むものとする。当該格納された情報は、上記で検討した種々の実施形態を実行するコンピューティング装置を可能にし、または構成するために用いることができる機械が実行可能な命令（例えば、コンパイルされた実行可能なバイナリコード）、ソースコード、バイトコード、もしくはその他何れかの情報の形態とすることができる。当該媒体は、少なくとも実施形態を実行するプログラムの実行中にＣＰＵ(Central Processing Unit)命令等の情報を格納するＲＡＭ(Random Access Memory)および／またはバーチャルメモリ等の揮発性メモリ、並びにプログラムまたは実行可能ファイルをロードしそして実行することを可能とする情報を格納する不揮発性媒体を含むものとする。実施形態および機能は、携帯装置、ワークステーション、サーバ、モバイル無線装置、等々を含むいずれかの種類のコンピューティング装置上で実行することができる。
【図１】
2013546101.tif 000003
【図２】
2013546101.tif 000004
【図３】
2013546101.tif 000005
【図４】
2013546101.tif 000006
【図５】
2013546101.tif 000007
【図６】
2013546101.tif 000008
【図７】
2013546101.tif 000009
【図８】
2013546101.tif 000010
【国際調査報告】
2013546101.tif 000011
2013546101.tif 000012