JP4721627B2 - プロセスモードが独立したドライバモデル - Google Patents
プロセスモードが独立したドライバモデル Download PDFInfo
- Publication number
- JP4721627B2 JP4721627B2 JP2003183592A JP2003183592A JP4721627B2 JP 4721627 B2 JP4721627 B2 JP 4721627B2 JP 2003183592 A JP2003183592 A JP 2003183592A JP 2003183592 A JP2003183592 A JP 2003183592A JP 4721627 B2 JP4721627 B2 JP 4721627B2
- Authority
- JP
- Japan
- Prior art keywords
- kernel mode
- user mode
- operations
- implementation
- adapter
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
Description
【発明の属する技術分野】
本発明は、コンピュータハードウエアに対するドライバソフトウエアの分野に関するものである。詳しくは、本発明は、ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である、1つ、またはそれ以上の動作に関する一回の実施を可能とする方法、システム、およびコンピュータプログラム製品に関するものである。
【0002】
【従来の技術】
コンピュータハードウエアのパフォーマンスが増加すると共に、コンピュータソフトウエアの動作は、全体のシステムパフォーマンスにおいて、より重要な因子になっている。ハードウエアデバイスと通信するハードウエアアダプタと相互に作用している効率的なコンピュータソフトウエアは、交換される傾向にある情報の頻度と量が与えられ、特に重要である。一般的なある通信障害は、種々のソフトウエア層、およびアプリケーションとハードウエアとの間でしばしば起こるプロセスモード間の推移に対応しているものに関するものである。
【0003】
多くのオペレーションシステムは、少なくとも2つのプロセスモードを提供する。それは、(1)比較的信頼されず、それゆえに制限されたユーザーモード、および(2)比較的信頼され、それゆえにあまり制限されないカーネルモード、である。一般的に、アプリケーションプロセスがユーザーモード内で作動するのは、それらプロセスが分離し、およびお互いのリソースに干渉できないからである。システムコールを行うとき、例外や失敗が発生するとき、割り込みが起こるとき等に、ユーザープロセスは、カーネルモードに切り替えする。カーネルモードで作動するプロセスは、特権が与えられ、および(全ての利用可能なメモリのような)全てのコンピュータリソースにアクセスを有し、ユーザーモードプロセスに適用するような制限は無い。オペレーティングシステムのカーネルは、コンピュータリソースへの門番として作動するので、リソースへの直接のアクセスを、一般的にカーネルモードプロセスに制限する。ユーザーモードプロセスとカーネルモードプロセスとの間の区別を、また、コンピュータハードウエアによって支援しても良い。例えば、多くのマイクロプロセッサは、ユーザーモードプロセスおよびカーネルモードプロセス間の区別を支援するためのプロセシングモードを有する。
【0004】
あるリソースへのアクセスをカーネルモードプロセスに制限しているので、ユーザーモードプロセスは、アクセスを得るためにカーネルモードプロセスへ推移、または切り替えしなければならない。アクセスに続いて、そのプロセスは、さらなる実行のためにユーザーモードへ戻る。しかしながら、プロセスモードを切り替えすることにより、パフォーマンスに関して重大な影響を与えることができる。それゆえに、プロセスモードを変更することに関係したパフォーマンス低下を軽減するための努力において、幾つかのハードウエアアダプタは、あるパラメータ内のセキュリティ測定の実施を支援し、そのためユーザーモードアプリケーションは、カーネルモードへの推移をすること無しに、ハードウエアに直接アクセスしうる。したがって、幾つかのソフトウエアドライバは、ある動作に対してカーネルモードを迂回する。
【0005】
ユーザーモードプロセスがハードウエアリソースへ直接アクセス可能であるにも関わらず、コンピュータシステムの全体のセキュリティは、示されたセキュリティパラメータ内でアクセスを制限することによって、要領のままである。ハードウエアアダプタに対して、これらのセキュリティパラメータを、カーネルモードプロセスを使用するように設定する。本質的に、セキュリティパラメータは、特定のプロセスによりある動作のための直接のアクセスが可能になる、ということを示す。ハードウエアアダプタは、他のプロセスによる同様なアクセス試行を拒絶し、および、そのセキュリティパラメータによって認められた許可の範囲を超えているプロセスによるアクセス試行を拒絶するであろう。
【0006】
【発明が解決しようとする課題】
ある動作を、ユーザーモードとカーネルモードの両方に対して実施しても良い。しかしながら、各モードにおいてその同じ動作を実施することは、ソフトウエア開発プロセスにおいて、非効率性をもたらす。例えば、メモリの割り付けを考えると良い。各ケースにおいてメモリ領域が割り付けられるが、カーネルモードにおけるメモリ割り付けは、ユーザーモードでのメモリ割り付けよりも異なった条件を持っている。例えば、カーネルモードメモリ割り付けは、ハードウエア相互作用を促進するためのある配列状態を保証しうる一方、その配列状態は、ユーザーモードメモリ割り付けに対して不適切でありうる。しかしながら、ハードウエアドライバの観点から、必要な全てはメモリの領域である。結果として、ハードウエアアダプタにアクセスするための一回の動作は、一般的に別個のユーザーモードおよびカーネルモード実施を有する。従って、ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である一回の実施の動作を可能にする方法、システム、およびコンピュータプログラム製品が望まれている。
【0007】
【課題を解決するための手段】
本発明は、ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である一回の実施動作を可能にする方法、システム、およびプログラム製品に関するものである。ユーザーモード処理、およびカーネルモード処理に共通である少なくとも1つの動作に対して、共通のインターフェイスを定義する。少なくとも1つの動作のカーネルモード、およびユーザーモード実施に対応するものを提供する。与えられたプロセスに対して、インターフェイスへのコールをカーネルモード実施へマッピングし、それは、その与えられたプロセスがカーネルモードプロセスである場合、および、その与えられたプロセスがユーザーモードプロセスであるならばユーザーモード実施である場合である。そのマッピングを実行中で実施しても良く、または、静的であっても良い。
【0008】
共通の動作は、カーネルモードへ切り替えすること無しで、ハードウエアアダプタへユーザーモードプロセスの直接のアクセスを提供しても良い。カーネルモードプロセスに固有である1つ、または2つ以上の動作に対するカーネルモード実施を、また、提供しても良い。例えば、ハードウエアアダプタを通しての通信の開始および終了に対する動作はカーネルモード処理に固有でありうる一方、そのアダプタを通しての情報の送受信に対する動作は、ユーザーモード処理、およびカーネルモード処理の両方に共通でありうる。詳しくは、カーネルプロセシングに固有な動作のうちの1つは、実施するためのハードウエアアダプタに対するセキュリティパラメータを識別しても良い。
【0009】
本発明の追加的な特徴と利点を、後に続く記述で説明し、および、一部はその記述から明らかになるであろうし、または、本発明の実施によって、明らかになりうる。本発明の特徴および利点を、特に特許請求の範囲で示される手段および組合せによって、認識し、および得ても良い。本発明に関するこれらの特徴、および他の特徴は、次に続く記述と特許請求の範囲からより十分に明らかになりうるであろうし、また、以下に説明するように、本発明の実施によって明らかになりうる。
【0010】
【発明の実施の形態】
上記のおよび他の利点、ならびに本発明の特徴を得ることができる方法を記述するために、上記で簡潔に記述された本発明のより特定の記述を、添付した図面に図示されている詳細な実施形態を参照することによって与えるだろう。これらの図面は、本発明の一般的な実施形態のみ描写し、それゆえにその範囲を限定するようには考えられない、という理解のもと、本発明を、添付している図面の使用を通して、追加的な特性、および詳細で記述し、また説明するであろう。
【0011】
本発明は、ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である動作に関する一回の実施を可能とする方法、システム、コンピュータ製品に関している。その動作に関するカーネルモード、およびユーザーモード実施への共通のインターフェイスを提供する。コーリングプロセスがユーザーモードプロセスである場合、そのコールをユーザーモード実施へマッピングし、および、コーリングプロセスがカーネルモードプロセスである場合、そのコールをカーネルモード実施へマッピングする。本発明の幾つかの実施形態は、図4に関して以下でより詳細に論じられる種々のコンピュータハードウエアを含む、特別な目的のコンピュータのうちの1つ、または2つ以上、および/または、汎用コンピュータのうちの1つ、または2つ以上を備えていても良い。
【0012】
図1は、本発明に従って、共通のユーザーモード、およびカーネルモード動作の一回の実施を可能にするハードウエアドライバモデルの高水準ブロック図を示す。アプリケーション110は、ユーザーモードインターフェイス120を通して、アダプタ150にアクセスする。ある動作をカーネルモード実施140へマッピングする一方で、他のオペレーションをユーザーモード実施130へマッピングする。ユーザーモード実施130は、カーネルモードへ切り替えすること無しで、アダプタ150へ直接のアクセスを提供する、ということに注意すべきである。従って、アプリケーション110は、ユーザーモード実施130を通して、アダプタ150へアクセスすることができ、カーネルモード実施140に対して必要であろう時間より非常に短い時間にする。
【0013】
ユーザーモード実施130、およびカーネルモード実施140の両方で実行される動作に対応するものを持つことは、少なくとも2つの理由で望ましい。第1に、カーネルモード実施140は、アダプタ150に対して可能な全ての動作を含むため、ユーザーモードインターフェイス120を持たないアプリケーションがアダプタ150と相互に作用できるようにする。カーネルモードからユーザーモードへの変更(および再び戻ること)のオーバーヘッドを与えられると、ユーザーモード実施130(ユーザーモードで実施されることができる動作に対する)を呼び出しているカーネルモード実施140は、一般的に結果として最適なパフォーマンス以下になるであろう。特に、情報の送受信のような、頻繁に起こる傾向にある動作をユーザーモード実施130が実施するときからそうなる。(カーネルモード実施140に達するためのアプリケーションに対して、ユーザーモードからカーネルモードへのある変更はすでに行い、他の変更はカーネルモードからユーザーモードへの戻ることに続くであろう、ということにまた注意すべきである。)
【0014】
第2に、カーネルモード実施140は、一般に、カーネルモードに固有である動作を含む。しばしばこれらの動作によって、アダプタ150からの情報の送受信に対するより基礎的な動作が使用される。しかしながら、上記したように、情報の送受信のような頻繁に起こる動作は、ユーザーモードからカーネルモードへプロセス推移を回避することのパフォーマンス利点を達成するためにユーザーモード実施130に含まれるべき有望な候補である。上述した状況に似ているが、ユーザーモード実施130にアクセスすることにおいてカーネルモードからユーザーモードへ切り替えすること、およびカーネルモードへ戻ることのオーバーヘッドは、結果的に最適なパフォーマンスにならない。
【0015】
ユーザーモード処理、およびカーネルモード処理における違いにより、与えられた動作のユーザーモード実施は、カーネルモード実施と異なる傾向にある。伝統的に、ある動作の各ユーザーモード実施130は、その動作のカーネルモード実施140に対応するものと同じ機能性を提供するが、ユーザーモード処理に適している。しかしながら、本発明に従って、および図2A〜2Cに図示されたハードウエアドライバモデルの例に関してより詳細に記述されるように、ユーザーモード実施130およびカーネルモード実施140は、共通のインターフェイスを共有している。(図1において、この共通のインターフェイスは、ユーザーモード実施130およびカーネルモード実施140の一部であり、そして別々に示されていない。)従って、同じソースコードを、カーネルモード通信動作およびユーザーモード通信動作に対して書いても良い。同じソースコードの使用は(例えば、共通のソースから得られる静的ライブラリ)、書かれ、およびテストされる必要があるプログラムコードがより少ないので、開発時間、テスト時間、プログラミングエラーを減少させる重要な利点がある。その共通のインターフェイスは、どのようにしてソフトウエアが設計され、その共通のインターフェイスを通して利用できるルーチンに基づかれるべきか、という意義のあるガイダンスを持った開発者をまた提供しうる。
【0016】
もちろん、幾つかの動作は、カーネルモード実施140に固有である。例えば、カーネルは、セキュリティを実施することに責任を持っているので、アダプタ150へのアクセスの開始および終了は、カーネルモード実施140を通して起こる。一度、カーネルモード実施140(アプリケーション110の指示の下)が、適切なセキュリティパラメータをアダプタ150へ提供すると、アダプタ150は、アクセスプロセスがカーネルモード実施140を通して適切に認定されていることを検証するようなときに、それがアクセスされるとき、対応するセキュリティチェックを実行する。
【0017】
図2A〜2Cは、本発明に従って、共通のユーザーモード、およびカーネルモード動作の一回の実施を可能にするハードウエアドライバモデルの1例を図示している。InfiniBandアプリケーション210Aは、ユーザーモードライブラリ230Aを通して、およびカーネルモードミニポートドライバ240Aを通して、ホストチャネルアダプタ(“HCAアダプタ”)280Aにアクセスする。ユーザーモードライブラリ230Aを通しての(カーネルモードミニポートドライバ240Aと対照的に)HCAアダプタ280Aへのあるアクセスは、実際的である。それは、InfiniBandが、あるセキュリティチェック、およびそのアダプタへの他の処理をオフロードするハードウエアアーキテクチャの1例を表しているからである。アクセスの開始および終了を、適切なセキュリティレベルを想定するためのカーネルモード動作を通して、制御する。しかしながら、開始後、データの送受信に関するような頻繁な通信動作に対するセキュリティを、非常に速いユーザーモードアクセスを可能にするHCAハードウエアで実施する。例えば、図2Aに関して以下に詳細が記述されているように、カーネルモードミニポートドライバ240Aは、通信キューの作成および破壊に対して責任を持っている一方、ユーザーモードライブラリ230Aは、HCAアダプタ280Aでの通信キューへユーザーモードデータの転送を可能にする。
【0018】
InfiniBandアプリケーション210Aは、ユーザーモードInfiniBandライブラリ220Aを呼び出し、そのユーザーモードInfiniBandライブラリ220Aは、レジストリデータベースに保持され示された配置情報によってユーザーモードライブラリ230Aについて知っている。ある意味、ユーザーモードライブラリ230Aを、ユーザーモードInfiniBandライブラリ220Aの拡張として見なしても良い。ユーザーモードライブラリ230Aは、それが支援するルーチン用の良く知られたアプリケーションプログラムインターフェイス(“API”)(ディスパッチテーブルの形式で)を書き出す。1つの実施形態において、ユーザーモードライブラリ230Aを、ダイナミックリンクライブラリ(“DLL”)として実施する。必ずしも要求されないが、InfiniBandの多くの利点は、ユーザーモードライブラリ230Aによって提供されるカーネルバイパスIOの特徴を通して、実現されることである。
【0019】
InfiniBandライブラリ220Aは、抽象化された一般のHCAデバイスインターフェイスを表す。ユーザーモードライブラリ230Aのベンダ固有ライブラリ232Aは、InfiniBandライブラリ220Aの抽象化をHCAアダプタ280Aのハードウエア固有の動作へマッピングする。その同じベンダ固有ライブラリは、以下でより詳細に記述するように、ミニポートドライバ240Aに関するベンダ固有ライブラリ242Aとして現れる。従って、ベンダ固有ライブラリ232A、およびベンダ固有ライブラリ242Aは、少なくともある程度は、プロセスモード独立(“PMI”)HCAIOアクセスライブラリを表す。
【0020】
ユーザーモードInfiniBandライブラリ220Aは、また、Hcaポート250Aおよびミニポートドライバ240Aを通してHCAアダプタ280Aにアクセスする。ベンダ固有ライブラリ242Aに加えて、ミニポートドライバ240Aも、また、カーネルモードアダプタ制御およびヘルパー機能244A、およびクラスエージェント246Aを備えている。Hcaポート250A、ミニポートドライバ240A、およびHCAアダプタ280Aとの間の関係に関する追加的な詳細は、図2Bに関して、以下で提供される。Hcaポート250Aは、また、他のカーネルモードクライアント270A(例えば、HcaポートクライアントAPIを使用するRNDISミニポート)からHCAアダプタ280Aへのアクセスを可能にする。そのHcaポート250Aは、サブネットマネージャ262A、接続マネージャ264A,およびパフォーマンスマネージャ266Aを含む、種々のクラスの管理サブシステムを開始する。
【0021】
次に図2Bに移ると、Hcaポート250Bは、抽象化された一般のHCAデバイスインターフェイスを提供する。ユーザーモードライブラリ230Aおよびベンダ固有ライブラリ232Aと類似している、ミニポートドライバ240Bおよびベンダ固有ライブラリ242Bは、Hcaポート250Bに関する抽象化をHCAアダプタ280Bのハードウエア固有の動作へマッピングする。上記されたように、その同じベンダ固有PMIライブラリは、ミニポートドライバ240Bのベンダ固有ライブラリ242B、およびユーザーモードライブラリ230Aのベンダ固有ライブラリ232Aとして現れる。(カーネル固有ルーチンを、カーネルアダプタ制御およびヘルパー機能244Bで実施する。)加えて、Hcaポート250Bは、ミニポートドライバのクラスエージェント246Bのためにシステム環境を用意する。
【0022】
Hcaポート250Bは、処理環境を確立し、その処理環境は、ミニポート240Bにメモリ割り付け、レジストリアクセス、およびポート/レジスタアクセスのような、オペレーティングシステムの機能性を提供する。オペレーティングシステムへの直接のコールはある設計の複雑さからミニポート開発者を保護する取り組みにおいて認められない場合があり、それによって、ベンダ固有ライブラリ232Aおよびベンダ固有ライブラリ242Bに対する単一のソースの目標を容易にしうる。Hcaポート250Bも、また、ミニポートドライバ240Bの要求を直列化するため、ミニポート開発者が直列化問題に取り組む必要がないようにする。メモリリソースを、オペレーティングシステムのページが付けられていないメモリプールから割り付ける。
【0023】
Hcaポート250BがInfiniBandクライアントにInfiniBandリソースの管理を提供することに注意する必要がある。対照的に、ミニポート240Bは、InfiniBandリソース管理を提供しないが、Hcaポート管理方法の拡張のようなさらなる行為を提供する。ミニポートドライバ240Bは、HCAアダプタ280Bのベンダ固有の動作の意味論からHcaポート250Bを保護する。ミニポート情報構造は、Hcaポート250Bにそのミニポート制御/ヘルパー、およびPMIIOアクセスコールバックルーチンを提供する。
【0024】
図2Cは、ユーザーモードInfiniBandライブラリ220C、およびベンダ固有ライブラリ232Cを持ったユーザーモードライブラリ230Cアダプタ、またはHcaポート250Cおよびアダプタヘルパー機能244Cを持ったミニポート240Cのどちらか一方を通して、HCAアダプタ280CにアクセスしているInfiniBandアプリケーション210Cを示す。アダプタ制御およびヘルパー機能は、2つの条件を処理する。第1は、ミニポートドライバを開始および停止すること、IOバスリソースの割り当ておよび管理(IO、メモリおよび割り込み)、プラグアンドプレイコマンドの処理、パワー管理コマンドの処理のような、一般的なドライバセンスにおけるHCAアダプタ280Cの一般の制御および処理である。
【0025】
第2の条件は、カーネルモードヘルパー機能の支援に関するものである。これらは、ミニポートによって実行される特権化された機能であり、(1)〜(7)に含まれる整然とした通信リソース管理を提供する。それは、(1)保護領域の作成と破壊、および必要なように、保護領域の割り当てのような、保護領域管理、(2)メモリ領域およびメモリウインドウの作成および破壊とを含む、翻訳テーブルおよび保護テーブルに関する作成および破壊、ならびにテーブル入力制御および操作のような、翻訳テーブルおよび保護テーブルの管理、(3)イベントキューの作成および破壊、ならびにイベントキューからのイベント処理のような、イベント要求管理、(4)完了キューの作成および破壊、ならびにHCAアダプタと完了キューを結びつけることおよび結び付けないことのような、完了キュー管理、(5)作業キューの作成と破壊、プログラム作成作業キューの属性に対する支援、およびHCAアダプタとの作業キューを結びつけることのような、作業キュー管理、(6)アドレスベクタテーブル(幾つかの場合において、これは、領域保護の管理機能性の部分であっても良い)の作成と破壊のような、アドレスベクタテーブル管理、(7)マルチキャストグループの作成と破壊のような、マルチキャスト支援、である。
【0026】
プロセスモード独立ライブラリ(例えば、ベンダ固有ライブラリ232Cおよびベンダ固有ライブラリ242B)は、ミニポート240Cおよびユーザーモードライブラリ230Cに静的にリンクされる。上記したように、ライブラリを作成することによって、HCAミニポートの共通コンポーネント、開発、メンテナンス、およびテストを減少しうる。一般に、PMIライブラリの機能は、それらのうち1つ、または2つ以上を通過したコンテキスト固有の拡張区域を有する。その拡張は、PMI作業区域であり、コンテキスト処理を確立するためのPMI機能によって使用される。そのコンテキスト処理に基づいて、対応するユーザーモード実施、またはカーネルモード実施を、共通に名付けられた機能に対して、呼び出し、またはマッピングする。
【0027】
PMIベンダ固有のライブラリは、3つの一般のタイプの機能性を提供する。それは、(1)ユーザーモード側の領域の保護/完了キュー/作業キュー(“PD/CQ/WQ”)の作成と破壊(2)ユーザーモードプロセスへ割り付けられたキューペアレジスタへIO要求を記録すること、および(3)結びつけ要求を通じたメモリウインドウ操作、である。PD/CQ/WQの作成と破壊の支援に対するPMIルーチンは、2つのステッププロセスで動作する。第1ステップは、カーネルモードにおけるミニポートによって、キューペアの割り付けに対して必要とされるリソースを獲得することである。第2ステップは、その結果をチェックし、および、要求が失敗である場合は、そのプロセスに割り付けられたリソースを解放する。IO要求は、割り付けられたキューペアを直接操作する。IO要求およびメモリウインドウ操作が課せられるアーキテクチャはごく少数である。なぜならば、高いバンド幅と短い待ち時間は、重要な要素になる傾向にあるからである。
【0028】
図3は、本発明に従って、共通のユーザーモード、およびカーネルモード動作の一回の実施を可能にする動作例を示す。これらの動作は、特定の順番で記述され、または主張されても良いが、本発明は、動作に関し、あらゆる特定の順番、またはコンビネーションに必ずしも制限されない。ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の一回の実施を可能にすることは、カーネルモード処理およびユーザーモード処理に共通である少なくとも1つの動作のための、共通のインターフェイスを規定すること(310)に関する行為、その名前に対応する少なくとも1つの動作のカーネルモード実施を提供すること(320)、その名前に対応する少なくとも1つの動作のユーザーモード実施を提供すること(330)、カーネルモード処理に固有である1つ、または2つ以上の動作のカーネルモード実施を提供すること(340)、与えられたプロセスがカーネルモードプロセスである場合は、カーネルモード実施へ、および、与えられたプロセスが、ユーザーモードプロセスである場合は、ユーザーモード実施へ、1つ、または2つ以上の共通インターフェイスコールをマッピングすること(350)を含む。
【0029】
本発明の実施形態は、以下でより詳細に記述するような、種々のコンピュータハードウエアを含む、1つ、または2つ以上の特別な目的のコンピュータ、および/または、1つ、または2つ以上の汎用コンピュータを備えても良い。本発明の範囲内の実施形態は、コンピュータ実行可能な命令、またはその上に格納されるデータ構造を維持しまたは持つためのコンピュータ実行可能媒体をまた備える。このようなコンピュータ実行可能媒体は、汎用、または特別の目的のコンピュータによってアクセスすることができる、あらゆる利用可能媒体でありうる。例えば、それは制限ではないのだが、このようなコンピュータ実行可能媒体は、RAM,ROM、EEPROM、CD−ROM、または他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、または、コンピュータ実行可能な命令またはデータ構造の形式における所望のプログラムコード手段を維持しまたは格納することに使用されることができ、汎用、または特別の目的のコンピュータによってアクセスされることができるあらゆる他の媒体を備えることができる。
【0030】
情報をネットワークまたはコンピュータへの他の通信接続(配線、無線、または配線か無線の組み合せのどちらか)に転送、または提供するとき、そのコンピュータは、コンピュータ実行可能媒体として接続を適切に見る。従って、あらゆるこのような接続を、コンピュータ可読媒体と適切に呼ぶ。上記の組み合せを、コンピュータ実行可能媒体の範囲内にまた含むべきである。例えば、コンピュータ実行可能な命令は、汎用コンピュータ、特別の目的のコンピュータ、またはある機能や機能のグループを実行するための特別の目的のプロセシングデバイスをもたらす構造とデータを備える。
【0031】
図4と次に続く議論を、本発明を実行しても良い適切なコンピューティング環境の、簡単で、一般的な記述を提供することを意図している。必要ではないが、本発明を、ネットワーク環境でコンピュータによって実行されているプログラムモジュールのような、コンピュータ実行可能な命令の一般のコンテキストで、記述するであろう。一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等、を含む。データ構造に関係したコンピュータ実行可能な命令、およびプログラムモジュールは、ここで開示された方法のステップを実行するためのプログラムコード手段の例を表す。このような実行可能な指示の、またはデータ構造に関連した特定のシーケンスは、動作の例を表し、このようなステップで記述された機能を実施することに対応している。
【0032】
当業者は、本発明を多くのタイプのコンピュータシステム配置を持つネットワークコンピューティング環境で実施しても良く、それらコンピュータシステム配置は、パーソナルコンピュータ、携帯型デバイス、マルチプロセッサシステム、マイクロプロセッサに基づいたまたはプログラム可能な家電製品、ネットワークPCs、ミニコンピュータ、メインフレームコンピュータ、および同種のものを含んでいる、ということを認識するだろう。本発明を、また、分散型コンピューティング環境で実施しても良く、そこでは、タスクを、ローカルおよびリモートプロセシングデバイスによって実行し、そのローカルおよびリモートプロセシングデバイスを、通信ネットワークを通してリンクする(配線によるリンク(hardwired link)によって、無線リンクによって、または、配線か無線リンクの組合せによって、のどちらか)。分散コンピューティング環境において、プログラムモジュールを、ローカルおよびリモートメモリストレージデバイスの両方に設置しても良い。
【0033】
図4に関して、本発明を実施するための好例となるシステムは、従来のコンピュータ420の形状の汎用コンピューティングデバイスを備え、処理装置421、システムメモリ422、処理装置421へのシステムメモリ422、および種々のシステムコンポーネントを接続するシステムバス423を含んでいる。システムバス423は、メモリバスまたはメモリコントローラ、周辺装置バス、および種々のバスアーキテクチャのあらゆるものにも使用できるローカルバスを含むあらゆるタイプのバス構造であっても良い。システムメモリは、読み出し専用メモリ(ROM)424、およびランダムアクセスメモリ(RAM)425を含む。起動中のような、コンピュータ420中の要素間の転送情報を助ける基礎的なルーチンを含む、基礎的な出入力システム(BIOS)426は、ROM424の中に格納されていても良い。
【0034】
コンピュータ420は、磁気ハードディスク439から読取り、またはその磁気ハードディスク439へ書き込むための磁気ハードディスクドライブ427、着脱可能な磁気ディスク429から読取り、またはその磁気ディスク429へ書き込むための磁気ディスクドライブ428、およびCD−ROMや他の光媒体のような、着脱可能な光ディスク431から読取り、またはその光ディスク431へ書きこむための光ディスクドライブ430をまた備えていても良い。磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光ディスクドライブ430を、それぞれ、ハードディスクドライブインターフェイス432、磁気ディスクドライブインターフェイス433、および光ディスクドライブインターフェイス434によって、システムバス423に接続する。そのドライブとそれらに関係しているコンピュータ読取可能媒体は、コンピュータ実行可能な命令、データ構造、プログラムモジュール、およびコンピュータ420に対するほかのデータの不揮発性のストレージを提供する。ここに記述された好例となる実施形態は、磁気ハードディスク439、着脱可能な磁気ディスク429、および着脱可能な光ディスク431を使用しているが、データを格納するための他のタイプのコンピュータ実行可能媒体を使用することができ、それらは、磁気カセット、カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROM、および同種のものを含んでいる。
【0035】
オペレーティングシステム435、1つ、または2つ以上のアプリケーションプログラム436、他のプログラムモジュール437、およびプログラムデータ438を含む、1つ、または2つ以上のプログラムモジュールを備えるプログラムコード手段を、ハードディスク439、磁気ディスク429、光ディスク431、ROM424、またはRAM425、オペレーティングシステム435上に格納しても良い。ユーザーは、キーボード440、ポインティングデバイス442、またはマイクロフォン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナ、または同種のもののような、他の入力デバイス(図示しない)を通して、コマンドおよび情報をコンピュータ420に入力しても良い。これらおよび他の入力デバイスを、しばしば、システムバス423に接続されるシリアルポートインターフェイス446を通して、処理装置421に接続する。代わりに、その入力デバイスを、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)のような、他のインターフェイスによって接続しても良い。モニタ447、または他のディスプレイデバイスを、また、ビデオアダプタ448のような、インターフェイスによってシステムバス423に接続する。モニタに加えて、パーソナルコンピュータは、スピーカおよびプリンタのような、一般的に、他の周辺機器出力デバイス(図示しない)を含んでいる。
【0036】
コンピュータ420は、リモートコンピュータ449a、または449bのような、1つ、または2つ以上のリモートコンピュータへの論理的な接続を使用しているネットワーク化された環境で動作しても良い。リモートコンピュータ449aおよび449bは、各々、他のコンピュータ、サーバ、ルータ、ネットワークPC,ピアデバイスまたは他の共通のネットワークノード、であっても良く、および、メモリストレージデバイス450aと450bおよびそれらに関係したアプリケーションプログラム436aと436bは、図4に図示されているが、一般的に、コンピュータ420に関して上述された多くのまたは全ての要素を備えても良い。図4に書かれた論理的接続は、ここで制限ではなく例として示されるローカルエリアネットワーク(LAN)451およびワイドエリアネットワーク(WAN)452を含んでいる。このようなネットワーク環境は、オフィス全体、または企業全体に渡るコンピュータネットワーク、イントラネット、およびインターネットにおいてありふれている。
【0037】
LANネットワーク環境の中で使用するとき、コンピュータ420を、ネットワークインターフェイスまたはアダプタ453を通して、ローカルネットワーク451に接続する。WANネットワーク環境の中で使用されるとき、コンピュータ420は、モデム454、無線リンク、またはインターネットのような、ワイドエリアネットワーク452と通信を確立するための他の手段を備えていても良い。内部または外部にあっても良いモデム454を、シリアルポートインターフェイス446によって、システムバス423に接続する。ネットワーク化された環境で、コンピュータ420に関して書かれたプログラムモジュール、またはその一部分を、リモートメモリストレージデバイスに格納しても良い。示されたネットワーク接続は好例となっており、および、ワイドエリアネットワーク452と通信を確立する他の手段を使用しても良い、ということを認識するであろう。
【0038】
本発明を、その精神または必要な特徴から逸脱すること無しで、他の特定の形態で実施しても良い。記述された実施形態を、全ての点において単なる例証であって限定的でない、と考えるべきである。それゆえに、本発明の範囲を、前述の記述によってではなく、特許請求の範囲によって示す。その意味内、および請求項の均等物の範囲内で起こる全ての変更は、それらの範囲内に包含されている。
【図面の簡単な説明】
【図1】本発明に従って、共通のユーザーモード、およびカーネルモード動作の一回の実施を可能にするハードウエアドライバモデルのハイレベルブロック図を示す図である。
【図2A】本発明に従って、ハードウエアドライバモデルの1例を図示している図である。
【図2B】本発明に従って、ハードウエアドライバモデルの1例を図示している図である。
【図2C】本発明に従って、ハードウエアドライバモデルの1例を図示している図である。
【図3】本発明に従って、共通のユーザーモード、およびカーネルモード動作の一回の実施を可能にする方法のための行為例を示す図である。
【図4】本発明に対して適切な動作環境を提供するシステムの1例を図示する図である。
【符号の説明】
110 アプリケーション
120 ユーザーモードインターフェイス
130 ユーザーモード実施
140 カーネルモード実施
150 アダプタ
210A InfiniBandアプリケーション
220A ユーザーモードInfiniBandライブラリ
230A ユーザーモードライブラリ
232A ベンダ固有ライブラリ
240A ミニポートドライバ
242A ベンダ固有ライブラリ
244A カーネルモードアダプタ制御、およびヘルパー機能
246A クラスエージェント(SMおよびPMエージェント)
250A Hcaポート
262A サブネットマネージャ
264A 接続マネージャ
266A パフォーマンスマネージャ
270A カーネルモードクライアント
280A HCAアダプタ
250B Hcaポート
240B ミニポートドライバ
242B ベンダ固有ライブラリ
244B カーネルモードアダプタ制御、およびヘルパー機能
246B クラスエージェント(SMおよびPMエージェント)
280B HCAアダプタ
210C InfiniBandアプリケーション
220C ユーザーモードInfiniBandライブラリ
230C ユーザーモードライブラリ
232C ベンダ固有ライブラリ
240C ミニポート
244C アダプタヘルパー機能
250C Hcaポート
280C HCAアダプタ
421 処理装置
422 システムメモリ
423 システムバス
424 ROM
425 RAM
426 BIOS
432 ハードディスクドライブインターフェイス
433 磁気ディスクドライブインターフェイス
434 光ドライブインターフェイス
435 オペレーティングシステム
436、436a、436b アプリケーションプログラム
437 他のプログラムモジュール
438 プログラムデータ
440 キーボード
446 シリアルポートインターフェイス
447 モニタ
448 ビデオアダプタ
449a、449b リモートコンピュータ
451 ローカルエリアネットワーク
452 ワイドエリアネットワーク
453 ネットワークインターフェイス
454 モデム
Claims (19)
- (1)比較的あまり制限されないカーネルモード、および(2)比較的制限されたユーザーモード、のうちの少なくとも1つで動作をすることができる1つ、または2つ以上のプロセス、および前記1つ、または2つ以上のプロセスが通信リンク上で少なくとも1つのハードウエアデバイスと通信することを可能にするハードウエアアダプタを備えるコンピュータシステムに対して、前記ハードウエアアダプタに関係する、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作の一回の実施を可能にする方法であって、
カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対して、共通のインターフェイス名を規定する行為と、
前記名前に対応する前記少なくとも1つの動作のカーネルモード実施を提供する行為と、
前記名前に対応する前記少なくとも1つの動作のユーザーモード実施を提供する行為と、
与えられたプロセスに対して、(1)前記与えられたプロセスがカーネルモードプロセスである場合は、前記カーネルモード実施へ、また(2)前記与えられたプロセスがユーザーモードプロセスである場合は、前記ユーザーモード実施へ、共通のインターフェイスコールのうちの1つ、または2つ以上をマッピングする行為と、
前記カーネルモード処理に固有である1つ、または2つ以上の動作のカーネルモード実施を提供する行為とを備え、
前記少なくとも1つの動作のユーザーモード実施は、カーネルモードへ切り替えること無しに、前記ハードウエアアダプタへユーザーモードプロセスの直接のアクセスを提供する通信動作に対応し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエアアダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とする方法。 - カーネルモード処理に固有である前記1つ、または2つ以上の動作は、前記ハードウエアアダプタを通して、通信の開始および終了に対する通信動作のうちの1つ、または2つ以上に対応し、カーネルモード処理、およびユーザーモード処理に共通である前記少なくとも1つの動作に対する前記共通のインターフェイスは、前記ハードウエアアダプタを通して、情報の送受信に対する通信動作に対応することを特徴とする請求項1記載の方法。
- 前記カーネルモード実施で通信キューの作成および破壊を行い、前記ユーザーモード実施で、前記カーネルモード実施で作成した通信キューへユーザデータの転送を行うことを特徴とする請求項1または2記載の方法。
- 前記マッピングは、実行中で起こることを特徴とする請求項1記載の方法。
- 前記マッピングは、静的であることを特徴とする請求項1記載の方法。
- 前記ハードウエアアダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項1記載の方法。
- (1)比較的あまり制限されないカーネルモード、および(2)比較的制限されたユーザーモード、のうちの少なくとも1つで動作をすることができる1つ、または2つ以上のプロセス、および前記1つ、または2つ以上のプロセスが通信リンク上で少なくとも1つのハードウエアデバイスと通信することを可能にするハードウエアアダプタとを備えるコンピュータシステムに対して、前記ハードウエアアダプタに関連する、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作の一回の方法の実施させるためのプログラムを記録したコンピュータ可読記録媒体であって、前記方法は、
カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対して、共通のインターフェイス名を規定する行為と、
前記名前に対応する前記少なくとも1つの動作のカーネルモード実施を提供する行為と、
前記名前に対応する前記少なくとも1つの動作のユーザーモード実施を提供する行為と、
与えられたプロセスに対して、(1)前記与えられたプロセスがカーネルモードプロセスである場合は、前記カーネルモード実施へ、また(2)前記与えられたプロセスがユーザーモードプロセスである場合は、前記ユーザーモード実施へ、共通のインターフェイスコールのうちの1つ、または2つ以上をマッピングする行為と
カーネルモード処理に固有である1つ、または2つ以上の動作のカーネルモード実施を提供する行為とを備え、
前記少なくとも1つの動作のユーザーモード実施は、カーネルモードへ変更すること無しに、前記ハードウエアアダプタへユーザーモードプロセスの直接のアクセスを提供する通信動作に対応し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエアアダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とするコンピュータ可読記録媒体。 - カーネルモード処理に固有である前記1つ、または2つ以上の動作は、前記ハードウエアを通して、通信の開始および終了に対する通信動作のうちの1つ、または2つ以上と対応し、および、カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対する前記共通のインターフェイスは、前記ハードウエアアダプタを通して、情報の送受信に対する通信動作に対応することを特徴とする請求項7記載のコンピュータ可読記録媒体。
- 前記カーネルモード実施で通信キューの作成および破壊を行い、前記ユーザーモード実施で、前記カーネルモード実施で作成した通信キューへユーザデータの転送を行うことを特徴とする請求項7または8記載のコンピュータ可読記録媒体。
- 前記マッピングは、実行中で起こることを特徴とする請求項7記載のコンピュータ可読記録媒体。
- 前記マッピングは、静的であることを特徴とする請求項7記載のコンピュータ可読記録媒体。
- 前記ハードウエアアダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項7記載のコンピュータ可読記録媒体。
- ハードウエア通信アダプタに関連した、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作に関する一回の実行をコンピュータにさせるプログラムであって、コンピュータに、
カーネルモード処理、およびユーザーモード処理に共通である前記1つ、または2つ以上の動作に対して、共通の名前およびパラメータリストを識別するインターフェイスモジュールと、
カーネルモードでの実行に対する前記1つ、または2つ以上の動作を実施するカーネルモード実施モジュールと、
ユーザーモードでの実行に対する前記1つ、または2つ以上の動作を実施するユーザーモード実施モジュールと、
コーリングプロセスがカーネルモードプロセスである場合は、カーネルモード実施モジュールを呼び出し、および、前記コーリングプロセスがユーザーモードプロセスである場合は、ユーザーモード実施モジュールを呼び出すディスパッチモジュールと
カーネルモード処理に固有である1つ、または2つ以上の動作を実施する、カーネルモードのみの実施モジュールとを実現させ、
前記ユーザーモード実施モジュールは、カーネルモードへ切り替えすること無しで、前記ハードウエア通信アダプタに直接のアクセスを提供し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエア通信アダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とするプログラム。 - 前記カーネルモード実施モジュールは通信キューの作成および破壊を行い、前記ユーザーモード実施モジュールは、前記カーネルモード実施モジュールが作成した通信キューへユーザデータの転送を行うことを特徴とする請求項13記載のプログラム。
- カーネルモード処理に固有である前記1つ、または2つ以上の動作は、1つ、または2つ以上の特権動作を備え、および、カーネルモード処理、およびユーザーモード処理に共通である前記1つ、または2つ以上の動作は、非特権動作のうちの1つ、または2つ以上に対応することを特徴とする請求項13記載のプログラム。
- 前記特権動作のうちの1つ、または2つ以上は、前記ハードウエア通信アダプタを通して、通信の開始および終了に使用され、および、前記非特権動作のうちの1つ、または2つ以上は、前記ハードウエア通信アダプタを通して、情報の送受信に使用されることを特徴とする請求項15記載のプログラム。
- 前記ディスパッチモジュールは、前記カーネルモード実施モジュール、および前記ユーザーモード実施モジュールに静的にリンクされることを特徴とする請求項13記載のプログラム。
- 前記ディスパッチモジュールは、実行中で、カーネルモード実施モジュール、およびユーザーモード実施モジュールのどちらかを、動的に呼び出すことを特徴とする請求項13記載のプログラム。
- 前記ハードウエア通信アダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項13記載のプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/185,122 US7024672B2 (en) | 2002-06-26 | 2002-06-26 | Process-mode independent driver model |
US10/185,122 | 2002-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004054934A JP2004054934A (ja) | 2004-02-19 |
JP4721627B2 true JP4721627B2 (ja) | 2011-07-13 |
Family
ID=29717985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003183592A Expired - Lifetime JP4721627B2 (ja) | 2002-06-26 | 2003-06-26 | プロセスモードが独立したドライバモデル |
Country Status (14)
Country | Link |
---|---|
US (2) | US7024672B2 (ja) |
EP (1) | EP1376372B1 (ja) |
JP (1) | JP4721627B2 (ja) |
KR (1) | KR101002489B1 (ja) |
CN (1) | CN1470989B (ja) |
AU (1) | AU2003204350B2 (ja) |
BR (1) | BRPI0302041B1 (ja) |
CA (1) | CA2428456A1 (ja) |
HK (1) | HK1058982A1 (ja) |
MX (1) | MXPA03005366A (ja) |
MY (1) | MY154679A (ja) |
RU (1) | RU2327208C2 (ja) |
TW (1) | TWI292123B (ja) |
ZA (1) | ZA200303731B (ja) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024672B2 (en) * | 2002-06-26 | 2006-04-04 | Microsoft Corporation | Process-mode independent driver model |
CN1270229C (zh) * | 2002-12-31 | 2006-08-16 | 上海科泰世纪科技有限公司 | 基于动态内核实现跨地址空间创建构件对象的方法 |
US20040243783A1 (en) * | 2003-05-30 | 2004-12-02 | Zhimin Ding | Method and apparatus for multi-mode operation in a semiconductor circuit |
EP1522923A3 (fr) * | 2003-10-08 | 2011-06-22 | STMicroelectronics SA | Architecture de processeur à plusieurs contextes d'exécution simultanés |
US7978716B2 (en) * | 2003-11-24 | 2011-07-12 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
GB0408876D0 (en) | 2004-04-21 | 2004-05-26 | Level 5 Networks Ltd | User-level stack |
US7756594B2 (en) * | 2004-06-14 | 2010-07-13 | Microsoft Corporation | Systems and methods for parsing flexible audio codec topologies |
US7669050B2 (en) * | 2004-06-24 | 2010-02-23 | International Business Machines Corporation | Method to enable user mode process to operate in a privileged execution mode |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US8739274B2 (en) * | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
US8341649B2 (en) * | 2004-07-06 | 2012-12-25 | Wontok, Inc. | System and method for handling an event in a computer system |
US7765558B2 (en) * | 2004-07-06 | 2010-07-27 | Authentium, Inc. | System and method for handling an event in a computer system |
AU2005266945A1 (en) * | 2004-07-23 | 2006-02-02 | Citrix Systems, Inc. | A method and systems for securing remote access to private networks |
US8046830B2 (en) * | 2004-07-23 | 2011-10-25 | Citrix Systems, Inc. | Systems and methods for network disruption shielding techniques |
US20060041895A1 (en) * | 2004-08-04 | 2006-02-23 | Microsoft Corporation | Systems and methods for interfacing with codecs across an architecture optimized for audio |
US7590065B2 (en) * | 2004-08-04 | 2009-09-15 | Microsoft Corporation | Equal-opportunity bandwidth regulation |
US7706901B2 (en) * | 2004-10-01 | 2010-04-27 | Microsoft Corporation | Low latency real-time audio streaming |
KR101201118B1 (ko) * | 2004-11-08 | 2012-11-13 | 마이크로소프트 코포레이션 | 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법 |
US7721298B2 (en) * | 2004-12-03 | 2010-05-18 | Microsoft Corporation | Operating system performance |
US8954595B2 (en) * | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US7810089B2 (en) * | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8255456B2 (en) | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US7581051B2 (en) * | 2005-05-16 | 2009-08-25 | Microsoft Corporation | Method for delivering interrupts to user mode drivers |
US7502871B2 (en) * | 2005-05-23 | 2009-03-10 | International Business Machines Corporation | Method for query/modification of linear block address table entries for direct I/O |
US20060265525A1 (en) * | 2005-05-23 | 2006-11-23 | Boyd William T | System and method for processor queue to linear block address translation using protection table control based on a protection domain |
US7552240B2 (en) * | 2005-05-23 | 2009-06-23 | International Business Machines Corporation | Method for user space operations for direct I/O between an application instance and an I/O adapter |
US7502872B2 (en) * | 2005-05-23 | 2009-03-10 | International Bsuiness Machines Corporation | Method for out of user space block mode I/O directly between an application instance and an I/O adapter |
US7464189B2 (en) * | 2005-05-23 | 2008-12-09 | International Business Machines Corporation | System and method for creation/deletion of linear block address table entries for direct I/O |
US20070005815A1 (en) * | 2005-05-23 | 2007-01-04 | Boyd William T | System and method for processing block mode I/O operations using a linear block address translation protection table |
US7500071B2 (en) * | 2005-08-31 | 2009-03-03 | International Business Machines Corporation | Method for out of user space I/O with server authentication |
US20070168567A1 (en) * | 2005-08-31 | 2007-07-19 | Boyd William T | System and method for file based I/O directly between an application instance and an I/O adapter |
US7657662B2 (en) * | 2005-08-31 | 2010-02-02 | International Business Machines Corporation | Processing user space operations directly between an application instance and an I/O adapter |
US7577761B2 (en) * | 2005-08-31 | 2009-08-18 | International Business Machines Corporation | Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation |
US7634678B2 (en) * | 2006-02-07 | 2009-12-15 | Omx Technology Ab | Application software initiated speedup |
US8954045B2 (en) | 2006-09-29 | 2015-02-10 | Qualcomm Incorporated | Method and apparatus for managing resources at a wireless device |
WO2009151888A2 (en) * | 2008-05-19 | 2009-12-17 | Authentium, Inc. | Secure virtualization system software |
KR100971234B1 (ko) * | 2008-07-22 | 2010-07-21 | 김기영 | 이중 피복 금형 |
US8321874B2 (en) * | 2008-09-30 | 2012-11-27 | Microsoft Corporation | Intelligent context migration for user mode scheduling |
US8473964B2 (en) | 2008-09-30 | 2013-06-25 | Microsoft Corporation | Transparent user mode scheduling on traditional threading systems |
JP4576452B2 (ja) * | 2008-11-06 | 2010-11-10 | イーソル株式会社 | オペレーティングシステムおよび情報処理装置 |
US8654134B2 (en) | 2008-12-08 | 2014-02-18 | Microsoft Corporation | Command remoting |
CN101894019B (zh) * | 2010-06-12 | 2014-10-01 | 中山大学 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
US9176795B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics processing dispatch from user mode |
US9176794B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
US8533812B1 (en) * | 2011-03-03 | 2013-09-10 | Symantec Corporation | Systems and methods for securing access to kernel devices |
US20130086558A1 (en) * | 2011-09-29 | 2013-04-04 | Microsoft Corporation | Testing Program Code in Multiple Process Modes |
US8850557B2 (en) | 2012-02-29 | 2014-09-30 | International Business Machines Corporation | Processor and data processing method with non-hierarchical computer security enhancements for context states |
KR101895453B1 (ko) | 2011-11-09 | 2018-10-25 | 삼성전자주식회사 | 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치 |
US9405682B2 (en) | 2012-06-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Storage device access using unprivileged software code |
KR101907486B1 (ko) * | 2012-09-14 | 2018-10-12 | 한국전자통신연구원 | 보안성이 우수한 실행환경을 제공하는 이동 컴퓨팅 시스템 |
US8881176B2 (en) | 2013-03-15 | 2014-11-04 | Silicon Graphics International Corp. | Block device management |
US9158914B2 (en) | 2013-04-19 | 2015-10-13 | Crowdstrike, Inc. | Executable component injection utilizing hotpatch mechanisms |
US9817776B2 (en) | 2015-01-19 | 2017-11-14 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
CN105159703B (zh) * | 2015-08-04 | 2018-06-05 | 广东欧珀移动通信有限公司 | 恢复出厂设置的方法和系统 |
US11271870B2 (en) | 2016-01-27 | 2022-03-08 | Oracle International Corporation | System and method for supporting scalable bit map based P_Key table in a high performance computing environment |
US10200308B2 (en) | 2016-01-27 | 2019-02-05 | Oracle International Corporation | System and method for supporting a scalable representation of link stability and availability in a high performance computing environment |
WO2018039061A1 (en) * | 2016-08-23 | 2018-03-01 | Oracle International Corporation | System and method for supporting fast hybrid reconfiguration in a high performance computing environment |
US10560373B2 (en) * | 2017-04-06 | 2020-02-11 | Gvbb Holdings S.A.R.L. | System and method for timely and uniform distribution for real-time packet transmission |
TWI765328B (zh) * | 2020-08-27 | 2022-05-21 | 技嘉科技股份有限公司 | 顯示卡的模式切換裝置 |
EP4036728A1 (fr) * | 2021-01-29 | 2022-08-03 | Atos Integration | Procédé de diffusion de paquets d'information à une pluralité de destinataires dans un réseau |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
KR940007680A (ko) * | 1992-09-30 | 1994-04-27 | 로버트 에이. 에셀만 | 메모리 할당 요구의 축소 방법 및 시스템 |
EP0610677A3 (en) * | 1993-02-12 | 1995-08-02 | Ibm | Communication device management module operating in two modes. |
US5584023A (en) * | 1993-12-27 | 1996-12-10 | Hsu; Mike S. C. | Computer system including a transparent and secure file transform mechanism |
EP0701205B1 (en) * | 1994-07-22 | 2003-05-14 | Sun Microsystems, Inc. | Method and apparatus for space-efficient inter-process communication |
US5481719A (en) * | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
US5956507A (en) * | 1996-05-14 | 1999-09-21 | Shearer, Jr.; Bennie L. | Dynamic alteration of operating system kernel resource tables |
US6209041B1 (en) * | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US6212574B1 (en) * | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US6205492B1 (en) * | 1997-04-04 | 2001-03-20 | Microsoft Corporation | Method and computer program product for interconnecting software drivers in kernel mode |
US6111894A (en) | 1997-08-26 | 2000-08-29 | International Business Machines Corporation | Hardware interface between a switch adapter and a communications subsystem in a data processing system |
IL126149A (en) * | 1997-09-09 | 2003-07-31 | Sanctum Ltd | Method and system for protecting operations of trusted internal networks |
US5926775A (en) * | 1997-10-08 | 1999-07-20 | National Instruments Corporation | Mini driver software architecture for a data acquisition system |
US6131163A (en) * | 1998-02-17 | 2000-10-10 | Cisco Technology, Inc. | Network gateway mechanism having a protocol stack proxy |
JPH11249937A (ja) * | 1998-02-26 | 1999-09-17 | Nippon Telegr & Teleph Corp <Ntt> | コンピュータシステム |
US6134567A (en) * | 1998-06-03 | 2000-10-17 | Hewlett-Packard Company | High resolution alphanumeric character generation |
US6871350B2 (en) * | 1998-12-15 | 2005-03-22 | Microsoft Corporation | User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode |
US6598169B1 (en) * | 1999-07-26 | 2003-07-22 | Microsoft Corporation | System and method for accessing information made available by a kernel mode driver |
US20020165978A1 (en) * | 2001-05-07 | 2002-11-07 | Terence Chui | Multi-service optical infiniband router |
US7007157B2 (en) * | 2001-10-30 | 2006-02-28 | Microsoft Corporation | Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic |
US7024672B2 (en) * | 2002-06-26 | 2006-04-04 | Microsoft Corporation | Process-mode independent driver model |
-
2002
- 2002-06-26 US US10/185,122 patent/US7024672B2/en not_active Expired - Lifetime
-
2003
- 2003-05-12 CA CA002428456A patent/CA2428456A1/en not_active Abandoned
- 2003-05-12 MY MYPI20031766A patent/MY154679A/en unknown
- 2003-05-14 ZA ZA200303731A patent/ZA200303731B/xx unknown
- 2003-05-22 TW TW092113898A patent/TWI292123B/zh not_active IP Right Cessation
- 2003-05-26 AU AU2003204350A patent/AU2003204350B2/en not_active Ceased
- 2003-06-06 EP EP03012926.6A patent/EP1376372B1/en not_active Expired - Lifetime
- 2003-06-11 BR BRPI0302041A patent/BRPI0302041B1/pt not_active IP Right Cessation
- 2003-06-13 MX MXPA03005366A patent/MXPA03005366A/es active IP Right Grant
- 2003-06-25 KR KR1020030041411A patent/KR101002489B1/ko active IP Right Grant
- 2003-06-25 RU RU2003119199/09A patent/RU2327208C2/ru not_active IP Right Cessation
- 2003-06-25 CN CN031452213A patent/CN1470989B/zh not_active Expired - Fee Related
- 2003-06-26 JP JP2003183592A patent/JP4721627B2/ja not_active Expired - Lifetime
-
2004
- 2004-03-11 HK HK04101776.4A patent/HK1058982A1/zh not_active IP Right Cessation
-
2006
- 2006-01-26 US US11/340,345 patent/US7647496B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20060123148A1 (en) | 2006-06-08 |
US7647496B2 (en) | 2010-01-12 |
KR101002489B1 (ko) | 2010-12-17 |
AU2003204350B2 (en) | 2009-10-08 |
HK1058982A1 (zh) | 2004-06-11 |
KR20040002683A (ko) | 2004-01-07 |
US20040003137A1 (en) | 2004-01-01 |
RU2327208C2 (ru) | 2008-06-20 |
ZA200303731B (en) | 2004-01-29 |
EP1376372B1 (en) | 2015-09-30 |
JP2004054934A (ja) | 2004-02-19 |
BRPI0302041B1 (pt) | 2016-02-10 |
EP1376372A2 (en) | 2004-01-02 |
EP1376372A3 (en) | 2008-07-30 |
TW200402656A (en) | 2004-02-16 |
AU2003204350A1 (en) | 2004-01-22 |
CN1470989A (zh) | 2004-01-28 |
US7024672B2 (en) | 2006-04-04 |
CA2428456A1 (en) | 2003-12-26 |
MY154679A (en) | 2015-07-15 |
MXPA03005366A (es) | 2004-01-22 |
TWI292123B (en) | 2008-01-01 |
RU2003119199A (ru) | 2005-01-10 |
BR0302041A (pt) | 2004-09-08 |
CN1470989B (zh) | 2010-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4721627B2 (ja) | プロセスモードが独立したドライバモデル | |
US11792307B2 (en) | Methods and apparatus for single entity buffer pool management | |
US7603484B2 (en) | Protocol for communication with a user-mode device driver | |
US7558723B2 (en) | Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices | |
US20100319001A1 (en) | Communication in isolated execution contexts | |
US7984438B2 (en) | Virtual machine transitioning from emulating mode to enlightened mode | |
JP2008539484A (ja) | ユニバーサル・シリアル・バス機能のデリゲーション | |
US5603014A (en) | Protected mode simulation of a real mode interupt based programming interface in a computer system | |
JP2006164265A (ja) | サブシステム間のリソース共有の可能化 | |
JP2006164266A (ja) | オペレーティングシステムのパフォーマンスの改善 | |
US20230035594A1 (en) | Managing peripherals in a containerized environment | |
US8966506B2 (en) | Method and apparatus for managing related drivers associated with a virtual bus driver | |
Khaksari et al. | A Bare Machine Application Development Methodology. | |
WO1999039254A2 (en) | Providing low level hardware device driver from user mode under multi-tasking operating systems | |
US7409691B2 (en) | Extending operating system subsystems | |
US20060150202A1 (en) | Extending operating system subsystems | |
US11068613B2 (en) | Differentiating and managing identical USB devices | |
US7577962B2 (en) | Routing exceptions to operating system subsystems | |
US6912617B2 (en) | Altering virtual machine execution parameters at runtime | |
US10394722B1 (en) | Managing alt-mode interfaces of a USB Type-C device | |
Kleidermacher | A Virtualization Architecture for Next Generation In-Car Infotainment Applications | |
DALE | PROVIDING LOW LEVEL HARDWARE DEVICE DRIVER FROM USER MODE UNDER MULTI-TASKING OPERATING SYSTEMS | |
Karne et al. | A Bare Machine Application Development Methodology | |
Points | man pages section 9: DDI and | |
JP2004355516A (ja) | コンピュータ装置、エージェントの実行継続方法、アクセス制限保証方法、および、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060619 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100427 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100727 |
|
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: 20110329 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110405 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140415 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4721627 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |