JP2010521034A - オペレーティングシステムからオペレーティング環境を抽象化する方法 - Google Patents

オペレーティングシステムからオペレーティング環境を抽象化する方法 Download PDF

Info

Publication number
JP2010521034A
JP2010521034A JP2009553668A JP2009553668A JP2010521034A JP 2010521034 A JP2010521034 A JP 2010521034A JP 2009553668 A JP2009553668 A JP 2009553668A JP 2009553668 A JP2009553668 A JP 2009553668A JP 2010521034 A JP2010521034 A JP 2010521034A
Authority
JP
Japan
Prior art keywords
operating environment
operating
operating system
abstraction layer
basic
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.)
Granted
Application number
JP2009553668A
Other languages
English (en)
Other versions
JP5496683B2 (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 JP2010521034A publication Critical patent/JP2010521034A/ja
Application granted granted Critical
Publication of JP5496683B2 publication Critical patent/JP5496683B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

Abstract

本発明は、オペレーティング環境において実行するオペレーティングシステムからオペレーティング環境を抽象化する方法、システム、およびコンピュータプログラム製品にわたる。オペレーティング環境内において、オペレーティング環境抽象化レイヤは、オペレーティング環境資源を抽象化して、オペレーティングシステムに顕在化する。従って、適切に構成されたオペレーティング環境抽象化レイヤは様々な異なるオペレーティング環境を通じて、オペレーティングシステムに、利用可能な資源との統一インターフェースを与える。各オペレーティング環境抽象化レイヤおよびオペレーティングシステムは、オペレーティング環境の顕在化された資源に基づいて、要求を行うアプリケーションにサービスを正しく与えるように調節することができる、調節可能なアルゴリズムを含む。抽象化レイヤは、他の抽象化レイヤの存在を特定することを含め、分析し、オペレーティング環境を完全に認識するように構成される。オペレーティングシステムおよび対応する抽象化レイヤは、特権プロセッサモードと非特権プロセッサモードとの柔軟な組み合わせによって実行することができる。

Description

本発明は、オペレーティングシステムからオペレーティング環境を抽象化する方法に関する。
コンピューターシステムおよびそれに関連する技術は、社会の多くの側面に影響を与えている。実際に、コンピューターシステムの情報処理能力は、我々の生活および仕事の方法を変えている。コンピューターシステムは、コンピューターシステムが出現する前まで手動で行われていた多くのタスク(例えば、文書処理、スケジュール調整、経理など)を現在では普通に実施する。最近では、複数のコンピューターシステムは互いに接続されて、そして他の電子機器に接続されて、有線および無線のコンピューターネットワークを形成し、コンピューターシステムおよび他の電子機器が当該ネットワーク上で電子データを転送することを可能にする。従って、実施される多数のコンピューティングタスクは、多くの異なるコンピューターシステム、および/または多くの異なるコンピューティングコンポーネントにわたって分散される。
一般的なコンピューティングタスクを行うために、オペレーティングシステムは、(アプリケーションプログラムまたはユーザのどちらかから)コマンドを受信して、それらのコマンドを適した物理的資源に転送する。物理的資源は、次々に低レベルの各動作を行って、コンピューティングタスクを実行する。
多数のオペレーティングシステムは、一般的な作業負荷を実行するように設計されている。しかし、多数のアプリケーションは、一般的なオペレーティングシステムでは効率的にサービスを提供できないような特別の要求をする。例えば、マルチコードプロセッサは、一般的なオペレーティングシステムによっては通常サポートされない、特定の並行処理ソフトウェアを要求し得る。しかし、デバイスドライバ、アプリケーション、および多数の一般的なオペレーティングシステムに関わる経験豊富な開発者の膨大な遺産があるため、既存の一般的なオペレーティングシステムを、様々な専門の機能を含む特定のオペレーティングシステムに置き換えることは、通常、実用的ではない。
さらに、多数のコンピューティング環境において、オペレーティングシステムとハードウェアとのホスティング関係は1対1である。つまり、オペレーティングシステムは、
特定のハードウェアの一式(例えば、特定のプロセッサアーキテクチャ)において実行するように設計されている。この対応関係により、オペレーティングシステムは、設計されたハードウェア上で実行するように通常は限定され、他の未対応のハードウェア上で実行することができない。さらに、多数のオペレーティングシステムは、通常、システムの物理的資源を完全に制御することを要求する。従って、同一のコンピューターシステム上で複数のオペレーティングシステム(例えば、専用のオペレーティングシステムと一般的なオペレーティングシステム)を同時に実行するのは困難である。
しかし、一部の環境では、ハードウェアのセットが互換性のあるオペレーティングシステムの複数のインスタンスを実行し、または互換性の異なるオペレーティングシステムのインスタンスさえも同時に実行することを許可する。従って、コンピューターシステムは、異なるオペレーティングシステムのより有利な機能を利用して、サーバ統合、システム管理、信頼できないアプリケーションの隔離(サンドボクシング)などを容易にすることができる。
例えば、仮想化は、オペレーティングシステムの複数のインスタンスに同一の物理的資源上で実行させることを可能にするハードウェアの機能性をシミュレートする技術である。仮想化を用いることにより、仮想マシンは、各オペレーティングシステムのインスタンスに対して、インスタンスがコンピューターシステムの物理的資源(例えば、CPU、メモリ、外部記憶装置、ネットワークスタックなど)を所有しているという錯覚を作り出すことができる。仮想マシンは、複数のオペレーティングシステムのインスタンスと物理的資源との間の通信を多重化して、錯覚を容易にする。従って、仮想化は、複数のオペレーティングシステムのインスタンスに、ほとんど変更することなく物理的資源を共有させるようにできる。しかし、仮想化は、少なくともある程度、オペレーティングシステムのインスタンスと物理的資源との間における間接参照のレベルにより、性能のオーバーヘッドをもたらす。
さらに、仮想マシンは、一般に、物理的資源へのインスタンスのアクセスが仮想化されていることを、オペレーティングシステムのインスタンスに示さない。従って、仮想化された環境において、オペレーティングシステムのインスタンスは、一般に、仮想マシンを経由して相互作用しており、物理的資源と直接的には相互作用していないことを認識していない。さらに、一般に、仮想マシンは、1対1を基準にして物理的資源にマップすることが保証されていない。抽象化によって、物理的資源の機能性の一部は、オペレーティングシステムのインスタンスに利用できない。従って、オペレーティングシステムのインスタンスは、たとえ物理的資源の機能性がオペレーティングシステムに役立つとしても、物理的資源の機能性を用いることができない。
さらに、仮想化は、一般に、オペレーティングシステムのインスタンス同士を互いから隔離する。このように、大抵の仮想化された環境において、異なるオペレーティングシステムのインスタンス(同一か、または異なるオペレーティングシステムのどちらか)は、互いを認識しない、または他のオペレーティングシステムが実行中であっても認識しない。従って、異なるオペレーティングシステムの個々の機能性を利用することができても、オペレーティングシステムのインスタンスは、協調的に動作して、コンピューティングタスクを行うことができない。
本発明は、オペレーティング環境において、オペレーティングシステムの実行からオペレーティング環境を抽象化する、方法、システム、およびコンピュータプログラム製品にわたる。本発明の実施形態は、異なる様々な基本的オペレーティング環境の最上部で実行されるオペレーティングシステムを含む。オペレーティング環境内において、オペレーティング環境抽象化レイヤは、オペレーティング環境資源を抽象化して、オペレーティングシステムへ顕在化する。従って、適切に設定されたオペレーティング環境抽象化レイヤは、様々な異なるオペレーティング環境にわたって利用可能な資源への統一したインターフェースをオペレーティングシステムに与える。オペレーティング環境抽象化レイヤおよびオペレーティングシステムは、オペレーティング環境の顕在化された資源に基づいて、要求を行うアプリケーションに適切なサービスを提供するように調整することができる調整可能なアルゴリズムを含む。
ある実施形態において、オペレーティングシステムの機能が実行される。オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する。基本的オペレーティング環境は、例えば、コンピューターシステムのハードウェア、ハイパーバイザ、または別のオペレーティングシステムとすることができる。オペレーティング環境抽象化レイヤは、検出されたオペレーティング環境資源に示される機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節する。
オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化して、オペレーティングシステムに対して基本的オペレーティング環境の検出されたオペレーティング環境資源を特定する。従って、例えば、オペレーティング環境抽象化レイヤは、(基本的オペレーティング環境を与える)1つのオペレーティングシステムの資源を、(オペレーティング環境抽象化レイヤの最上部で実行する)別のオペレーティングシステムに顕在化させることができる。
オペレーティングシステムは、オペレーティングシステムに顕在化される検出されたオペレーティング環境資源に示される顕在化した機能に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを提供するように用いられるサービスアルゴリズムを調整する。オペレーティングシステムは、オペレーティングシステムサービスに関するアプリケーションプログラム要求を受信する。オペレーティングシステムは、要求を行うアプリケーションに対するオペレーティングサービスを実行するための調整されたサービスアルゴリズムおよび調整された抽象化アルゴリズムにしたがって、特定のインターフェースを介して、オペレーティング環境抽象化レイヤと相互作用する。
本発明の概要は、以下の発明の詳細な説明でさらに説明される簡易な形式において概念の1つの選択を導入するために与えられる。本発明の概要は、特許請求の範囲における主題の重要な特徴または不可欠な特徴を特定することを意図せず、または特許請求の範囲における主題の範囲を決める際の補助として用いられることを意図しない。
本発明の付加的な特徴および利点は、本明細書において以下に説明され、一部においては、本明細書から明白であり、または本発明の実施によって習得することができる。本発明の特徴および利点は、添付の特許請求において特に挙げられた機器およびその組み合わせによって実現し、かつ獲得することができる。本発明のこれらおよび他の特徴は、以下の本明細書および添付の特許請求の範囲からより十分に明確になり、または以下に示すような本発明の実施によって習得できる。
本発明の上記およびその他の利点と特徴が得られる方法を説明するために、上で簡潔に記載されている本発明のより詳細な説明が、それに関して添付の図面において説明される特定の実施形態への参照により与えられる。これらの図は代表的な本発明の実施形態のみを示すものであり、したがってその範囲を限定するものと考えてはならないことを理解しつつ、本発明は、添付の図面を用いて付随的に特定し、かつ詳細に記載され、説明される。
オペレーティングシステムからオペレーティング環境を抽象化することを容易にする例示的なコンピュータアーキテクチャを示す図である。 オペレーティング環境から抽象化されたオペレーティングシステムを要求するサービスの実行フローを示す例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムから異なるプロセッサモードを通して異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す図である。 オペレーティングシステムの機能を実行する例示的な方法のフローチャートを示す図である。 非同期動作を処理する割り込みモデルのコンテキスト情報の例示的なフローを示す図である。
本発明は、オペレーティング環境において実行するオペレーティングシステムからオペレーティング環境を抽象化する方法、システム、およびコンピュータプログラム製品にわたる。本発明の実施形態は、異なる様々な基本的オペレーティング環境の最上部で実行することができるオペレーティングシステムを含む。オペレーティング環境内において、オペレーティング環境抽象化レイヤは、オペレーティング環境資源を抽象化して、オペレーティングシステムに顕在化させる。従って、適切に構成されたオペレーティング環境抽象化レイヤは、オペレーティングシステムに統一のインターフェースを与えて、異なる様々なオペレーティング環境において資源を利用できるようにする。オペレーティング環境抽象化レイヤおよびオペレーティングシステムは、顕在化されたオペレーティング環境の資源に基づいて、要求を行うアプリケーションに適切にサービスを提供するように調節できる調節可能なアルゴリズムを含む。
一部の実施形態において、オペレーティングシステム機能が実行される。オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する。基本的オペレーティング環境は、例えば、コンピューターシステムのハードウェア、ハイパーバイザ(Hypervisor)、または別のオペレーティングシステムとすることもできる。オペレーティング環境抽象化レイヤは、検出されたオペレーティング環境資源において表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節する。
オペレーティング環境抽象化レイヤは、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化させて、オペレーティングシステムに対して基本的オペレーティング環境の検出されたオペレーティング環境資源を特定する。従って、例えば、オペレーティング環境抽象化レイヤは、1つのオペレーティングシステムの資源(基本的オペレーティング環境を与える)を別のオペレーティングシステム(オペレーティング環境抽象化レイヤの最上部で実行する)に顕在化させることができる。
オペレーティングシステムは、当該オペレーティングシステムに顕在化されて検出されたオペレーティング環境資源において表わされる顕在化した機能性に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられるサービスアルゴリズムを調節する。オペレーティングシステムは、オペレーティングシステムサービスについてのアプリケーションプログラム要求を受信する。オペレーティングシステムは、要求を行うアプリケーションのためにオペレーティングシステムサービスを実行する調節されたサービスアルゴリズムおよび調節された抽象化アルゴリズムに従って、特定のインターフェースを介してオペレーティング環境抽象化レイヤと相互作用する。
本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用または汎用のコンピュータを備えることができる。本発明の範囲内における実施形態はまた、コンピュータ実行可能命令またはデータ構造を扱い、または有するコンピュータ読取可能な媒体を含む。そのようなコンピュータ読取可能媒体は、汎用または専用のコンピュータによりアクセス可能な任意の利用可能媒体とすることができる。一例として、コンピュータ読取可能媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、もしくはコンピュータ実行可能命令またはデータ構造の形式で望ましいプログラムコード手段を格納するために用いることができ、汎用または専用のコンピュータによりアクセス可能な任意の他の媒体などの物理的(または追記型)コンピュータ読取可能な媒体を含むことができるが、これらに限定されない。
本明細書および以下の特許請求の範囲において、「ネットワーク」は、コンピューターシステムおよび/またはモジュール間において電子データの転送を可能にする1または複数のデータリンクとして定義される。情報が、ネットワークまたは別の通信接続(有線、無線、有線または無線の組み合わせのいずれか)を経由してコンピュータに転送または出力される場合、コンピュータは、当該接続をコンピュータ読取可能媒体とみなす。従って、一例として、コンピュータ読取可能媒体は、コンピュータ実行可能命令またはデータ構造の形式で望ましいプログラムコード手段を伝送または格納するのに用いることができて、汎用または専用のコンピュータがアクセスすることができるネットワークまたはデータリンクも含むことができるが、これらに限定されない。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、特定の機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式の命令、またはソースコードとしてもよい。発明の主題は、構造的特徴および/または方法論的動作に特有の言語において説明されているけれども、添付の特許請求の範囲において定義される発明の主題は、上述の特徴や動作に必然的に限定されないことを理解されたい。むしろ、説明した特徴および動作は、請求の範囲を実施するための形式的な例として開示されている。
本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話機、PDA、ポケットベルなどを含む、多数の種類のコンピューターシステム構成を有するネットワークコンピューティング環境において実施することができることを当業者は認識するであろう。本発明は、ネットワーク経由(有線データリンク、無線データリンク、または有線および無線のデータリンクの組み合わせのいずれか)により接続されるローカルコンピューターシステムとリモートコンピューターシステムの両方がタスクを実行する分散コンピュータ環境において、実施することもできる。分散システム環境において、プログラムモジュールは、ローカル記憶装置とリモート記憶装置との両方に配置することができる。
図1Aに、オペレーティングシステムからオペレーティング環境を抽象化するのを容易にする例示的なコンピュータアーキテクチャ100を示す。図示されたコンピュータアーキテクチャ100は、オペレーティングシステム101、オペレーティング環境抽象化レイヤ102、オペレーティング環境103、ならびにアプリケーション111およびアプリケーション112を含む。オペレーティングシステム101は、アプリケーションと相互運用するAPI181を含むことができる。アプリケーション111および112は、API181を介してオペレーティングシステムと相互運用するように構成することができる。従って、アプリケーション111および112は、API181を経由して、オペレーティングシステム101にオペレーティングシステムサービスを要求することができる。サービスアルゴリズム107は、アプリケーションの要求に応答して、アプリケーションの要求を処理してオペレーティングシステムサービスを与えることができる。
オペレーティングシステム101は、オペレーティング環境抽象化レイヤ102と相互運用するAPI182を含むことができる。API182は、例えば、初期化API、割り込み管理API、タイマーAPI、トランスポートAPI(例えば、パイプ、ソケット、共有メモリなどに関連するもの)、サービス拡張API、マルチプロセッサAPI、スレッドローカルストレージAPIなどを含むことができる。
オペレーティング環境抽象化レイヤ102は、API182を介してオペレーティングシステム101と相互運用するように構成される。オペレーティング環境抽象化レイヤ102はまた、様々なオペレーティング環境専用インターフェース183を介してオペレーティング環境103と相互運用するように構成される。従って、オペレーティング環境抽象化レイヤ102は、オペレーティング環境専用インターフェース183を経由してオペレーティング環境103の資源にアクセスすることができる。抽象化アルゴリズム106を用いて、資源107のどの部分をオペレーティングシステム101に顕在化するかを決定して、どのように資源107の一部をオペレーティングシステム101に顕在化するかを決定することができる。オペレーティング環境抽象化レイヤ102は、次に、抽象化アルゴリズム106の決定に従って、API182を介して資源107の一部をオペレーティングシステム101に顕在化させることができる。例えば、オペレーティング環境102は、一部資源107Pをオペレーティングシステム101に顕在化させることができる。
抽象化アルゴリズム106は、調節可能である。オペレーティング環境抽象化レイヤ103は、資源107において表わされるオペレーティング環境103の機能性に基づいて、抽象化アルゴリズム106を自動的に調節することができる。例えば、抽象化アルゴリズム106は、資源を顕在化させるための複数の異なる抽象化アルゴリズムを含むことができる。資源107において表わされる機能性に基づいて、オペレーティング環境抽象化レイヤ102は、表わされる機能性をより効率的に顕在化させるのに適した抽象化アルゴリズム106の特定のサブセットを使用することに移行することができる。
従って、抽象化アルゴリズム106は、オペレーティング環境103と相互運用するためにカスタマイズすることができる。例えば、オペレーティング環境103は、サービスの一式、および当該サービスの一式に組み合わせることができる個々の資源を顕在化させることが可能である。従って、オペレーティング環境抽象化レイヤ102は、抽象化アルゴリズム106を調節してサービスの一式を顕在化させることができるが、かならずしも個々の資源を顕在化させるわけではない。オペレーティング環境抽象化レイヤ102は、ページテーブル、デバイスドライバ、電源管理、メモリ割り当て、ネットワーク通信トランスポート、プロセッサオブジェクト(例えば、割り込み管理)などを含む、様々な異なるサービスについてオペレーティングシステム101をサポートすることができる。
サービスアルゴリズム104もまた、調節可能である。オペレーティングシステム101は、一部資源107Pにおいて表わされる機能性に基づいて、自動的にサービスアルゴリズム104を調節することができる。例えば、サービスアルゴリズム107は、オペレーティングシステムサービスを提供する複数の異なるサービスアルゴリズムを含むことができる。一部資源107Pにおいて表わされる機能性に基づいて、オペレーティングシステム101は、要求を行うアプリケーションにオペレーティングシステムサービスを提供するのに適したサービスアルゴリズム107の特定のサブセットを用いることに移行することができる。オペレーティングシステム101は、サービスアルゴリズム107を調節して、より効率的に一部資源107Pを利用することができる。
従って、サービスアルゴリズム107は、オペレーティング環境103の顕在化した一部と相互運用するためにカスタマイズすることができる。例えば、一部資源107Pは、オペレーティング環境103が通信スタック機能性を与えることができることを示す場合もある。従って、オペレーティングシステム101は、オペレーティングシステム101において通信スタックを生成する代わりに、サービスアルゴリズム107を調節して、与えられた通信スタック機能性を利用することができる。
図1Bに、オペレーティングシステム101に要求するサービスの実行フローを示す例示的なコンピュータアーキテクチャ100を示す。オペレーティングシステム101が服従し、オペレーティング環境抽象化レイヤ012ができる処理は、同期要求、生産者−消費者(producer-consumer)要求、非同期要求を含む、異なる様々な種類の要求である。
例えば、オペレーティングシステム101は、オペレーティング環境抽象化レイヤ102に同期要求を出力することができる。同期要求は、例えば、ネットワークソケットを開き、またはコンソール上にテキスト列を表示するなどの動作を含むことができる。同期要求を開始するために、プロセス111は、基本的オペレーティング環境抽象化レイヤの要求にインターフェースを与えるラッパー(wrapper)機能112へ要求151を出力する。ラッパー機能112は、プロセス111からオペレーティング環境抽象化レイヤ102の基本的な機構を抽象化することによって、実行の詳細を隠す。例えば、通信サービスへのラッパーは、オペレーティング環境抽象化レイヤ102が顕在化させる基本的なトランスポートから独立したネットワークトランスポートに基づくインターフェースを提供することができる。ネットワークトランスポートに基づくインターフェースは、基本的なトランスポートが共有メモリまたはイベントであるか、または名前付きパイプトランスポートに関するラッパーである場合に、リングバッファとして実行されることもある。しかし、ラッパー機能は、オペレーティングシステム101からこれらの詳細を抽象化する。
ラッパー機能112は、要求152をサービス要求114へ出力する。従って、ラッパー機能112は、オペレーティング環境抽象化レイヤ102のソースコードにホストされたオペレーティング環境抽象化レイヤ機能をラップするクラスに定義された、オペレーティング環境抽象化レイヤ102のサービスを起動する。ラッパークラスは、サービスラッパー機能の起動についての特定のアトリビュートを定義することができる。なお、クラスは、サービスが使用するエラーコードおよびフラグなどの他の定義を含むことができる。
サービス要求起動114は、要求152を受信する。サービス要求起動114は、サービス118を起動するために起動153を発行する。サービス118は、オペレーティング環境抽象化レイヤ102のソースコードにホストされた起動モデルを介して実行される。サービス118への要求は、割り込みできないようにして、そして、API182のAPI構造内の関数ポインタとして顕在化するサービス118を呼び出すことができる。
サービス118は、サービスの起動に応答して、例えば、通信チャンネルへのポインタなどの適切なデータ154(ステータス情報および結果)を返す。
ある実施形態において、サービスの起動は、オペレーティング環境抽象化レイヤのサービス拡張にまで出力される。オペレーティング環境抽象化レイヤ102は、例えば、「DLL(Dynamic Link Library)」形式により、オペレーティング環境抽象化レイヤのサービス拡張121などのサービス拡張を読み込むことができる。オペレーティング環境抽象化レイヤ102は、オペレーティングシステム101にオペレーティング環境抽象化レイヤのサービス拡張121を結び付けることができる。従って、オペレーティングシステムは、環境抽象化レイヤのサービス拡張121においてサービスされる利用可能な要求を出力することができる。例えば、要求153Aおよびデータ154Aによって示されるように、サービス122が起動されて、適切なデータを返すことができる。従って、オペレーティング環境抽象化レイヤの機能性は、オペレーティング環境抽象化レイヤを大幅に変更する必要なく拡張を介してして拡張される。
サービス起動114は、次に、結果155(少なくとも適切なデータ154を含む)をラッパー機能122に返す。ラッパー機能112は結果155を処理して、プロセス111に結果156(少なくとも適切なデータ154も含む)を返す。エラー条件が検出された場合、ラッパー機能112は、プロセス111に例外を提起することができる。
生産者−消費者要求は、割り込み通知機構を用いて、オペレーションの完了についてオペレーティングシステム101(消費者)に通知するオペレーティング環境抽象化レイヤ102内のワーカースレッド(生産者)において生成される。そのようなサービスの一例は、キーが押されてオペレーティングシステム101によって処理される毎に通知イベントを生成するキーボードである。
例えば、ワーカースレッド117は、割込スレッド116へ要求157を生成することができる。ワーカースレッドは、API182における非同期のAPIに用いるか、または、生産者−消費者モデルに従うサービスに用いることができる。いずれの場合にも、ワーカースレッドは、例えば、入出力要求の完了またはキーボードイベントの完了などのシステムイベントの通知を獲得するループとすることができる。各ワーカースレッドは、割込スレッド116に類似する割込スレッドと関連付けることができる。ワーカースレッドは、イベントに関するコンテキスト情報を生成して、割込スレッド116を起動するイベントを設定する。以下のコードは、ワーカースレッドのループの骨格の例を示す。
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
);
}
割込スレッド116は、要求158を出力して、割込ディスパッチ機能113を立ち上げる。割込ディスパッチ機能は、割込コンテキストを読み出して、サービス割込要求(例えば、オペレーティングシステム101のラッパークラスにホストされている)を要求し、割込コンテキストを消去する。以下は、キーボード割込ディスパッチ要求の一例である。
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);
}
割込ディスパッチ113は、非同期の動作または生産者−消費者動作の結果を待つラッパー機能(例えば、ラッパー機能112)を起動するイベントを立ち上げるプロセス111に要求159を送信することができる。
オペレーティングシステム101は、非同期要求をオペレーティング環境抽象化レイヤ102に送信することもできる。例えば、要求151が非同期要求である場合もある。非同期要求は、動作の実行が完了した時に、オペレーティングシステム101に通知するために用いられる割り込み通知機構を用いて処理される。非同期要求の例は、オペレーティング環境抽象化レイヤ102の通信サービスにおいて行われる読み書き名前付きパイプの動作を含む。生産者−消費者要求は、ブロックされる可能性がある。従って、ある実施形態において、オペレーティング環境抽象化レイヤは、非同期動作として生産者−消費者要求を実施することができる。
割り込みモデルは、非同期動作を通知するパラダイムとして使用することができる。図5に、非同期動作を処理する割り込みモデルのコンテキスト情報の例示的なフロー500を示す。オペレーティングシステムのラッパー機能(例えば、ラッパー機能112と同様の機能)は、非同期要求を受信して、オペレーションを実行する。例えば、オペレーティングシステムラッパー機能512は、オペレーション532が実行されることを要求する非同期オペレーション要求531を受信することができる。非同期要求に応答して、オペレーティングシステムラッパー機能は、特定の要求に関連するコンテキスト情報を含むコンテキスト構造を生成する。コンテキスト情報は、オペレーションが完了した時に信号が送られることとなるイベントへの参照を含むことができる。例えば、オペレーティングシステムラッパー機能512は、オペレーション532が完了した時に要求されることとなるイベントを参照する要求コンテキスト521を生成することができる。
ラッパー機能は、コンテキストをオペレーティング環境抽象化レイヤサービス(例えば、サービス118と同様のもの)に渡す。例えば、システムラッパー機能512は、要求コンテキスト521を抽象化レイヤサービス518に渡すことができる。抽象化レイヤサービスは、例えば、オペレーションの完了結果を処理するのに役立つ(または要求される)ことが可能な、オペレーションまたは他の情報の種類などの付加的情報を有するラッパー機能からコンテキストを獲得して、独自のサービスコンテキストを生成することもできる。例えば、抽象化レイヤサービス518は、オペレーション532、および/またはオペレーション532に対応する情報を処理する他の結果についてのオペレーションの種類を示すサービスコンテキスト522を生成することができる。
オペレーションが完了した時、ワーカースレッドは、サービスコンテキストを用いて、オペレーション結果を後処理する。例えば、オペレーション532が完了した時、ワーカースレッド117は、サービスコンテキスト522を用いてオペレーション532の結果を後処理することができる。ワーカースレッドは、次に、割り込みディスパッチ機能に、要求コンテキストおよびサービスコンテキストを渡す割り込みを送る。例えば、ワーカースレッド117は、要求コンテキスト521およびサービスコンテキスト522をオペレーティングシステム割り込みディスパッチ機能513に渡すことができる。
割り込みディスパッチ機能は、要求コンテキストを用いてオペレーティングシステム割り込みディスパッチ機能を要求する。例えば、オペレーティングシステム割り込みディスパッチ機能513は、要求コンテキスト521を用いてオペレーティングシステムラッパー割り込みサービス機能519を要求することができる。オペレーティングシステム割り込みディスパッチ機能は、ラッパー機能との関連で、オペレーションの結果またはステータスを格納することができ、次に、オペレーティングシステムスレッドを起動するためのイベントを起こして、オペレーションが完了したことを表示する。例えば、オペレーティングシステムラッパー割り込みサービス機能519は、オペレーション532の結果またはステータスを格納することができ、そして、非同期オペレーション要求531を送信したスレッドに、オペレーション532が完了したことを示すためのイベントを起こす。以下は、通信サービスのディスパッチコードの例である。
// 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から)、サービスコンテキスト情報の割り当てを解除し、そして任意の他の消去オペレーションを実行することもすることもできる。例えば、オペレーティングシステム割り込みディスパッチ機能513は、抽象化レイヤ割り込み消去モジュール520を要求して、サービスコンテキスト522の割り当てを解除し、オペレーション532の完了に関連する消去オペレーションを実行する。以下は、通信サービスに関する割り込み消去コードの例である。
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);

