(57)【要約】【課題】オペレーティングシステムのパフォーマンスを改善するための技術を提供する。【解決手段】オペレーティングシステムのサブシステムは、ユーザモードコンポーネントとして動作する代わりに、カーネルモードドライバなど、カーネルモードコンポーネントとして動作する。【選択図】図５
2006164266.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムのパフォーマンスを改善するためのシステムにおいて、
カーネルモードで動作するサブシステムであって、オペレーティングシステムコンポーネントからの要求を受け取り、処理するためのサブシステムと、
前記サブシステムからのコールを受け取り、処理するためのカーネルであって、前記コールがユーザモードからのコンテキストスイッチを生じることなく、カーネルモードで生じるカーネルと
を備えたことを特徴とするシステム。
【請求項２】
前記サブシステムは、ＰＯＳＩＸの仕様に準拠することを特徴とする請求項１に記載のシステム。
【請求項３】
前記オペレーティングシステムコンポーネントは、アプリケーションプログラムであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記オペレーティングシステムコンポーネントは、ユーザモードで動作することを特徴とする請求項１に記載のシステム。
【請求項５】
前記オペレーティングシステムコンポーネントは、カーネルモードで動作することを特徴とする請求項１に記載のシステム。
【請求項６】
前記サブシステムは、前記オペレーティングシステムのアプリケーションプログラムインターフェースを実装することを特徴とする請求項１に記載のシステム。
【請求項７】
前記オペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）の１つのバージョンであることを特徴とする請求項１に記載のシステム。
【請求項８】
前記サブシステムは、カーネルモードドライバであることを特徴とする請求項１に記載のシステム。
【請求項９】
オペレーティングシステムのパフォーマンスを改善するためにサブシステムによって実行される方法であって、前記サブシステムが前記オペレーティングシステムのカーネルモードで動作する方法において、
オペレーティングシステムの機能についての要求をオペレーティングシステムコンポーネントから受け取ることと、
前記要求を実行するためにカーネルによって提供される機能をコールすることであって、前記コールがユーザモードからのコンテキストスイッチを生じることなく、カーネルモードで生じることと
を備えることを特徴とする方法。
【請求項１０】
前記オペレーティングシステムコンポーネントは、アプリケーションプログラムであることを特徴とする請求項９に記載の方法。
【請求項１１】
前記オペレーティングシステムコンポーネントは、ユーザモードで動作することを特徴とする請求項９に記載の方法。
【請求項１２】
前記オペレーティングシステムコンポーネントは、カーネルモードで動作することを特徴とする請求項９に記載の方法。
【請求項１３】
前記サブシステムは、ＰＯＳＩＸの仕様に準拠することを特徴とする請求項９に記載の方法。
【請求項１４】
前記サブシステムは、前記オペレーティングシステムのアプリケーションプログラムインターフェースを実装することを特徴とする請求項９に記載の方法。
【請求項１５】
前記オペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）の１つのバージョンであることを特徴とする請求項９に記載の方法。
【請求項１６】
オペレーティングシステムのカーネルモードでメソッドを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
オペレーティングシステムの機能についての要求をオペレーティングシステムコンポーネントから受け取ることと、
前記要求を実行するためにカーネルによって提供される機能をコールすることであって、前記コールがユーザモードからのコンテキストスイッチを生じることなく、カーネルモードで生じることと
を備えることを特徴とするコンピュータ可読媒体。
【請求項１７】
前記オペレーティングシステムコンポーネントは、アプリケーションプログラムであることを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記オペレーティングシステムコンポーネントは、ユーザモードで動作することを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
前記オペレーティングシステムコンポーネントは、カーネルモードで動作することを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項２０】
前記サブシステムは、ＰＯＳＩＸの仕様に準拠することを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項２１】
前記サブシステムは、前記オペレーティングシステムのアプリケーションプログラムインターフェースを実装することを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項２２】
前記オペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）の１つのバージョンであることを特徴とする請求項１６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
記載の技術は、一般にオペレーティングシステムに関し、より詳細には、オペレーティングシステムのパフォーマンスを改善することに関する。
【背景技術】
【０００２】
オペレーティングシステムは、そのハードウェアおよびソフトウェアリソースの管理を含む、コンピュータシステムに関連するさまざまなタスクを実行する。ハードウェアリソースは、プロセッサ、一次ストレージ（たとえばメモリ）、二次ストレージ（たとえばハードディスクや光ディスク）、プリンタ、ディスプレイアダプタ、ネットワークインターフェースカード、入力／出力ポートなどを含む。ソフトウェアリソースは、アプリケーションプログラム、ユーザインターフェース、デバイスドライバ、ネットワークプロトコルスタックなどを含む。オペレーティングシステムは、アプリケーションプログラムの指示の下などでさまざまなタスクを達成するためにこれらのリソースを管理および調整する。
【０００３】
オペレーティングシステムは、ユーザモードまたはカーネルモードでそのタスクを達成することができる。ユーザモードでは、オペレーティングシステムのコンポーネントは一般に、アプリケーションプログラムに関連するタスクを実行する。カーネルモードでは、オペレーティングシステムのコンポーネントは一般に、ハードウェアデバイス、デバイスドライバ、オペレーティングシステム自体を管理することに関連するタスク、およびアプリケーションプログラムに直接関連しない他のタスクを実行する。
【０００４】
ユーザモードで動作するアプリケーションプログラムまたは他のコンポーネントが、カーネルモードで動作するコンポーネントを呼び出すアクションを実行する場合、「コンテキストスイッチ」が生じる。同様に、プロセッサがあるプロセスの実行を中断し、別のプロセスの実行を開始する場合も、コンテキストスイッチが生じ、これはインタープロセス（ｉｎｔｅｒ−ｐｒｏｃｅｓｓ）と称されることがある。さまざまなオペレーティングシステムにおいて、プロセスは１つまたは複数のスレッドのコンテナであり、そのためインタープロセスのコンテキストスイッチは、インタースレッドのコンテキストスイッチを伴うことがある。コンテキストスイッチは、プロセッサの状態を保存し復元することを伴い、一般に多くの計算を必要とする。したがってコンテキストスイッチによって、オペレーティングシステムおよびアプリケーションプログラムのパフォーマンスが低下することがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
オペレーティングシステムは、ユーザモードで動作するサブシステムを利用してアプリケーションプログラムに機能性を提供することができる。サブシステムは、オペレーティングシステムのアプリケーションプログラムインターフェース（「ＡＰＩ」）を実装するオペレーティングシステムコンポーネントである。ユーザモードサブシステムは、カーネルモードで動作するカーネルコンポーネントの関数を呼び出すことができるプロセスである。カーネルコンポーネントは、カーネルモードで動作し、中核となるオペレーティングシステム機能を提供するオペレーティングシステムコンポーネントである。したがってアプリケーションが、オペレーティングシステムのＡＰＩのメソッドをコールする際、そのメソッドを実施するサブシステムは、カーネルモードで動作するカーネルコンポーネントの関数を呼び出すことができる。結果として、いくつかのコンテキストスイッチが生じる場合があるであろう。たとえば、アプリケーションがオペレーティングシステムのＡＰＩのメソッドを呼び出す際に、インタープロセスのコンテキストスイッチが生じ、そのオペレーティングシステムのＡＰＩのメソッドがカーネルのメソッドを呼び出す際に、カーネルモードへの１つまたは複数のコンテキストスイッチが生じることがあるであろう。これらのコンテキストスイッチによって、オペレーティングシステムのパフォーマンスが悪くなる場合があるであろう。さらにユーザモードコンポーネントは、カーネルモードコンポーネントの関数を呼び出す際、インタープロセス通信を送ることができる。インタープロセス通信は、オペレーティングシステムのパフォーマンスをさらに低下させる処理オーバーヘッドを伴う場合がある。したがってコンテキストスイッチおよびインタープロセス通信を少なくすることによって、オペレーティングシステムのパフォーマンスを改善することができれば、非常に望ましいであろう。
【課題を解決するための手段】
【０００６】
オペレーティングシステムのパフォーマンスを改善するための技術を提供する。さまざまな実施形態において、オペレーティングシステムのサブシステムは、ユーザモードコンポーネントとして動作する代わりに、カーネルモードドライバなど、カーネルモードコンポーネントとして動作する。カーネルモードで動作することによって、サブシステムは、カーネルの機能を呼び出す際のコンテキストスイッチを回避する。カーネルモードで動作するサブシステムからカーネルコンポーネントへの関数コールは、カーネルモードにあるであろうため、ユーザモードからカーネルモードへのコンテキストスイッチは少なくなる。このサブシステムは、ユーザモードで動作するプロセスではないため、インタープロセスおよびインタースレッドのコンテキストスイッチは回避される。コンテキストスイッチを回避することによって、パフォーマンスを改善することができる。一例として、一般にユーザモードサブシステムとして動作する「ＰＯＳＩＸ」（ｐｏｒｔａｂｌｅ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）を実装するサブシステムは、カーネルモードドライバとして実装して、ＰＯＳＩＸサブシステム、およびそれに依存するアプリケーションのパフォーマンスを改善することができる。
【発明を実施するための最良の形態】
【０００７】
ここで図面を参照すると、図１は、この技術またはファシリティを実装することができる適切なコンピューティングシステム環境１１０または動作環境の一例を示している。このコンピューティングシステム環境１１０は適切なコンピューティング環境の一例にすぎず、このファシリティの使用または機能の範囲について何らかの限定を示唆することを意図するものではない。またコンピューティングシステム環境１１０が、この例示的な動作環境１１０中に示されたコンポーネントの任意の１つまたは組合せに関して何らかの依存性または必要性を有するものとも解釈すべきではない。
【０００８】
このファシリティは、数多くの他の汎用または専用のコンピューティングシステム環境または構成と共に動作する。このファシリティと共に使用するのに適する可能性のある周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらには限定されない。
【０００９】
このファシリティは、コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストにおいて説明することができる。一般にプログラムモジュールは、特定のタスクを実行したり特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。このファシリティは、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルおよび／またはリモートのコンピュータストレージメディアに配置することができる。
【００１０】
図１を参照すると、このファシリティを実装するための例示的なシステムは、コンピュータ１１１の形態の汎用コンピューティングデバイスを含む。コンピュータ１１１のコンポーネントは、処理ユニット１２０、システムメモリ１３０、およびシステムメモリ１３０を含むさまざまなシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１を含むことができるが、これらには限定されない。システムバス１２１は、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のいずれにすることもできる。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られているＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００１１】
コンピュータ１１１は通常、さまざまなコンピュータ可読メディアを含む。コンピュータ可読メディアは、コンピュータ１１１によってアクセスできる任意の利用可能なメディアとすることができ、揮発性および不揮発性メディア、ならびにリムーバブルおよび非リムーバブルメディアの両方を含む。限定ではなく例として、コンピュータ可読メディアは、コンピュータストレージメディアおよび通信メディアを備えることができる。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報の格納のための任意の方法または技術で実装された揮発性および不揮発性メディア、ならびにリムーバブルメディアおよび非リムーバブルメディアを含む。コンピュータストレージメディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは希望の情報を保存するために使用でき、コンピュータ１１１によってアクセスできる任意の他の媒体を含むが、これらには限定されない。通信メディアは通常、搬送波や他のトランスポートメカニズムなどの変調されたデータ信号中にコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報伝達メディアを含む。「変調されたデータ信号」という用語は、情報を信号中に符号化するようにその特性の１つまたは複数を設定または変更した信号を意味する。限定ではなく例として、通信メディアは、有線ネットワークや直接配線接続などの有線メディアと、音響、ＲＦ、赤外線、その他の無線メディアなどの無線メディアとを含む。また上記のいずれの組合せも、コンピュータ可読メディアの範囲内に含まれるべきである。
【００１２】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形態のコンピュータストレージメディアを含む。基本入出力システム（ＢＩＯＳ）１３３は、起動中などにコンピュータ１１１内の要素間で情報の伝達を助ける基本ルーチンを含み、通常はＲＯＭ１３１に格納されている。ＲＡＭ１３２は通常、処理ユニット１２０によってすぐにアクセスできるか、および／または現在操作されているデータおよび／またはプログラムモジュールを収容している。限定ではなく例として、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００１３】
またコンピュータ１１１は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージメディアを含むこともある。例示を目的としてのみ、図１は、非リムーバブル不揮発性の磁気メディアとの間で読み取りや書き込みを行うハードディスクドライブ１４１と、リムーバブル不揮発性の磁気ディスク１５２との間で読み取りや書き込みを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭや他の光メディアなどのリムーバブル不揮発性の光ディスク１５６との間で読み取りや書き込みを行う光ディスクドライブ１５５とを示している。例示的な動作環境で使用できる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージメディアとしては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらには限定されない。ハードディスクドライブ１４１は通常、インターフェース１４０などの非リムーバブルメモリインターフェースを介してシステムバス１２１に接続されており、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続されている。
【００１４】
図１に示した上述のドライブおよびそれらに関連するコンピュータストレージメディアは、コンピュータ１１１用のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を提供する。図１において、たとえばハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも異なっていてもよいことに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７が最低でも異なるコピーであることを示すために、異なる番号が付与されている。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２、および通常はマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介してコンピュータ１１１にコマンドおよび情報を入力することができる。図１に示されていない他の入力デバイスは、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバス１２１に結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。またモニタ１９１や他のタイプのディスプレイデバイスをビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続することもできる。モニタ１９１は、タッチスクリーンパネルなどと一体化することもできる。モニタ１９１および／またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータにおけるように、コンピュータ１１１が組み込まれている筐体に物理的に結合できることに留意されたい。さらに、コンピュータ１１１などのコンピューティングデバイスは、スピーカ１９５およびプリンタ１９６などの他の周辺出力デバイスを含むこともでき、これらは周辺出力インターフェース１９４などを介して接続することができる。
【００１５】
コンピュータ１１１は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図１にはメモリストレージデバイス１８１しか示されていないが、通常はコンピュータ１１１に関連して上述した要素の多くまたはすべてを含む。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。たとえばこのファシリティでは、コンピュータ１１１は、データがそこから移行されるマシンを備えることができ、リモートコンピュータ１８０は、移行先のマシンを備えることができる。しかし移行元および移行先のマシンは、ネットワークまたは他の任意の手段によって接続される必要はなく、代わりに移行元のプラットフォームによる書き込みおよび１つまたは複数の移行先のプラットフォームによる読み取りが可能な任意のメディアを介してデータを移行できることに留意されたい。
【００１６】
ＬＡＮネットワーキング環境において使用する場合、コンピュータ１１１は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用する場合、コンピュータ１１１は通常、モデム１７２、またはインターネットなどのＷＡＮ１７３上で通信を確立するための他の手段を含む。モデム１７２は内蔵または外付けとすることができ、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１１に関連して示されているプログラムモジュール、またはその一部をリモートメモリストレージデバイス１８１に格納することができる。図１は、例として限定ではなくリモートアプリケーションプログラム１８５をメモリストレージデバイス１８１上に存在するものとして示している。図示したネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用できることが理解できるであろう。
【００１７】
さまざまな機能およびデータが、特定の方法で構成される特定のコンピュータシステム上に存在するものとして図１に示されているが、このような機能およびデータは、さまざまな構成のコンピュータシステムにわたってさまざまな他の方法で分散できることを当業者は理解するであろう。上述のように構成されたコンピュータシステムが、ファシリティのオペレーションをサポートするために、通常は使用されるが、当業者はファシリティがさまざまなコンポーネントを有し、さまざまなタイプおよび構成のデバイスを使用して実装できることを理解するであろう。
【００１８】
この技術については、１つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、特定のタスクを実行したり特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、さまざまな実施形態において希望に応じて組み合わせたり、分散させたりすることができる。
【００１９】
図２は、オペレーティングシステムのコンポーネントを示すブロック図である。オペレーティングシステム２００は、ユーザモード２０２およびカーネルモード２０４で動作する複数のコンポーネントを備える。
【００２０】
ユーザモードで動作するコンポーネントは、たとえばセキュリティサブシステム２０６、ログオンプロセス２０８、ＷＩＮＤＯＷＳ（登録商標）サブシステム２１０、ＷＩＮＤＯＷＳ（登録商標）アプリケーション２１２、ＰＯＳＩＸサブシステム２１４、およびＰＯＳＩＸアプリケーション２１６を含む。
【００２１】
セキュリティサブシステムは、アプリケーションおよびオペレーティングシステムにセキュリティサービスを提供する。一例として、セキュリティサブシステムは、ユーザがオペレーティングシステムにログオンできるようにするログオンプロセス２０８および機能を提供することができる。
【００２２】
ＷＩＮＤＯＷＳ（登録商標）サブシステムは、ＷＩＮＤＯＷＳ（登録商標）アプリケーションなど、アプリケーションにＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）の機能を提供することができる。ＷＩＮＤＯＷＳ（登録商標）サブシステムは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムに関連するアプリケーションプログラムインターフェースを実装することができる。一例として、ＷＩＮＤＯＷＳ（登録商標）サブシステムは、ＷＩＮＤＯＷＳ（登録商標）アプリケーションによってなされたＷＩＮＤＯＷＳ（登録商標）サブシステムのＡＰＩに対する要求を受け取り、その要求に関連するいくつかの活動を実行し、オペレーティングシステムカーネルをコールして、残りの活動を実行することができる。
【００２３】
またオペレーティングシステムは、ＰＯＳＩＸサブシステム２１４など、さらなるサブシステムを有することもできる。ＰＯＳＩＸサブシステムは、ＰＯＳＩＸの仕様に準拠するオペレーティングシステムに関連するＡＰＩを実装することができる。ＰＯＳＩＸオペレーティングシステムと通信してタスクを実行するために、このＡＰＩは、ＰＯＳＩＸアプリケーション２１６によって使用することができる。
【００２４】
図２に示されているように、オペレーティングシステムサブシステムは一般にユーザモードで実行される。
【００２５】
オペレーティングシステムは、複数のサブシステムを備える場合、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）およびＰＯＳＩＸなど、複数の多様なオペレーティングシステムを提供することができる。したがって、これらの多様なオペレーティングシステム用に設計されたアプリケーションは、複数のサブシステムを備えたオペレーティングシステム上で機能することができる。
【００２６】
サブシステムは、カーネルモード２０４で動作するエグゼクティブサービスコンポーネント２１８によって提供されるサービスを利用することができる。エグゼクティブサービスコンポーネントは、ドライバ２２０およびカーネル２２４など、さらなるコンポーネントを備えることができる。これらのドライバは、システムのさまざまなソフトウェアおよびハードウェアコンポーネント間で直接の通信を提供することができる。一例として、ドライバは、ソフトウェアコンポーネントとネットワークインターフェースカードとの間で通信を提供することができる。カーネルは、中核となるオペレーティングシステム機能、およびプロセッサとの通信を提供することができる。一例として、カーネルは、プログラムレジスタをロードし、スレッドの実行を開始するようプロセッサに指示することによって、スレッドの実行をスケジュールすることができる。またハードウェアアブストラクション層２２２は、カーネルモードで動作して、ハードウェアデバイスに関連するオペレーティングシステムコンポーネントおよびインターフェースを提供することもできる。ハードウェアアブストラクション層は、オペレーティングシステムのソフトウェアコンポーネントが、特定のベンダのハードウェアデバイスに固有の機能を提供しなくてもよいようにすることができる。
【００２７】
アプリケーションは、オペレーティングシステムの一部として示されているが、図１に示されているように、オペレーティングシステムによって提供されるさまざまなファシリティを利用することによって実行することもできる。
【００２８】
図３〜５は、本願の技術のさまざまな実施形態を示している。これらの実施形態では、サブシステムは、図２に示したサブシステムとまったく同じではないにしても類似の機能を提供する。しかしこれらの実施形態は、さまざまなコンテキストスイッチを少なくすることによって、サブシステムを利用するアプリケーションのパフォーマンスを改善することができる。  
【００２９】
図３は、一実施形態におけるカーネルモードで動作するサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。さまざまな実施形態において、ＰＯＳＩＸサブシステムは、エグゼクティブサービスの一部になることなく、カーネルモードで動作することができる。しかしＰＯＳＩＸサブシステムは、エグゼクティブサービスのコンポーネントによって提供されるサービスを利用するであろう。一例として、ＰＯＳＩＸサブシステムは、カーネルによって提供されるサービスを利用するであろう。
【００３０】
オペレーティングシステム３００は、図２に関連して上述したオペレーティングシステム２００に類似している。しかし図３のオペレーティングシステムと図２のそれとの顕著な違いは、ＰＯＳＩＸサブシステムが、ユーザモードの代わりにカーネルモードで動作することである。  
【００３１】
カーネルモードで動作することによって、ＰＯＳＩＸサブシステムは、ユーザモードで動作するときよりも優れたパフォーマンスを提供することができる。これは、カーネルなど、エグゼクティブサービスのさまざまなコンポーネントに対するＰＯＳＩＸサブシステムコールが、ユーザモードからカーネルモードへのコンテキストスイッチを必要としないためである。したがって、ＰＯＳＩＸアプリケーションからＰＯＳＩＸサブシステムへのコールは、ユーザモードからカーネルモードへのコンテキストスイッチを伴うであろうが、カーネルによって提供される機能など、エグゼクティブサービスの機能をサブシステムがコールする際にユーザモードからカーネルモードへの（または逆の）さらなるコンテキストスイッチが回避される。さらに、アプリケーションからサブシステムへのインタープロセスまたはインタースレッドのコンテキストスイッチも回避されるであろう。  
【００３２】
図４は、一実施形態におけるエグゼクティブサービスコンポーネントの一コンポーネントとしてのサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。例示した実施形態では、ＰＯＳＩＸサブシステムは、エグゼクティブサービスの一コンポーネントである。エグゼクティブサービスの一コンポーネントとして、ＰＯＳＩＸサブシステムは、エグゼクティブサービスの他のコンポーネントとより密接に統合を有することができ、したがって図３に関連して上述した実施形態よりもいくつかの点でよりよく機能することができる。  
【００３３】
カーネルモードドライバは、オペレーティングシステムの一部として扱われ、オペレーティングシステムのアドレススペースにアクセスすることができる。  
【００３４】
図５は、一実施形態におけるカーネルモードドライバとしてのサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。カーネルモードドライバとして実装される場合、ＰＯＳＩＸサブシステムは、エグゼクティブサービス、ハードウェア、他のドライバ、およびエグゼクティブサービスの他の側面により優れたアクセスを有することができる。したがってこのＰＯＳＩＸサブシステムは、図３および４に関連して上述したサブシステムよりもいくつかの点で優れたパフォーマンスを提供することができる。さらに、オペレーティングシステムにドライバを追加することは、オペレーティングシステム自体への修正を伴わない場合もある。結果として、この実施形態は全体的なエンジニアリングの労力の低下を伴うことができる。  
【００３５】
このように、図３〜５に示した実施形態では、アプリケーションが、カーネルモードで動作するサブシステムによって実施されるオペレーティングシステムコールを行う際に必要となるインタープロセス、インタースレッド、またはユーザモードからカーネルモードへのコンテキストスイッチが少なくなるので、オペレーティングシステムのパフォーマンスを改善することができる。  
【００３６】
図６は、カーネルモードで動作するサブシステムによって実行されるルーチンを示す流れ図である。ルーチンはブロック６０２で始まる。
【００３７】
ブロック６０４では、ルーチンがオペレーティングシステムの要求を受け取る。このルーチンは、アプリケーションプログラムや他のオペレーティングシステムコンポーネントなど、さまざまなコンポーネントからオペレーティングシステムの要求を受け取ることができる。  
【００３８】
ブロック６０６では、ルーチンが、その要求がカーネルへのコールを必要とするかどうかを判断する。オペレーティングシステムの要求は、たとえばサブシステムが完全にそれ自体で、またはオペレーティングシステムの他のオブジェクトと連携してその要求を実行できる場合、カーネルへのコールを必要としないことがある。しかし多くの要求は、カーネルへの１つまたは複数のコールを必要とすることがある。一例として、インタースレッド通信は、カーネルを使用することによって実行することができる。その要求がカーネルへのコールを必要とする場合、ルーチンはブロック６０８で継続する。そうでない場合、ルーチンはブロック６１０で継続する。  
【００３９】
ブロック６０８では、ルーチンがカーネルをコールする。このルーチンは、レジスタなど、そのコールしに関連する情報を提供することができる。  
【００４０】
ブロック６１０において、ルーチンがそのコール元に戻る。
【００４１】
上記より、本明細書では例示の目的で本発明の具体的な実施形態について説明したが、本発明の趣旨および範囲から逸脱することなくさまざまな修正を行い得ることが理解されるであろう。したがって、本発明は、添付の特許請求の範囲によるもの以外で限定されない。
【図面の簡単な説明】
【００４２】
【図１】この技術を実装することができる適切なコンピューティングシステム環境の一例を示すブロック図である。
【図２】オペレーティングシステムのコンポーネントを示すブロック図である。
【図３】一実施形態におけるカーネルモードで動作するサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。
【図４】一実施形態におけるエグゼクティブサービスコンポーネントの一コンポーネントとしてのサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。
【図５】一実施形態におけるカーネルモードドライバとしてのサブシステムを有するオペレーティングシステムのコンポーネントを示すブロック図である。
【図６】カーネルモードで動作するサブシステムによって実行されるルーチンを示す流れ図である。
【符号の説明】
【００４３】
１１０  コンピューティングシステム環境
１１１  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  非リムーバブル不揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバブル不揮発性メモリインターフェース
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光ディスクドライブ
１５６  光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  マイクロフォン
１６４  タブレット
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８１  メモリストレージデバイス
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９４  周辺出力インターフェース
１９５  スピーカ
１９６  プリンタ
２００  オペレーティングシステム
２０２  ユーザモード
２０４  カーネルモード
２０６  セキュリティサブシステム
２０８  ログオンプロセス
２１０  Ｗｉｎｄｏｗｓ（登録商標）サブシステム
２１２  Ｗｉｎｄｏｗｓ（登録商標）アプリケーション
２１４  ＰＯＳＩＸサブシステム
２１６  ＰＯＳＩＸアプリケーション
２１８  エグゼクティブサービス
２２０  ドライバ
２２２  ハードウェアアブストラクション層
２２４  カーネル
３００  オペレーティングシステム
３１４  ＰＯＳＩＸサブシステム
４００  オペレーティングシステム
４１４  ＰＯＳＩＸサブシステム
５００  オペレーティングシステム
５１４  ＰＯＳＩＸサブシステム
【図１】
2006164266.tif 000003
【図２】
2006164266.tif 000004
【図３】
2006164266.tif 000005
【図４】
2006164266.tif 000006
【図５】
2006164266.tif 000007
【図６】
2006164266.tif 000008