(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムと、基本的オペレーティング環境と、前記オペレーティングシステムおよび前記基本的オペレーティング環境の間に位置するオペレーティング環境抽象化レイヤとを含むコンピュータシステムにおいて、前記オペレーティングシステムが抽象化されたオペレーティング環境資源を認識できるように前記オペレーティング環境資源を顕在化するために、前記オペレーティング環境抽象化レイヤによって、少なくとも一部のオペレーティング環境資源を抽象化する前記オペレーティングシステムに提供される共通インターフェースのセットをカスタマイズする方法であって、前記方法は、
前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの動作であって、前記基本的オペレーティング環境は、コンピュータシステムハードウェア、ハイパーバイザ、または前記オペレーティングシステムとは異なる他のオペレーティングシステムのうちの１つを含み、前記オペレーテ
ィング環境抽象化レイヤは、前記基本的オペレーティング環境の種類に固有のインターフェースを介して、前記基本的オペレーティング環境と通信するように構成される、動作と、
前記利用可能なオペレーティング環境資源のサブセットを決定し、かつ前記利用可能なオペレーティング環境資源のサブセットを顕在化することにより、前記オペレーティングシステムが、前記基本的オペレーティング環境の前記利用可能なオペレーティング環境資源のサブセットを認識できるように、共通インターフェースのセットをカスタマイズするために用いられる１または複数の抽象化アルゴリズムを決定する前記オペレーティング環境抽象化レイヤの動作であって、前記利用可能なオペレーティング環境資源のサブセットは、前記オペレーティングシステムのオペレーティングシステムサービスごとに組み合わされ、かつ決定される、動作と、
前記オペレーティングシステムが前記基本的オペレーティング環境の前記利用可能なオペレーティング環境資源のサブセットにアクセスできるように、前記カスタマイズされた共通インターフェースのセットを前記オペレーティングシステムに顕在化させる前記オペレーティング環境抽象化レイヤの動作と、
前記オペレーティングシステムに顕在化された前記利用可能なオペレーティング環境資源のサブセットに表わされる顕在化された機能性に基づいて、要求を行うアプリケーション用にカスタマイズされた前記オペレーティングシステムサービスを提供するために前記オペレーティングシステムによって用いられるサービスアルゴリズムを調節する前記オペレーティングシステムの動作と、
前記基本的オペレーティング環境の種類に固有の前記カスタマイズされたオペレーティングシステムサービスに対するアプリケーションプログラム要求を受信する前記オペレーティングシステムの動作と、
前記要求を行うアプリケーションに対する前記カスタマイズされたオペレーティングシステムサービスを実施するために、前記調節されたサービスアルゴリズムおよび前記決定された抽象化アルゴリズムに従って、前記カスタマイズされた共通インターフェースのセットを経由して前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの動作と
を備えたことを特徴とする方法。
【請求項２】
前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの動作は、基本的ハードウェアの利用可能な資源を検出するハードウェア抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、基本的ハイパーバイザの利用可能な資源を検出するハイパーバイザ抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、基本的オペレーティングシステムの利用可能な資源を検出するオペレーティングシステム抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、前記コンピュータシステムにおいて動作する１または複数の他のオペレーティング環境抽象化レイヤを検出する前記オペレーティング環境抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記オペレーティングシステムに前記カスタマイズされた共通インターフェースのセットを顕在化させる前記オペレーティング環境抽象化レイヤの前記動作は、前記オペレーティングシステムを呼び出すためにＡＰＩを用いる前記オペレーティング環境抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティング環境抽象化レイヤに要求を送信する前記オペレーティングシステムの動作を含み、同期要求および非同期要求の中から前記要求の形式が選択されることを特徴とする請求項１に記載の方法。
【請求項８】
前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティングシステムに前記基本的オペレーティング環境の資源を割り当てる前記オペレーティング環境抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記基本的オペレーティング環境に前記アプリケーションプログラム要求を転送する前記オペレーティング環境抽象化レイヤの動作を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティングシステムサービスをネイティブ実施する前記オペレーティングシステムの動作を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記オペレーティングシステムは、ユーザモードおよびカーネルモードの中から選択されたプロセッサモードにおいて動作することを特徴とする請求項１に記載の方法。
【請求項１２】
前記オペレーティング環境抽象化レイヤは、ユーザモードおよびカーネルモードの中から選択されたプロセッサモードにおいて動作することを特徴とする請求項１０に記載の方法。
【請求項１３】
前記基本的オペレーティング環境は、前記オペレーティングシステムのインスタンスであることを特徴とする請求項１に記載の方法。
【請求項１４】
コンピュータシステムにおいて用いるコンピュータプログラムであって、前記コンピュータシステムは、オペレーティングシステムと、基本的オペレーティング環境と、および前記オペレーティングシステムおよび前記基本的オペレーティング環境の間に位置するオペレーティング環境抽象化レイヤとを含み、前記コンピュータプログラムは、前記コンピ
ュータシステム上の１または複数のプロセッサによって実行されると、前記プロセッサに請求項１に記載された方法を実行させることを特徴とするコンピュータプログラム。
【請求項１５】
１または複数のプロセッサと、
システムメモリと、
オペレーティングシステムと、
基本的オペレーティング環境と、
前記オペレーティングシステムおよび前記基本的オペレーティング環境の間に位置するオペレーティング環境抽象化レイヤと、
１または複数のコンピュータ実行可能命令が格納されている１または複数のコンピュータ可読記憶媒体と
を備えたコンピュータシステムであって、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに請求項１に記載された方法を実行させる
ことを特徴とするコンピュータシステム。
【請求項１６】
前記基本的オペレーティング環境は、前記オペレーティングシステムのインスタンスであることを特徴とする請求項１５に記載のコンピュータシステム。
【請求項１７】
前記カスタマイズされた共通インターフェースのセットは、前記オペレーティングシステムの作業負荷の要求に対してカスタマイズされた資源管理を提供することを特徴とする請求項１５に記載のコンピュータシステム。
【請求項１８】
前記オペレーティング環境抽象化レイヤは、
前記コンピュータシステムにおいて他のオペレーティング環境抽象化レイヤを検出するステップと、
別のオペレーティング環境抽象化レイヤの前記基本的オペレーティング環境から前記オペレーティングシステムに資源を提供するステップと
を実行するようにさらに構成されることを特徴とする請求項１５に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムからオペレーティング環境を抽象化する方法に関する。
【背景技術】
【０００２】
コンピューターシステムおよびそれに関連する技術は、社会の多くの側面に影響を与えている。実際に、コンピューターシステムの情報処理能力は、我々の生活および仕事の方法を変えている。コンピューターシステムは、コンピューターシステムが出現する前まで手動で行われていた多くのタスク（例えば、文書処理、スケジュール調整、経理など）を現在では普通に実施する。最近では、複数のコンピューターシステムは互いに接続されて、そして他の電子機器に接続されて、有線および無線のコンピューターネットワークを形成し、コンピューターシステムおよび他の電子機器が当該ネットワーク上で電子データを転送することを可能にする。従って、実施される多数のコンピューティングタスクは、多くの異なるコンピューターシステム、および／または多くの異なるコンピューティングコンポーネントにわたって分散される。
【０００３】
一般的なコンピューティングタスクを行うために、オペレーティングシステムは、（アプリケーションプログラムまたはユーザのどちらかから）コマンドを受信して、それらのコマンドを適した物理的資源に転送する。物理的資源は、次々に低レベルの各動作を行って、コンピューティングタスクを実行する。
【０００４】
多数のオペレーティングシステムは、一般的な作業負荷を実行するように設計されている。しかし、多数のアプリケーションは、一般的なオペレーティングシステムでは効率的にサービスを提供できないような特別の要求をする。例えば、マルチコードプロセッサは、一般的なオペレーティングシステムによっては通常サポートされない、特定の並行処理ソフトウェアを要求し得る。しかし、デバイスドライバ、アプリケーション、および多数の一般的なオペレーティングシステムに関わる経験豊富な開発者の膨大な遺産があるため、既存の一般的なオペレーティングシステムを、様々な専門の機能を含む特定のオペレーティングシステムに置き換えることは、通常、実用的ではない。
【０００５】
さらに、多数のコンピューティング環境において、オペレーティングシステムとハードウェアとのホスティング関係は１対１である。つまり、オペレーティングシステムは、
特定のハードウェアの一式（例えば、特定のプロセッサアーキテクチャ）において実行するように設計されている。この対応関係により、オペレーティングシステムは、設計されたハードウェア上で実行するように通常は限定され、他の未対応のハードウェア上で実行することができない。さらに、多数のオペレーティングシステムは、通常、システムの物理的資源を完全に制御することを要求する。従って、同一のコンピューターシステム上で複数のオペレーティングシステム（例えば、専用のオペレーティングシステムと一般的なオペレーティングシステム）を同時に実行するのは困難である。
【０００６】
しかし、一部の環境では、ハードウェアのセットが互換性のあるオペレーティングシステムの複数のインスタンスを実行し、または互換性の異なるオペレーティングシステムのインスタンスさえも同時に実行することを許可する。従って、コンピューターシステムは、異なるオペレーティングシステムのより有利な機能を利用して、サーバ統合、システム管理、信頼できないアプリケーションの隔離（サンドボクシング）などを容易にすることができる。
【０００７】
例えば、仮想化は、オペレーティングシステムの複数のインスタンスに同一の物理的資源上で実行させることを可能にするハードウェアの機能性をシミュレートする技術である。仮想化を用いることにより、仮想マシンは、各オペレーティングシステムのインスタンスに対して、インスタンスがコンピューターシステムの物理的資源（例えば、ＣＰＵ、メモリ、外部記憶装置、ネットワークスタックなど）を所有しているという錯覚を作り出すことができる。仮想マシンは、複数のオペレーティングシステムのインスタンスと物理的資源との間の通信を多重化して、錯覚を容易にする。従って、仮想化は、複数のオペレーティングシステムのインスタンスに、ほとんど変更することなく物理的資源を共有させるようにできる。しかし、仮想化は、少なくともある程度、オペレーティングシステムのインスタンスと物理的資源との間における間接参照のレベルにより、性能のオーバーヘッドをもたらす。
【０００８】
さらに、仮想マシンは、一般に、物理的資源へのインスタンスのアクセスが仮想化されていることを、オペレーティングシステムのインスタンスに示さない。従って、仮想化された環境において、オペレーティングシステムのインスタンスは、一般に、仮想マシンを経由して相互作用しており、物理的資源と直接的には相互作用していないことを認識していない。さらに、一般に、仮想マシンは、１対１を基準にして物理的資源にマップすることが保証されていない。抽象化によって、物理的資源の機能性の一部は、オペレーティングシステムのインスタンスに利用できない。従って、オペレーティングシステムのインスタンスは、たとえ物理的資源の機能性がオペレーティングシステムに役立つとしても、物理的資源の機能性を用いることができない。
【０００９】
さらに、仮想化は、一般に、オペレーティングシステムのインスタンス同士を互いから隔離する。このように、大抵の仮想化された環境において、異なるオペレーティングシステムのインスタンス（同一か、または異なるオペレーティングシステムのどちらか）は、互いを認識しない、または他のオペレーティングシステムが実行中であっても認識しない。従って、異なるオペレーティングシステムの個々の機能性を利用することができても、オペレーティングシステムのインスタンスは、協調的に動作して、コンピューティングタスクを行うことができない。
【発明の概要】
【００１０】
本発明は、オペレーティング環境において、オペレーティングシステムの実行からオペレーティング環境を抽象化する、方法、システム、およびコンピュータプログラム製品にわたる。本発明の実施形態は、異なる様々な基本的オペレーティング環境の最上部で実行されるオペレーティングシステムを含む。オペレーティング環境内において、オペレーティング環境抽象化レイヤは、オペレーティング環境資源を抽象化して、オペレーティングシステムへ顕在化する。従って、適切に設定されたオペレーティング環境抽象化レイヤは、様々な異なるオペレーティング環境にわたって利用可能な資源への統一したインターフェースをオペレーティングシステムに与える。オペレーティング環境抽象化レイヤおよびオペレーティングシステムは、オペレーティング環境の顕在化された資源に基づいて、要求を行うアプリケーションに適切なサービスを提供するように調整することができる調整可能なアルゴリズムを含む。
【００１１】
ある実施形態において、オペレーティングシステムの機能が実行される。オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する。基本的オペレーティング環境は、例えば、コンピューターシステムのハードウェア、ハイパーバイザ、または別のオペレーティングシステムとすることができる。オペレーティング環境抽象化レイヤは、検出されたオペレーティング環境資源に示される機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節する。
【００１２】
オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化して、オペレーティングシステムに対して基本的オペレーティング環境の検出されたオペレーティング環境資源を特定する。従って、例えば、オペレーティング環境抽象化レイヤは、（基本的オペレーティング環境を与える）１つのオペレーティングシステムの資源を、（オペレーティング環境抽象化レイヤの最上部で実行する）別のオペレーティングシステムに顕在化させることができる。
【００１３】
オペレーティングシステムは、オペレーティングシステムに顕在化される検出されたオペレーティング環境資源に示される顕在化した機能に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを提供するように用いられるサービスアルゴリズムを調整する。オペレーティングシステムは、オペレーティングシステムサービスに関するアプリケーションプログラム要求を受信する。オペレーティングシステムは、要求を行うアプリケーションに対するオペレーティングサービスを実行するための調整されたサービスアルゴリズムおよび調整された抽象化アルゴリズムにしたがって、特定のインターフェースを介して、オペレーティング環境抽象化レイヤと相互作用する。
【００１４】
本発明の概要は、以下の発明の詳細な説明でさらに説明される簡易な形式において概念の１つの選択を導入するために与えられる。本発明の概要は、特許請求の範囲における主題の重要な特徴または不可欠な特徴を特定することを意図せず、または特許請求の範囲における主題の範囲を決める際の補助として用いられることを意図しない。
【００１５】
本発明の付加的な特徴および利点は、本明細書において以下に説明され、一部においては、本明細書から明白であり、または本発明の実施によって習得することができる。本発明の特徴および利点は、添付の特許請求において特に挙げられた機器およびその組み合わせによって実現し、かつ獲得することができる。本発明のこれらおよび他の特徴は、以下の本明細書および添付の特許請求の範囲からより十分に明確になり、または以下に示すような本発明の実施によって習得できる。
【図面の簡単な説明】
【００１６】
本発明の上記およびその他の利点と特徴が得られる方法を説明するために、上で簡潔に記載されている本発明のより詳細な説明が、それに関して添付の図面において説明される特定の実施形態への参照により与えられる。これらの図は代表的な本発明の実施形態のみを示すものであり、したがってその範囲を限定するものと考えてはならないことを理解しつつ、本発明は、添付の図面を用いて付随的に特定し、かつ詳細に記載され、説明される。
【図１Ａ】オペレーティングシステムからオペレーティング環境を抽象化することを容易にする例示的なコンピュータアーキテクチャを示す図である。
【図１Ｂ】オペレーティング環境から抽象化されたオペレーティングシステムを要求するサービスの実行フローを示す例示的なコンピュータアーキテクチャを示す図である。
【図２Ａ】オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図２Ｂ】オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図２Ｃ】オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図３Ａ】オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図３Ｂ】オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図３Ｃ】オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図３Ｄ】オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。
【図４】オペレーティングシステムの機能を実行する例示的な方法のフローチャートを示す図である。
【図５】非同期動作を処理する割り込みモデルのコンテキスト情報の例示的なフローを示す図である。
【発明を実施するための形態】
【００１７】
本発明は、オペレーティング環境において実行するオペレーティングシステムからオペレーティング環境を抽象化する方法、システム、およびコンピュータプログラム製品にわたる。本発明の実施形態は、異なる様々な基本的オペレーティング環境の最上部で実行することができるオペレーティングシステムを含む。オペレーティング環境内において、オペレーティング環境抽象化レイヤは、オペレーティング環境資源を抽象化して、オペレーティングシステムに顕在化させる。従って、適切に構成されたオペレーティング環境抽象化レイヤは、オペレーティングシステムに統一のインターフェースを与えて、異なる様々なオペレーティング環境において資源を利用できるようにする。オペレーティング環境抽象化レイヤおよびオペレーティングシステムは、顕在化されたオペレーティング環境の資源に基づいて、要求を行うアプリケーションに適切にサービスを提供するように調節できる調節可能なアルゴリズムを含む。
【００１８】
一部の実施形態において、オペレーティングシステム機能が実行される。オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する。基本的オペレーティング環境は、例えば、コンピューターシステムのハードウェア、ハイパーバイザ（Ｈｙｐｅｒｖｉｓｏｒ）、または別のオペレーティングシステムとすることもできる。オペレーティング環境抽象化レイヤは、検出されたオペレーティング環境資源において表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節する。
【００１９】
オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化させて、オペレーティングシステムに対して基本的オペレーティング環境の検出されたオペレーティング環境資源を特定する。従って、例えば、オペレーティング環境抽象化レイヤは、１つのオペレーティングシステムの資源（基本的オペレーティング環境を与える）を別のオペレーティングシステム（オペレーティング環境抽象化レイヤの最上部で実行する）に顕在化させることができる。
【００２０】
オペレーティングシステムは、当該オペレーティングシステムに顕在化されて検出されたオペレーティング環境資源において表わされる顕在化した機能性に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられるサービスアルゴリズムを調節する。オペレーティングシステムは、オペレーティングシステムサービスについてのアプリケーションプログラム要求を受信する。オペレーティングシステムは、要求を行うアプリケーションのためにオペレーティングシステムサービスを実行する調節されたサービスアルゴリズムおよび調節された抽象化アルゴリズムに従って、特定のインターフェースを介してオペレーティング環境抽象化レイヤと相互作用する。
【００２１】
本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用または汎用のコンピュータを備えることができる。本発明の範囲内における実施形態はまた、コンピュータ実行可能命令またはデータ構造を扱い、または有するコンピュータ読取可能な媒体を含む。そのようなコンピュータ読取可能媒体は、汎用または専用のコンピュータによりアクセス可能な任意の利用可能媒体とすることができる。一例として、コンピュータ読取可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、もしくはコンピュータ実行可能命令またはデータ構造の形式で望ましいプログラムコード手段を格納するために用いることができ、汎用または専用のコンピュータによりアクセス可能な任意の他の媒体などの物理的（または追記型）コンピュータ読取可能な媒体を含むことができるが、これらに限定されない。
【００２２】
本明細書および以下の特許請求の範囲において、「ネットワーク」は、コンピューターシステムおよび／またはモジュール間において電子データの転送を可能にする１または複数のデータリンクとして定義される。情報が、ネットワークまたは別の通信接続（有線、無線、有線または無線の組み合わせのいずれか）を経由してコンピュータに転送または出力される場合、コンピュータは、当該接続をコンピュータ読取可能媒体とみなす。従って、一例として、コンピュータ読取可能媒体は、コンピュータ実行可能命令またはデータ構造の形式で望ましいプログラムコード手段を伝送または格納するのに用いることができて、汎用または専用のコンピュータがアクセスすることができるネットワークまたはデータリンクも含むことができるが、これらに限定されない。
【００２３】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、特定の機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式の命令、またはソースコードとしてもよい。発明の主題は、構造的特徴および／または方法論的動作に特有の言語において説明されているけれども、添付の特許請求の範囲において定義される発明の主題は、上述の特徴や動作に必然的に限定されないことを理解されたい。むしろ、説明した特徴および動作は、請求の範囲を実施するための形式的な例として開示されている。
【００２４】
本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話機、ＰＤＡ、ポケットベルなどを含む、多数の種類のコンピューターシステム構成を有するネットワークコンピューティング環境において実施することができることを当業者は認識するであろう。本発明は、ネットワーク経由（有線データリンク、無線データリンク、または有線および無線のデータリンクの組み合わせのいずれか）により接続されるローカルコンピューターシステムとリモートコンピューターシステムの両方がタスクを実行する分散コンピュータ環境において、実施することもできる。分散システム環境において、プログラムモジュールは、ローカル記憶装置とリモート記憶装置との両方に配置することができる。
【００２５】
図１Ａに、オペレーティングシステムからオペレーティング環境を抽象化するのを容易にする例示的なコンピュータアーキテクチャ１００を示す。図示されたコンピュータアーキテクチャ１００は、オペレーティングシステム１０１、オペレーティング環境抽象化レイヤ１０２、オペレーティング環境１０３、ならびにアプリケーション１１１およびアプリケーション１１２を含む。オペレーティングシステム１０１は、アプリケーションと相互運用するＡＰＩ１８１を含むことができる。アプリケーション１１１および１１２は、ＡＰＩ１８１を介してオペレーティングシステムと相互運用するように構成することができる。従って、アプリケーション１１１および１１２は、ＡＰＩ１８１を経由して、オペレーティングシステム１０１にオペレーティングシステムサービスを要求することができる。サービスアルゴリズム１０７は、アプリケーションの要求に応答して、アプリケーションの要求を処理してオペレーティングシステムサービスを与えることができる。
【００２６】
オペレーティングシステム１０１は、オペレーティング環境抽象化レイヤ１０２と相互運用するＡＰＩ１８２を含むことができる。ＡＰＩ１８２は、例えば、初期化ＡＰＩ、割り込み管理ＡＰＩ、タイマーＡＰＩ、トランスポートＡＰＩ（例えば、パイプ、ソケット、共有メモリなどに関連するもの）、サービス拡張ＡＰＩ、マルチプロセッサＡＰＩ、スレッドローカルストレージＡＰＩなどを含むことができる。
【００２７】
オペレーティング環境抽象化レイヤ１０２は、ＡＰＩ１８２を介してオペレーティングシステム１０１と相互運用するように構成される。オペレーティング環境抽象化レイヤ１０２はまた、様々なオペレーティング環境専用インターフェース１８３を介してオペレーティング環境１０３と相互運用するように構成される。従って、オペレーティング環境抽象化レイヤ１０２は、オペレーティング環境専用インターフェース１８３を経由してオペレーティング環境１０３の資源にアクセスすることができる。抽象化アルゴリズム１０６を用いて、資源１０７のどの部分をオペレーティングシステム１０１に顕在化するかを決定して、どのように資源１０７の一部をオペレーティングシステム１０１に顕在化するかを決定することができる。オペレーティング環境抽象化レイヤ１０２は、次に、抽象化アルゴリズム１０６の決定に従って、ＡＰＩ１８２を介して資源１０７の一部をオペレーティングシステム１０１に顕在化させることができる。例えば、オペレーティング環境１０２は、一部資源１０７Ｐをオペレーティングシステム１０１に顕在化させることができる。
【００２８】
抽象化アルゴリズム１０６は、調節可能である。オペレーティング環境抽象化レイヤ１０３は、資源１０７において表わされるオペレーティング環境１０３の機能性に基づいて、抽象化アルゴリズム１０６を自動的に調節することができる。例えば、抽象化アルゴリズム１０６は、資源を顕在化させるための複数の異なる抽象化アルゴリズムを含むことができる。資源１０７において表わされる機能性に基づいて、オペレーティング環境抽象化レイヤ１０２は、表わされる機能性をより効率的に顕在化させるのに適した抽象化アルゴリズム１０６の特定のサブセットを使用することに移行することができる。
【００２９】
従って、抽象化アルゴリズム１０６は、オペレーティング環境１０３と相互運用するためにカスタマイズすることができる。例えば、オペレーティング環境１０３は、サービスの一式、および当該サービスの一式に組み合わせることができる個々の資源を顕在化させることが可能である。従って、オペレーティング環境抽象化レイヤ１０２は、抽象化アルゴリズム１０６を調節してサービスの一式を顕在化させることができるが、かならずしも個々の資源を顕在化させるわけではない。オペレーティング環境抽象化レイヤ１０２は、ページテーブル、デバイスドライバ、電源管理、メモリ割り当て、ネットワーク通信トランスポート、プロセッサオブジェクト（例えば、割り込み管理）などを含む、様々な異なるサービスについてオペレーティングシステム１０１をサポートすることができる。
【００３０】
サービスアルゴリズム１０４もまた、調節可能である。オペレーティングシステム１０１は、一部資源１０７Ｐにおいて表わされる機能性に基づいて、自動的にサービスアルゴリズム１０４を調節することができる。例えば、サービスアルゴリズム１０７は、オペレーティングシステムサービスを提供する複数の異なるサービスアルゴリズムを含むことができる。一部資源１０７Ｐにおいて表わされる機能性に基づいて、オペレーティングシステム１０１は、要求を行うアプリケーションにオペレーティングシステムサービスを提供するのに適したサービスアルゴリズム１０７の特定のサブセットを用いることに移行することができる。オペレーティングシステム１０１は、サービスアルゴリズム１０７を調節して、より効率的に一部資源１０７Ｐを利用することができる。
【００３１】
従って、サービスアルゴリズム１０７は、オペレーティング環境１０３の顕在化した一部と相互運用するためにカスタマイズすることができる。例えば、一部資源１０７Ｐは、オペレーティング環境１０３が通信スタック機能性を与えることができることを示す場合もある。従って、オペレーティングシステム１０１は、オペレーティングシステム１０１において通信スタックを生成する代わりに、サービスアルゴリズム１０７を調節して、与えられた通信スタック機能性を利用することができる。
【００３２】
図１Ｂに、オペレーティングシステム１０１に要求するサービスの実行フローを示す例示的なコンピュータアーキテクチャ１００を示す。オペレーティングシステム１０１が服従し、オペレーティング環境抽象化レイヤ０１２ができる処理は、同期要求、生産者−消費者（producer-consumer）要求、非同期要求を含む、異なる様々な種類の要求である。
【００３３】
例えば、オペレーティングシステム１０１は、オペレーティング環境抽象化レイヤ１０２に同期要求を出力することができる。同期要求は、例えば、ネットワークソケットを開き、またはコンソール上にテキスト列を表示するなどの動作を含むことができる。同期要求を開始するために、プロセス１１１は、基本的オペレーティング環境抽象化レイヤの要求にインターフェースを与えるラッパー(wrapper)機能１１２へ要求１５１を出力する。ラッパー機能１１２は、プロセス１１１からオペレーティング環境抽象化レイヤ１０２の基本的な機構を抽象化することによって、実行の詳細を隠す。例えば、通信サービスへのラッパーは、オペレーティング環境抽象化レイヤ１０２が顕在化させる基本的なトランスポートから独立したネットワークトランスポートに基づくインターフェースを提供することができる。ネットワークトランスポートに基づくインターフェースは、基本的なトランスポートが共有メモリまたはイベントであるか、または名前付きパイプトランスポートに関するラッパーである場合に、リングバッファとして実行されることもある。しかし、ラッパー機能は、オペレーティングシステム１０１からこれらの詳細を抽象化する。
【００３４】
ラッパー機能１１２は、要求１５２をサービス要求１１４へ出力する。従って、ラッパー機能１１２は、オペレーティング環境抽象化レイヤ１０２のソースコードにホストされたオペレーティング環境抽象化レイヤ機能をラップするクラスに定義された、オペレーティング環境抽象化レイヤ１０２のサービスを起動する。ラッパークラスは、サービスラッパー機能の起動についての特定のアトリビュートを定義することができる。なお、クラスは、サービスが使用するエラーコードおよびフラグなどの他の定義を含むことができる。
【００３５】
サービス要求起動１１４は、要求１５２を受信する。サービス要求起動１１４は、サービス１１８を起動するために起動１５３を発行する。サービス１１８は、オペレーティング環境抽象化レイヤ１０２のソースコードにホストされた起動モデルを介して実行される。サービス１１８への要求は、割り込みできないようにして、そして、ＡＰＩ１８２のＡＰＩ構造内の関数ポインタとして顕在化するサービス１１８を呼び出すことができる。
【００３６】
サービス１１８は、サービスの起動に応答して、例えば、通信チャンネルへのポインタなどの適切なデータ１５４（ステータス情報および結果）を返す。
【００３７】
ある実施形態において、サービスの起動は、オペレーティング環境抽象化レイヤのサービス拡張にまで出力される。オペレーティング環境抽象化レイヤ１０２は、例えば、「ＤＬＬ(Dynamic Link Library)」形式により、オペレーティング環境抽象化レイヤのサービス拡張１２１などのサービス拡張を読み込むことができる。オペレーティング環境抽象化レイヤ１０２は、オペレーティングシステム１０１にオペレーティング環境抽象化レイヤのサービス拡張１２１を結び付けることができる。従って、オペレーティングシステムは、環境抽象化レイヤのサービス拡張１２１においてサービスされる利用可能な要求を出力することができる。例えば、要求１５３Ａおよびデータ１５４Ａによって示されるように、サービス１２２が起動されて、適切なデータを返すことができる。従って、オペレーティング環境抽象化レイヤの機能性は、オペレーティング環境抽象化レイヤを大幅に変更する必要なく拡張を介してして拡張される。
【００３８】
サービス起動１１４は、次に、結果１５５（少なくとも適切なデータ１５４を含む）をラッパー機能１２２に返す。ラッパー機能１１２は結果１５５を処理して、プロセス１１１に結果１５６（少なくとも適切なデータ１５４も含む）を返す。エラー条件が検出された場合、ラッパー機能１１２は、プロセス１１１に例外を提起することができる。
【００３９】
生産者−消費者要求は、割り込み通知機構を用いて、オペレーションの完了についてオペレーティングシステム１０１（消費者）に通知するオペレーティング環境抽象化レイヤ１０２内のワーカースレッド（生産者）において生成される。そのようなサービスの一例は、キーが押されてオペレーティングシステム１０１によって処理される毎に通知イベントを生成するキーボードである。
【００４０】
例えば、ワーカースレッド１１７は、割込スレッド１１６へ要求１５７を生成することができる。ワーカースレッドは、ＡＰＩ１８２における非同期のＡＰＩに用いるか、または、生産者−消費者モデルに従うサービスに用いることができる。いずれの場合にも、ワーカースレッドは、例えば、入出力要求の完了またはキーボードイベントの完了などのシステムイベントの通知を獲得するループとすることができる。各ワーカースレッドは、割込スレッド１１６に類似する割込スレッドと関連付けることができる。ワーカースレッドは、イベントに関するコンテキスト情報を生成して、割込スレッド１１６を起動するイベントを設定する。以下のコードは、ワーカースレッドのループの骨格の例を示す。
while (1)
{ 
// Wait for next event
…
// Create interrupt context
…
// Signal interrupt thread and wait for completion
// of interrupt dispatch
: : SignalObjectAndWait(
// signal the InterruptWorker 
processor->ioscomm.waitHandle,
// wait for interrupt dispatch 
processor->ioscomm.completionHandle,
// no time out 
INFINITE, 
// N/A 
FALSE 
);
}
【００４１】
割込スレッド１１６は、要求１５８を出力して、割込ディスパッチ機能１１３を立ち上げる。割込ディスパッチ機能は、割込コンテキストを読み出して、サービス割込要求（例えば、オペレーティングシステム１０１のラッパークラスにホストされている）を要求し、割込コンテキストを消去する。以下は、キーボード割込ディスパッチ要求の一例である。
if (interrupt == Kernel.ABSTRACTION_LAYERKeyboardInterrupt)
{ 
// Retrieve the interrupt context (the key pressed) 
uint key = (uint)GetABSTRACTION_LAYERInterruptContext(interrupt); 
// Call wrapper class to 
EnlightenedKeyboard.SetKeyAvailable(key);
ClearABSTRACTION_LAYERInterrupt(interrupt);
}
【００４２】
割込ディスパッチ１１３は、非同期の動作または生産者−消費者動作の結果を待つラッパー機能（例えば、ラッパー機能１１２）を起動するイベントを立ち上げるプロセス１１１に要求１５９を送信することができる。
【００４３】
オペレーティングシステム１０１は、非同期要求をオペレーティング環境抽象化レイヤ１０２に送信することもできる。例えば、要求１５１が非同期要求である場合もある。非同期要求は、動作の実行が完了した時に、オペレーティングシステム１０１に通知するために用いられる割り込み通知機構を用いて処理される。非同期要求の例は、オペレーティング環境抽象化レイヤ１０２の通信サービスにおいて行われる読み書き名前付きパイプの動作を含む。生産者−消費者要求は、ブロックされる可能性がある。従って、ある実施形態において、オペレーティング環境抽象化レイヤは、非同期動作として生産者−消費者要求を実施することができる。
【００４４】
割り込みモデルは、非同期動作を通知するパラダイムとして使用することができる。図５に、非同期動作を処理する割り込みモデルのコンテキスト情報の例示的なフロー５００を示す。オペレーティングシステムのラッパー機能（例えば、ラッパー機能１１２と同様の機能）は、非同期要求を受信して、オペレーションを実行する。例えば、オペレーティングシステムラッパー機能５１２は、オペレーション５３２が実行されることを要求する非同期オペレーション要求５３１を受信することができる。非同期要求に応答して、オペレーティングシステムラッパー機能は、特定の要求に関連するコンテキスト情報を含むコンテキスト構造を生成する。コンテキスト情報は、オペレーションが完了した時に信号が送られることとなるイベントへの参照を含むことができる。例えば、オペレーティングシステムラッパー機能５１２は、オペレーション５３２が完了した時に要求されることとなるイベントを参照する要求コンテキスト５２１を生成することができる。
【００４５】
ラッパー機能は、コンテキストをオペレーティング環境抽象化レイヤサービス（例えば、サービス１１８と同様のもの）に渡す。例えば、システムラッパー機能５１２は、要求コンテキスト５２１を抽象化レイヤサービス５１８に渡すことができる。抽象化レイヤサービスは、例えば、オペレーションの完了結果を処理するのに役立つ（または要求される）ことが可能な、オペレーションまたは他の情報の種類などの付加的情報を有するラッパー機能からコンテキストを獲得して、独自のサービスコンテキストを生成することもできる。例えば、抽象化レイヤサービス５１８は、オペレーション５３２、および／またはオペレーション５３２に対応する情報を処理する他の結果についてのオペレーションの種類を示すサービスコンテキスト５２２を生成することができる。
【００４６】
オペレーションが完了した時、ワーカースレッドは、サービスコンテキストを用いて、オペレーション結果を後処理する。例えば、オペレーション５３２が完了した時、ワーカースレッド１１７は、サービスコンテキスト５２２を用いてオペレーション５３２の結果を後処理することができる。ワーカースレッドは、次に、割り込みディスパッチ機能に、要求コンテキストおよびサービスコンテキストを渡す割り込みを送る。例えば、ワーカースレッド１１７は、要求コンテキスト５２１およびサービスコンテキスト５２２をオペレーティングシステム割り込みディスパッチ機能５１３に渡すことができる。
【００４７】
割り込みディスパッチ機能は、要求コンテキストを用いてオペレーティングシステム割り込みディスパッチ機能を要求する。例えば、オペレーティングシステム割り込みディスパッチ機能５１３は、要求コンテキスト５２１を用いてオペレーティングシステムラッパー割り込みサービス機能５１９を要求することができる。オペレーティングシステム割り込みディスパッチ機能は、ラッパー機能との関連で、オペレーションの結果またはステータスを格納することができ、次に、オペレーティングシステムスレッドを起動するためのイベントを起こして、オペレーションが完了したことを表示する。例えば、オペレーティングシステムラッパー割り込みサービス機能５１９は、オペレーション５３２の結果またはステータスを格納することができ、そして、非同期オペレーション要求５３１を送信したスレッドに、オペレーション５３２が完了したことを示すためのイベントを起こす。以下は、通信サービスのディスパッチコードの例である。
// Dispatch completed async op 
public static unsafe void Dispatch(void* context,ulong err) 
{ 
AsyncOpContext* pContext = (AsyncOpContext*)context;
// Store return status code in local context 
pContext->err = err;
// Signal client that operation completed 
AutoResetEvent signal = SignalList[pContext->signal];
if( signal != null ) 
signal.Set();
}
【００４８】
オペレーティングシステム割り込みディスパッチ機能は、抽象化レイヤにおいて割り込み消去機能を要求して（例えば、fClearInterrupt Classから）、サービスコンテキスト情報の割り当てを解除し、そして任意の他の消去オペレーションを実行することもすることもできる。例えば、オペレーティングシステム割り込みディスパッチ機能５１３は、抽象化レイヤ割り込み消去モジュール５２０を要求して、サービスコンテキスト５２２の割り当てを解除し、オペレーション５３２の完了に関連する消去オペレーションを実行する。以下は、通信サービスに関する割り込み消去コードの例である。
void Win32ClearInterrupt(int interrupt)
{
Processor*processor = GetSEALProcessor();
if( interrupt == SEALIoscommlnterrupt )
{
// Free dynamically allocated context
SEALSComFreeContext(processor->ioscomm.pContext);
// Notify interrupt dispatch completion ::SetEvent(processor-
>ioscomm. completionHandle);
｝
…
【００４９】
上記コードにおいて、割り込みコンテキストが送信されたことを示すイベント通知が存在する。ワーカースレッド（例えば、５１７）と割り込みディスパッチ機能（例えば、５１３）との間の競合条件を回避するために、割り込みワーカースレッドを、ワーカースレッドのループ端で起こすことができ、コードは、次のループの相互作用を継続する前に、送信オペレーションが完了したことを示す信号を待つ。割り込み消去機能は、ワーカースレッドに継続するための信号を送信する。ワーカースレッドは、上記の生産者−消費者要求に関する骨組ループと同様にループを実行することができる。
【００５０】
様々な起動モデルを用いることにより、異なるオペレーティング環境抽象化レイヤは、複数の異なるオペレーティング環境を抽象化するように構成して、統一された機能性の組を与えることができる。統一された機能性の組は、例えば、オペレーティング環境の相違を占める抽象化アルゴリズム１０６と同様に、抽象化アルゴリズムを介して与えられることが可能である。従って、統一された機能性の組を利用するオペレーティングシステムは、複数の異なる任意のオペレーティング環境において実行することができる。
【００５１】
さらに（例えば、初期化中に）、抽象化レイヤは、他の抽象化レイヤの存在を特定することを含め、分析し、オペレーティング環境を完全に認識するように構成することができる。従って、抽象化レイヤは、対応するオペレーティング環境の特徴を利用するように特別に設計することができる。抽象化レイヤはまた、他の特定された抽象化レイヤのオペレーティング環境によって与えられたサービスにアクセスするように構成することができる。
【００５２】
図２Ａ−２Ｃは、異なるオペレーティング環境をオペレーティングシステムから抽象化する例示的なコンピュータアーキテクチャを示す。図２Ａに示すように、オペレーティング環境抽象化レイヤ２０２（ハードウェア対象）は、ハードウェア専用インターフェースを利用して、ハードウェア２０３（例えば、ベアメタル）を抽象化する。図２Ｂにおいて、オペレーティング環境抽象化レイヤ２２２（ハイパーバイザ対象）は、ハイパーバイザ専用インターフェースを利用して、ハイパーバイザ２２３を抽象化する。図２Ｃにおいて、オペレーティング環境抽象化レイヤ２４２（ホストオペレーティングシステム対象）は、オペレーティングシステム専用インターフェース２８６を利用して、ホストオペレーティングシステム２４３（例えば、ウィンドウズＮＴ、ウィンドウズＣＥ、リナックス）を抽象化する。しかし、オペレーティング環境抽象化レイヤ２０２（ハードウェア対象）とオペレーティング環境抽象化レイヤ２２２（ハイパーバイザ対象）とオペレーティング環境抽象化レイヤ２４２（ホストオペレーティングシステム対象）のそれぞれは、ＡＰＩ２８２経由でオペレーティングシステム２０１との通信をサポートする。
【００５３】
オペレーティング環境の資源が、対応する抽象化レイヤによってアクセスされ、オペレーティングシステム２０１に顕在化されるので、オペレーティングシステム２１０は、実行環境のプロパティを認識する。従って、資源管理は、オペレーティングシステム２０１および実行中の作業負荷の要求へカスタマイズされることが可能である。従って、抽象化アルゴリズムおよびサービスアルゴリズム（オペレーティングシステム２０１において、例えば、サービスアルゴリズム１０４と同様のもの）は、オペレーティング環境内でより効率的なオペレーションを目的として、調節されることが可能である。例えば、オペレーティングシステム２１０がハイパーバイザ２２３上で実行する場合、ハイパーバイザスケジューラは、オペレーティングシステム２０１に顕在化されることが可能である。従って、オペレーションシステム２０１のＣＰＵスケジューラは、ハイパーバイザスケジューラの要求を満たすようにポリシーを調節することができる。
【００５４】
デバイスドライバおよびオペレーティングシステムサービスは、本来、オペレーティングシステム２０１によって実施され、または転送されて、オペレーティング環境において（例えば、ホストオペレーティングシステム２４３において）実行することができる。
【００５５】
ある実施形態において、オペレーティングシステム２０１は、オペレーティング環境である。例えば、ホストオペレーティングシステム２４３は、オペレーティングシステム２０１のインスタンスである場合もある。従って、オペレーティングシステム２０１の１つのインスタンスは、オペレーティングシステム２０１の別のインスタンスの最上部で再帰的に実行することができる。この形式の再帰は、例えば、セルフホスティングおよびアプリケーションドメイン等の「ＣＬＲ(Common Language Runtime)」について、隔離された実行環境を生成することができる。
【００５６】
オペレーティングシステムおよび対応する抽象化レイヤは、特権プロセッサモードと非特権プロセッサモードとの柔軟な組み合わせによって実行することができる（実行リングと呼ばれることもある）。図３Ａ−３Ｄは、異なるプロセッサモードにおいて、オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す。図３Ａに、ホストオペレーティングシステム環境３４３を示す。図３Ａのホストオペレーティングシステム環境３４３内では、オペレーティングシステム３０１とオペレーティング環境抽象化レイヤ３４２（ホストオペレーティングシステム対象）との両方が、ユーザモード３１１において実行している(リング３)。
【００５７】
図３Ｂもまた、ホストオペレーティングシステム環境３４３を示す。しかし、図３Ｂのホストオペレーティングシステム環境３４３内では、オペレーティングシステム３０１とオペレーティング環境抽象化レイヤ３４２（ホストオペレーティングシステム対象）との両方が、カーネルモード３１２において実行している（リング０）。図３Ｂに示す実施形態は、別個の実行環境がホストオペレーティングシステム環境３４３内に存在することを可能にする。別個の実行環境は、例えば、ホストデバイスドライバに用いることができる。オペレーティングシステム３０１の実行環境は、カーネルからドライバの実行を隔離して、デバイスドライバの障害を回復させる。
【００５８】
図３Ｃは、ハードウェア環境３０３（例えば、ベアメタル）を示す。ハードウェア環境３０３内では、オペレーティングシステム３０１が、ユーザモード３１１（リング３）で実行して、オペレーティングシステム抽象化レイヤ３０２(ハードウェア対象)が、カーネルモード３１２（リング０）で実行する。
【００５９】
図３Ｄは、ハイパーバイザ３２３の最上部で実行する、図３Ａからのホストオペレーティングシステム環境３４３のインスタンスを示す。図３Ｄはまた、オペレーティング環境抽象化レイヤ３２２（ハイバーバイザ対象）の最上部のカーネルモード３１２(リング０)で実行するオペレーティングシステム３０１のインスタンスも示す。図３Ｄ内では、オペレーティング環境抽象化レイヤ３２２（ハイパーバイザ対象）は、ホストオペレーティングシステム環境３４３の存在を認識して、ホストオペレーティング環境３４３によって与えられるサービスを利用することができる。オペレーティングシステム３０１とオペレーティング環境抽象化レイヤ３４２(ホストオペレーティングシステム対象)との組み合わせは、ホストオペレーティングシステム環境３４３によって与えられるサービス（例えば、デバイスドライバ）へのプロキシとして作用することができる。あるいは、オペレーティングシステム３０１とオペレーティング環境抽象化レイヤ３２２（ハイパーバイザ対象）との組み合わせは、ホストオペレーティングシステム環境３４３のサービスと直接通信を行うことができる。
【００６０】
図４に、オペレーティングシステムの機能を実行する例示的な方法４００のフローチャートを示す。方法４００は、コンピュータアーキテクチャ１００に示されるコンポーネントおよびデータに関して説明される。
【００６１】
方法４００は、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出するオペレーティング環境抽象化レイヤの動作を含む（動作４０１）。例えば、オペレーティング環境抽象化レイヤ１０３は、オペレーティング環境１０３の資源１０７を検出することができる。方法４００は、検出されたオペレーティング環境資源に表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節するオペレーティング環境抽象化レイヤの動作（動作４０２）を含む。例えば、オペレーティング環境抽象化レイヤ１０２は、資源１０７に表わされる機能性に基づいて、抽象化アルゴリズム１０６を調節することができる。
【００６２】
方法４００は、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化させて、オペレーティングシステムへ基本的オペレーティング環境の検出されたオペレーティング環境資源を特定するオペレーティング環境抽象化レイヤの動作（動作４０３）を含む。例えば、オペレーティング環境抽象化レイヤ１０２は、部分資源１０７Ｐをオペレーティングシステム１０１に顕在化させるこができる。方法４００は、オペレーティングシステムに顕在化されている検出されたオペレーティング環境資源に表わされる顕在化された機能性に基づいて、要求を行うアプリケーションへオペレーティングシステムサービスを与えるために用いられるサービスアルゴリズムを調節するオペレーティングシステムの動作（動作４０４）を含む。例えば、オペレーティングシステム１０１は、部分資源１０７Ｐに表わされる顕在化された機能性に基づいて、サービスアルゴリズム１０７を調節することができる。
【００６３】
方法４００は、オペレーティングシステムサービスに対するアプリケーションプログラム要求を受信するオペレーティングシステムの動作（動作４０５）を含む。例えば、オペレーティングシステム１０１は、アプリケーション１１１またはアプリケーション１１２から、オペレーティングシステムサービス対する要求を受信することができる。方法４００は、調節されたサービスアルゴリズムおよび調節された抽象化アルゴリズムに従って、特定のインターフェースを経由してオペレーティング環境抽象化レイヤと相互作用して、要求を行うアプリケーションに対してオペレーティングシステムサービスを実施するオペレーティングシステムの動作（動作４０６）を含む。例えば、オペレーティングシステム１０１およびオペレーティング環境抽象化レイヤ１０２は、調節されたサービスアルゴリズム１０４および調節された抽象化アルゴリズム１０６に従って、ＡＰＩ１８２を介して相互作用して、アプリケーション１１１または１１２に対するオペレーティングシステムサービスを実施することができる。
【００６４】
本発明は、発明の趣旨または不可欠な特徴から逸脱することなく、他の特定の形式において実施することができる。説明した実施形態は、すべての点において単なる例示として見なされるべきであり、限定するものとして見なされるべきでない。本発明の範囲は、従って、前述の説明によってではなく、添付の特許請求の範囲によって示される。本特許請求の範囲の均等の意味および範囲内におけるすべての変更は、本特許請求の範囲内に取り込まれる。
【図１Ａ】
0005496683.tif 000002
【図１Ｂ】
0005496683.tif 000003
【図２Ａ】
0005496683.tif 000004
【図２Ｂ】
0005496683.tif 000005
【図２Ｃ】
0005496683.tif 000006
【図３Ａ】
0005496683.tif 000007
【図３Ｂ】
0005496683.tif 000008
【図３Ｃ】
0005496683.tif 000009
【図３Ｄ】
0005496683.tif 000010
【図４】
0005496683.tif 000011
【図５】
0005496683.tif 000012