上記コードにおいて、割り込みコンテキストが送信されたことを示すイベント通知が存在する。ワーカースレッド(例えば、517)と割り込みディスパッチ機能(例えば、513)との間の競合条件を回避するために、割り込みワーカースレッドを、ワーカースレッドのループ端で起こすことができ、コードは、次のループの相互作用を継続する前に、送信オペレーションが完了したことを示す信号を待つ。割り込み消去機能は、ワーカースレッドに継続するための信号を送信する。ワーカースレッドは、上記の生産者−消費者要求に関する骨組ループと同様にループを実行することができる。
様々な起動モデルを用いることにより、異なるオペレーティング環境抽象化レイヤは、複数の異なるオペレーティング環境を抽象化するように構成して、統一された機能性の組を与えることができる。統一された機能性の組は、例えば、オペレーティング環境の相違を占める抽象化アルゴリズム106と同様に、抽象化アルゴリズムを介して与えられることが可能である。従って、統一された機能性の組を利用するオペレーティングシステムは、複数の異なる任意のオペレーティング環境において実行することができる。
さらに(例えば、初期化中に)、抽象化レイヤは、他の抽象化レイヤの存在を特定することを含め、分析し、オペレーティング環境を完全に認識するように構成することができる。従って、抽象化レイヤは、対応するオペレーティング環境の特徴を利用するように特別に設計することができる。抽象化レイヤはまた、他の特定された抽象化レイヤのオペレーティング環境によって与えられたサービスにアクセスするように構成することができる。
図2A−2Cは、異なるオペレーティング環境をオペレーティングシステムから抽象化する例示的なコンピュータアーキテクチャを示す。図2Aに示すように、オペレーティング環境抽象化レイヤ202(ハードウェア対象)は、ハードウェア専用インターフェースを利用して、ハードウェア203(例えば、ベアメタル)を抽象化する。図2Bにおいて、オペレーティング環境抽象化レイヤ222(ハイパーバイザ対象)は、ハイパーバイザ専用インターフェースを利用して、ハイパーバイザ223を抽象化する。図2Cにおいて、オペレーティング環境抽象化レイヤ242(ホストオペレーティングシステム対象)は、オペレーティングシステム専用インターフェース286を利用して、ホストオペレーティングシステム243(例えば、ウィンドウズNT、ウィンドウズCE、リナックス)を抽象化する。しかし、オペレーティング環境抽象化レイヤ202(ハードウェア対象)とオペレーティング環境抽象化レイヤ222(ハイパーバイザ対象)とオペレーティング環境抽象化レイヤ242(ホストオペレーティングシステム対象)のそれぞれは、API282経由でオペレーティングシステム201との通信をサポートする。
オペレーティング環境の資源が、対応する抽象化レイヤによってアクセスされ、オペレーティングシステム201に顕在化されるので、オペレーティングシステム210は、実行環境のプロパティを認識する。従って、資源管理は、オペレーティングシステム201および実行中の作業負荷の要求へカスタマイズされることが可能である。従って、抽象化アルゴリズムおよびサービスアルゴリズム(オペレーティングシステム201において、例えば、サービスアルゴリズム104と同様のもの)は、オペレーティング環境内でより効率的なオペレーションを目的として、調節されることが可能である。例えば、オペレーティングシステム210がハイパーバイザ223上で実行する場合、ハイパーバイザスケジューラは、オペレーティングシステム201に顕在化されることが可能である。従って、オペレーションシステム201のCPUスケジューラは、ハイパーバイザスケジューラの要求を満たすようにポリシーを調節することができる。
デバイスドライバおよびオペレーティングシステムサービスは、本来、オペレーティングシステム201によって実施され、または転送されて、オペレーティング環境において(例えば、ホストオペレーティングシステム243において)実行することができる。
ある実施形態において、オペレーティングシステム201は、オペレーティング環境である。例えば、ホストオペレーティングシステム243は、オペレーティングシステム201のインスタンスである場合もある。従って、オペレーティングシステム201の1つのインスタンスは、オペレーティングシステム201の別のインスタンスの最上部で再帰的に実行することができる。この形式の再帰は、例えば、セルフホスティングおよびアプリケーションドメイン等の「CLR(Common Language Runtime)」について、隔離された実行環境を生成することができる。
オペレーティングシステムおよび対応する抽象化レイヤは、特権プロセッサモードと非特権プロセッサモードとの柔軟な組み合わせによって実行することができる(実行リングと呼ばれることもある)。図3A−3Dは、異なるプロセッサモードにおいて、オペレーティングシステムから異なるオペレーティング環境を抽象化する例示的なコンピュータアーキテクチャを示す。図3Aに、ホストオペレーティングシステム環境343を示す。図3Aのホストオペレーティングシステム環境343内では、オペレーティングシステム301とオペレーティング環境抽象化レイヤ342(ホストオペレーティングシステム対象)との両方が、ユーザモード311において実行している(リング3)。
図3Bもまた、ホストオペレーティングシステム環境343を示す。しかし、図3Bのホストオペレーティングシステム環境343内では、オペレーティングシステム301とオペレーティング環境抽象化レイヤ342(ホストオペレーティングシステム対象)との両方が、カーネルモード312において実行している(リング0)。図3Bに示す実施形態は、別個の実行環境がホストオペレーティングシステム環境343内に存在することを可能にする。別個の実行環境は、例えば、ホストデバイスドライバに用いることができる。オペレーティングシステム301の実行環境は、カーネルからドライバの実行を隔離して、デバイスドライバの障害を回復させる。
図3Cは、ハードウェア環境303(例えば、ベアメタル)を示す。ハードウェア環境303内では、オペレーティングシステム301が、ユーザモード311(リング3)で実行して、オペレーティングシステム抽象化レイヤ302(ハードウェア対象)が、カーネルモード312(リング0)で実行する。
図3Dは、ハイパーバイザ323の最上部で実行する、図3Aからのホストオペレーティングシステム環境343のインスタンスを示す。図3Dはまた、オペレーティング環境抽象化レイヤ322(ハイバーバイザ対象)の最上部のカーネルモード312(リング0)で実行するオペレーティングシステム301のインスタンスも示す。図3D内では、オペレーティング環境抽象化レイヤ322(ハイパーバイザ対象)は、ホストオペレーティングシステム環境343の存在を認識して、ホストオペレーティング環境343によって与えられるサービスを利用することができる。オペレーティングシステム301とオペレーティング環境抽象化レイヤ342(ホストオペレーティングシステム対象)との組み合わせは、ホストオペレーティングシステム環境343によって与えられるサービス(例えば、デバイスドライバ)へのプロキシとして作用することができる。あるいは、オペレーティングシステム301とオペレーティング環境抽象化レイヤ322(ハイパーバイザ対象)との組み合わせは、ホストオペレーティングシステム環境343のサービスと直接通信を行うことができる。
図4に、オペレーティングシステムの機能を実行する例示的な方法400のフローチャートを示す。方法400は、コンピュータアーキテクチャ100に示されるコンポーネントおよびデータに関して説明される。
方法400は、基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出するオペレーティング環境抽象化レイヤの動作を含む(動作401)。例えば、オペレーティング環境抽象化レイヤ103は、オペレーティング環境103の資源107を検出することができる。方法400は、検出されたオペレーティング環境資源に表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節するオペレーティング環境抽象化レイヤの動作(動作402)を含む。例えば、オペレーティング環境抽象化レイヤ102は、資源107に表わされる機能性に基づいて、抽象化アルゴリズム106を調節することができる。
方法400は、基本的オペレーティング環境の検出されたオペレーティング環境資源をオペレーティングシステムに顕在化させて、オペレーティングシステムへ基本的オペレーティング環境の検出されたオペレーティング環境資源を特定するオペレーティング環境抽象化レイヤの動作(動作403)を含む。例えば、オペレーティング環境抽象化レイヤ102は、部分資源107Pをオペレーティングシステム101に顕在化させるこができる。方法400は、オペレーティングシステムに顕在化されている検出されたオペレーティング環境資源に表わされる顕在化された機能性に基づいて、要求を行うアプリケーションへオペレーティングシステムサービスを与えるために用いられるサービスアルゴリズムを調節するオペレーティングシステムの動作(動作404)を含む。例えば、オペレーティングシステム101は、部分資源107Pに表わされる顕在化された機能性に基づいて、サービスアルゴリズム107を調節することができる。
方法400は、オペレーティングシステムサービスに対するアプリケーションプログラム要求を受信するオペレーティングシステムの動作(動作405)を含む。例えば、オペレーティングシステム101は、アプリケーション111またはアプリケーション112から、オペレーティングシステムサービス対する要求を受信することができる。方法400は、調節されたサービスアルゴリズムおよび調節された抽象化アルゴリズムに従って、特定のインターフェースを経由してオペレーティング環境抽象化レイヤと相互作用して、要求を行うアプリケーションに対してオペレーティングシステムサービスを実施するオペレーティングシステムの動作(動作406)を含む。例えば、オペレーティングシステム101およびオペレーティング環境抽象化レイヤ102は、調節されたサービスアルゴリズム104および調節された抽象化アルゴリズム106に従って、API182を介して相互作用して、アプリケーション111または112に対するオペレーティングシステムサービスを実施することができる。
本発明は、発明の趣旨または不可欠な特徴から逸脱することなく、他の特定の形式において実施することができる。説明した実施形態は、すべての点において単なる例示として見なされるべきであり、限定するものとして見なされるべきでない。本発明の範囲は、従って、前述の説明によってではなく、添付の特許請求の範囲によって示される。本特許請求の範囲の均等の意味および範囲内におけるすべての変更は、本特許請求の範囲内に取り込まれる。

Claims (20)

  1. コンピューターシステムにおいて、前記コンピューターシステムは、オペレーティングシステムと、基本的オペレーティング環境と、および前記オペレーティングシステムおよび前記基本的オペレーティング環境の間に位置するオペレーティング環境抽象化レイヤとを含み、前記基本的オペレーティング環境はオペレーティング環境資源を他のソフトウェアモジュールに与えるように構成され、前記基本的オペレーティング環境はオペレーティング環境資源を他のソフトウェアモジュールに与えることができる複数の異なるオペレーティング環境の1つであり、前記オペレーティングシステムは任意の複数の異なる調節可能なサービスアルゴリズムを用いて要求を行うアプリケーションプログラムにオペレーティングシステムサービスを与えるように構成され、前記オペレーティングシステムは前記複数の異なる基本的オペレーティング環境の中から特定された基本的オペレーティング環境の顕在化されたオペレーティング環境資源に基づいてオペレーティングシステムサービスを与え、前記オペレーティングシステムは他のソフトウェアモジュールと相互作用するために特定のインターフェースを有し、前記オペレーティング環境抽象化レイヤは前記オペレーティングシステムおよび前記基本的オペレーティング環境に通信接続され、前記オペレーティングシステムが前記オペレーティング環境抽象化レイヤを経由して前記基本的オペレーティング環境と相互作用することができるように前記オペレーティング環境抽象化レイヤは、前記オペレーティングシステムから前記基本的オペレーティング環境を抽象化するため、および任意の複数の異なる調節可能な抽象化アルゴリズムを用いて前記特定のインターフェースを経由して前記オペレーティングシステムと調節的に相互作用するために特別に設計されている、前記コンピュータシステムにおいて、オペレーティングシステムの機能を実行する方法であって、
    前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの動作と、
    前記検出されたオペレーティング環境資源に表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節する前記オペレーティング環境抽象化レイヤの動作と、
    前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を前記オペレーティングシステムに顕在化させて、前記オペレーティングシステムに対して前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を特定する前記オペレーティング環境抽象化レイヤの動作と、
    前記オペレーティングシステムに顕在化された前記検出されたオペレーティング環境資源に表わされる前記顕在化された機能性に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられる前記サービスアルゴリズムを調節する前記オペレーティングシステムの動作と、
    オペレーティングシステムサービスに対するアプリケーションプログラム要求を受信する前記オペレーティングシステムの動作と、
    前記要求を行うアプリケーションに対する前記オペレーティングシステムサービスを実施するために、前記調節されたサービスアルゴリズムおよび前記調節された抽象化アルゴリズムに従って、前記特定のインターフェースを経由して前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの動作と
    を備えたことを特徴とする方法。
  2. 前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの動作は、基本的ハードウェアの利用可能な資源を検出するハードウェア抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  3. 前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、基本的ハイパーバイザの利用可能な資源を検出するハイパーバイザ抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  4. 前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、基本的オペレーティングシステムの利用可能な資源を検出するオペレーティングシステム抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  5. 前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出する前記オペレーティング環境抽象化レイヤの前記動作は、前記コンピューターシステムにおいて実行する1または複数の他のオペレーティング環境抽象化レイヤを検出するオペレーティングシステム抽象化レイヤを備えたことを特徴とする請求項1に記載の方法。
  6. 要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる前記抽象化アルゴリズムを調節する前記オペレーティング環境抽象化レイヤの前記動作は、前記基本的オペレーティング環境と相互運用する前記抽象化アルゴリズムをカスタマイズする動作を備えたことを特徴とする請求項1に記載の方法。
  7. 前記オペレーティングシステムに前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を顕在化させる前記オペレーティング環境抽象化レイヤの前記動作は、前記オペレーティングシステムを呼び出すためにAPIを用いる前記オペレーティング環境抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  8. 要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられる前記サービスアルゴリズムを調節する前記オペレーティングシステムの前記動作は、前記検出されたオペレーティング環境資源の前記顕在化された機能性と相互運用する前記サービスアルゴリズムをカスタマイズする動作を備えたことを特徴とする請求項1に記載の方法。
  9. 前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティング環境抽象化レイヤに要求を送信する前記オペレーティングシステムの動作を備え、同期要求および非同期要求の中から前記要求の形式が選択されることを特徴とする請求項1に記載の方法。
  10. 前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティングシステムに前記基本的オペレーティング環境の資源を割り当てる前記オペレーティング環境抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  11. 前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記基本的オペレーティング環境に前記アプリケーションプログラム要求を転送する前記オペレーティング環境抽象化レイヤの動作を備えたことを特徴とする請求項1に記載の方法。
  12. 前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実施する前記オペレーティング環境抽象化レイヤと相互作用する前記オペレーティングシステムの前記動作は、前記オペレーティングシステムサービスをネイティブ実施する前記オペレーティングシステムの動作を備えたことを特徴とする請求項1に記載の方法。
  13. 前記オペレーティングシステムは、ユーザモードおよびカーネルモードの中から選択されたプロセッサモードにおいて実行することを特徴とする請求項1に記載の方法。
  14. 前記オペレーティング環境抽象化レイヤは、ユーザモードおよびカーネルモードの中から選択されたプロセッサモードにおいて実行することを特徴とする請求項12に記載の方法。
  15. 前記基本的オペレーティング環境は、前記オペレーティングシステムのインスタンスであることを特徴とする請求項1に記載の方法。
  16. コンピューターシステムにおいて用いるコンピュータプログラム製品であって、前記コンピューターシステムは、オペレーティングシステムと、基本的オペレーティング環境と、および前記オペレーティングシステムおよび前記基本的オペレーティング環境の間に位置するオペレーティング環境抽象化レイヤとを含み、前記基本的オペレーティング環境は、オペレーティング環境資源を他のソフトウェアモジュールに与えるように構成され、前記基本的オペレーティング環境は、オペレーティング環境資源を他のソフトウェアモジュールに与えることができる複数の異なるオペレーティング環境の1つであり、前記オペレーティングシステムは任意の複数の異なる調節可能なサービスアルゴリズムを用いて、要求を行うアプリケーションプログラムにオペレーティングシステムサービスを与えるように構成され、前記オペレーティングシステムは、複数の異なる基本的オペレーティング環境の中から、特定された基本的オペレーティング環境の顕在化されたオペレーティング環境資源に基づいてオペレーティングシステムサービスを与え、前記オペレーティングシステムは、他のソフトウェアモジュールと相互作用するために特定されたインターフェースを有し、前記オペレーティング環境抽象化レイヤは、前記オペレーティングシステムおよび前記基本的オペレーティング環境に通信接続され、前記オペレーティングシステムが前記オペレーティング環境抽象化レイヤを経由して前記基本的オペレーティング環境と相互作用することができるように、前記オペレーティング環境抽象化レイヤは、前記オペレーティングシステムから前記基本的オペレーティング環境を抽象化するため、および任意の複数の異なる調節可能な抽象化アルゴリズムを用いて、前記特定されたインターフェースを経由して前記オペレーティングシステムと調節して相互作用するために特別に設計され、前記コンピュータプログラム製品は、オペレーティングシステム機能を実行する方法を実装し、前記コンピュータプログラム製品は、それらに格納されている1または複数のコンピュータ読み取り可能媒体を備えて、プロセッサにおいて実行される場合に、前記コンピューターシステムに前記方法を実行できるようにするコンピュータ実行可能命令は、
    前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出するステップと、
    前記検出されたオペレーティング環境資源に表わされる機能性に基づいて、要求を行うオペレーティングシステムにオペレーティング環境資源を与えるために用いられる前記抽象化アルゴリズムを調節するステップと、
    前記オペレーティングシステムに対して前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を特定するために、前記オペレーティングシステムに前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を顕在化させるステップと、
    前記オペレーティングシステムに顕在化された前記検出されたオペレーティング環境資源に表わされる前記顕在化された機能性に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられる前記サービスアルゴリズムを調節するステップと、
    オペレーティングシステムサービスに対するアプリケーションプログラム要求を受信するステップと、
    前記要求を行うアプリケーションのために前記オペレーティングシステムサービスを実装する前記調節されたサービスアルゴリズムおよび前記調節された抽象化アルゴリズムに従って、前記特定されたインターフェースを経由して前記オペレーティング環境抽象化レイヤと相互作用するステップと
    を含むことを特徴とするコンピュータ実行可能命令。
  17. コンピューターシステムであって、
    1または複数のプロセッサと、
    システムメモリと、
    基本的オペレーティング環境と
    オペレーティング環境抽象化レイヤおよびオペレーティングシステムを示す1つのコンピュータ実行可能命令が格納されている1または複数のコンピュータ読み取り可能媒体であって、
    前記基本的オペレーティング環境の利用可能なオペレーティング環境資源を検出するステップと、
    前記検出されたオペレーティング環境資源に表わされる前記機能性に基づいて、要求を行うコンピューターシステムにオペレーティング環境資源を与えるために用いられる抽象化アルゴリズムを調節するステップと、
    前記オペレーティングシステムに対して前記基本的オペレーティング環境の前記検出されたオペレーティング環境資源を特定するために、前記オペレーティングシステムに前記基本的オペレーティング環境の検出されたオペレーティング環境資源を顕在化させるステップと、
    を実施するように構成されるオペレーティング前記環境抽象化レイヤと、
    前記オペレーティングシステムに表示された前記検出されたオペレーティング環境資源に表わされる前記顕在化された機能性に基づいて、要求を行うアプリケーションにオペレーティングシステムサービスを与えるために用いられるサービスアルゴリズムを調節するステップと、
    オペレーティングシステムサービスに対するアプリケーションプログラム要求を受信するステップと、
    要求を行うアプリケーションのためにオペレーティングシステムサービスを実施する前記調節されたサービスアルゴリズムおよび前記調節された抽象化アルゴリズムに従って、前記特定されたインターフェースを経由して前記オペレーティング環境抽象化レイヤと相互作用するステップと、
    を実施するように構成される前記オペレーティングシステムと
    を備えたことを特徴とするコンピューターシステム。
  18. 前記基本的オペレーティング環境は、ハードウェア、ハイパーバイザ、前記オペレーティングシステムのインスタンス、および第2の異なるオペレーティングシステムの中から選択されるオペレーティング環境であることを特徴とする請求項17に記載のシステム。
  19. 前記調節された抽象化アルゴリズムは、前記オペレーティングシステムの前記作業負荷要求に対してカスタマイズされた資源管理を与えることを特徴とする請求項17に記載のシステム。
  20. 前記オペレーティング環境抽象化レイヤは、
    前記コンピューターシステムにおいて他のオペレーティング環境抽象化レイヤを検出するステップと、
    別のオペレーティング環境抽象化レイヤの前記基本的オペレーティング環境から前記オペレーティングシステムに資源を与えるステップと
    をさらに実行するように構成されることを特徴とする請求項17に記載のシステム。
JP2009553668A 2007-03-09 2008-02-15 カスタマイズ方法及びコンピュータシステム Expired - Fee Related JP5496683B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/684,404 US20080222659A1 (en) 2007-03-09 2007-03-09 Abstracting operating environment from operating system
US11/684,404 2007-03-09
PCT/US2008/054156 WO2008112386A1 (en) 2007-03-09 2008-02-15 Abstracting operating environment from operating system

Publications (2)

Publication Number Publication Date
JP2010521034A true JP2010521034A (ja) 2010-06-17
JP5496683B2 JP5496683B2 (ja) 2014-05-21

Family

ID=39742962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009553668A Expired - Fee Related JP5496683B2 (ja) 2007-03-09 2008-02-15 カスタマイズ方法及びコンピュータシステム

Country Status (6)

Country Link
US (1) US20080222659A1 (ja)
EP (1) EP2132640B1 (ja)
JP (1) JP5496683B2 (ja)
CN (1) CN101627377B (ja)
TW (1) TW200847026A (ja)
WO (1) WO2008112386A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517376A (ja) * 2011-04-29 2014-07-17 北京中天安泰信息科技有限公司 安全なデータ格納方法およびデバイス
KR20200020485A (ko) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 운영체제 시스템의 자원 관리 장치 및 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US20090222491A1 (en) * 2008-02-28 2009-09-03 Michael Larkin Systems and Methods for Layered Resource Management
US8983911B2 (en) * 2011-06-20 2015-03-17 Microsoft Technology Licensing, Llc Storage media abstraction for uniform data storage
US8676938B2 (en) 2011-06-28 2014-03-18 Numecent Holdings, Inc. Local streaming proxy server
US8694995B2 (en) * 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US9386057B2 (en) 2012-01-18 2016-07-05 Numecent Holdings, Inc. Application streaming and execution system for localized clients
US9485304B2 (en) * 2012-04-30 2016-11-01 Numecent Holdings, Inc. Asset streaming and delivery
WO2014043277A2 (en) 2012-09-11 2014-03-20 Numecent Holdings Ltd. Application streaming using pixel streaming
US9661048B2 (en) 2013-01-18 2017-05-23 Numecent Holding, Inc. Asset streaming and delivery
CN105543082A (zh) * 2015-12-15 2016-05-04 路博超 一种基于osal的固态发酵控制系统
US10521590B2 (en) * 2016-09-01 2019-12-31 Microsoft Technology Licensing Llc Detection dictionary system supporting anomaly detection across multiple operating environments
CN110275757A (zh) * 2018-03-16 2019-09-24 北京忆恒创源科技有限公司 利用系统抽象层提供多协议存储设备
US10705511B2 (en) * 2018-07-11 2020-07-07 Siemens Aktiengesellschaft Abstraction layers for automation applications
FR3094514A1 (fr) * 2019-03-25 2020-10-02 Proton World International N.V. Système électronique
US11182182B2 (en) * 2019-07-24 2021-11-23 Vmware, Inc. Calling arbitrary functions in the kernel via a probe script
CN113297566B (zh) * 2020-05-15 2024-04-02 阿里巴巴集团控股有限公司 沙箱实现方法、装置、设备和存储介质
EP4064053A1 (en) 2021-03-26 2022-09-28 Aptiv Technologies Limited Managing inter-service communication

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005031572A2 (en) * 2003-09-22 2005-04-07 Jaluna Sa Operating systems
JP2006024214A (ja) * 2004-07-08 2006-01-26 Hewlett-Packard Development Co Lp コンピュータシステムをソフトパーティショニングするシステムおよび方法
JP2006244483A (ja) * 2005-02-28 2006-09-14 Hewlett-Packard Development Co Lp パーティション間で実行可能プログラムを転送するためのコンピュータシステム及び方法
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理
JP2007509387A (ja) * 2003-09-30 2007-04-12 ジャルナ エスアー オペレーティングシステム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0664537B2 (ja) * 1986-01-17 1994-08-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ処理システム
US5640562A (en) * 1995-02-27 1997-06-17 Sun Microsystems, Inc. Layering hardware support code on top of an existing operating system
US6687762B1 (en) * 1996-10-10 2004-02-03 Hewlett-Packard Development Company, L.P. Network operating system adapted for simultaneous use by different operating systems
US5812852A (en) * 1996-11-14 1998-09-22 Kuck & Associates, Inc. Software implemented method for thread-privatizing user-specified global storage objects in parallel computer programs via program transformation
US6286130B1 (en) * 1997-08-05 2001-09-04 Intel Corporation Software implemented method for automatically validating the correctness of parallel computer programs
US6671882B1 (en) * 1998-07-25 2003-12-30 General Instrument Corporation System for distributing and handling electronic program guide information using CORBA-wrapped objects
US6808111B2 (en) * 1998-08-06 2004-10-26 Visa International Service Association Terminal software architecture for use with smart cards
JP2003521027A (ja) * 1999-12-21 2003-07-08 ジェネラル・インスツルメント・コーポレイション 異なるオぺレーティングシステムプラットフォームにわたるデバイスドライバーの移植性のためのアブストラクトデバイスドライバーモデル
US6763327B1 (en) * 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6880158B1 (en) * 2000-04-10 2005-04-12 International Business Machines Corporation Network processor services architecture that is platform and operating system independent
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US20020057837A1 (en) * 2000-08-14 2002-05-16 Tim Wilkinson Portable operating environment for information devices
FR2814257B1 (fr) * 2000-09-20 2002-12-06 Palmware Architecture de microprocesseur virtuel multiplate-forme et son systeme d'exploitation complementaire, notamment pour le domaine de l'informatique embarquee et mobile
US7028305B2 (en) * 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US6907610B2 (en) * 2001-06-15 2005-06-14 Microsoft Corporation System and method for building a target operating system from a source operating system
US7080284B1 (en) * 2002-07-19 2006-07-18 Newisys, Inc. Computer server architecture and diagnostic framework for testing same
US7149918B2 (en) * 2003-03-19 2006-12-12 Lucent Technologies Inc. Method and apparatus for high availability distributed processing across independent networked computer fault groups
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US7966485B2 (en) 2004-12-01 2011-06-21 Igt Universal operating system to hardware platform interface for gaming machines
US20060233174A1 (en) * 2005-03-28 2006-10-19 Rothman Michael A Method and apparatus for distributing switch/router capability across heterogeneous compute groups
US8032899B2 (en) * 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005031572A2 (en) * 2003-09-22 2005-04-07 Jaluna Sa Operating systems
JP2007509387A (ja) * 2003-09-30 2007-04-12 ジャルナ エスアー オペレーティングシステム
JP2006024214A (ja) * 2004-07-08 2006-01-26 Hewlett-Packard Development Co Lp コンピュータシステムをソフトパーティショニングするシステムおよび方法
JP2006244483A (ja) * 2005-02-28 2006-09-14 Hewlett-Packard Development Co Lp パーティション間で実行可能プログラムを転送するためのコンピュータシステム及び方法
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200601100012; 伊藤 宏通: 'CPUの仮想化技術をXenで活用する VMXドメイン徹底研究' Linux WORLD 第5巻 第4号 第5巻 第4号, 20060401, 136-141, (株)IDGジャパン *
JPN6012063837; 伊藤 宏通: 'CPUの仮想化技術をXenで活用する VMXドメイン徹底研究' Linux WORLD 第5巻 第4号 第5巻 第4号, 20060401, 136-141, (株)IDGジャパン *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517376A (ja) * 2011-04-29 2014-07-17 北京中天安泰信息科技有限公司 安全なデータ格納方法およびデバイス
US9330266B2 (en) 2011-04-29 2016-05-03 Antaios (Beijing) Information Technology Co., Ltd. Safe data storage method and device
KR20200020485A (ko) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 운영체제 시스템의 자원 관리 장치 및 방법
KR102111991B1 (ko) * 2018-08-17 2020-05-18 주식회사 한컴엠디에스 운영체제 시스템의 자원 관리 장치 및 방법

Also Published As

Publication number Publication date
JP5496683B2 (ja) 2014-05-21
TW200847026A (en) 2008-12-01
CN101627377B (zh) 2011-12-28
EP2132640A4 (en) 2010-04-28
WO2008112386A1 (en) 2008-09-18
EP2132640B1 (en) 2017-04-26
EP2132640A1 (en) 2009-12-16
CN101627377A (zh) 2010-01-13
US20080222659A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
JP5496683B2 (ja) カスタマイズ方法及びコンピュータシステム
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US11429442B2 (en) Parallel and distributed computing using multiple virtual machines
US10353725B2 (en) Request processing techniques
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
US10592218B2 (en) Dynamic data and compute resource elasticity
US20080196043A1 (en) System and method for host and virtual machine administration
US20080244507A1 (en) Homogeneous Programming For Heterogeneous Multiprocessor Systems
US20210173665A1 (en) Bootstrapping Profile-Guided Compilation and Verification
JP2007183951A (ja) 仮想プロセッサへの直接的なインタラプトの送信
JP4000327B2 (ja) 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法
US11860796B2 (en) Execution space agnostic device drivers
KR102140730B1 (ko) Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
CN113778612A (zh) 基于微内核机制的嵌入式虚拟化系统实现方法
US11886924B2 (en) Methods and apparatus to handle dependencies associated with resource deployment requests
WO2019001276A1 (zh) 一种微内核调度的方法和装置
US9047134B2 (en) System and method for increasing the capabilities of a mobile device
US20230029920A1 (en) Optimizing performance of a computing device in a mixed workload environment
Kocoloski et al. Hobbes: A multi-kernel infrastructure for application composition
EP3992795A1 (en) Computer system executing multiple operating systems
Liu et al. KMRE: An Efficient and Compatible Runtime to Execute Android Application on Linux System
Crutcher et al. Operating System
Schanzel et al. Unified Container Environments for Scientific Cluster Scenarios
TWI733745B (zh) 核心模式的虛擬機器(kvm)虛擬化下處理i/o請求的方法和裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130313

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130819

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130826

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130905

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140107

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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140305

R150 Certificate of patent or registration of utility model

Ref document number: 5496683

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees