JP4721627B2 - プロセスモードが独立したドライバモデル - Google Patents

プロセスモードが独立したドライバモデル Download PDF

Info

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
Application number
JP2003183592A
Other languages
English (en)
Other versions
JP2004054934A (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 JP2004054934A publication Critical patent/JP2004054934A/ja
Application granted granted Critical
Publication of JP4721627B2 publication Critical patent/JP4721627B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2105Dual mode as a secondary aspect

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータハードウエアに対するドライバソフトウエアの分野に関するものである。詳しくは、本発明は、ハードウエアアダプタに関する、カーネルモード処理、およびユーザーモード処理の両方に共通である、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. (1)比較的あまり制限されないカーネルモード、および(2)比較的制限されたユーザーモード、のうちの少なくとも1つで動作をすることができる1つ、または2つ以上のプロセス、および前記1つ、または2つ以上のプロセスが通信リンク上で少なくとも1つのハードウエアデバイスと通信することを可能にするハードウエアアダプタを備えるコンピュータシステムに対して、前記ハードウエアアダプタに関係する、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作の一回の実施を可能にする方法であって、
    カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対して、共通のインターフェイス名を規定する行為と、
    前記名前に対応する前記少なくとも1つの動作のカーネルモード実施を提供する行為と、
    前記名前に対応する前記少なくとも1つの動作のユーザーモード実施を提供する行為と、
    与えられたプロセスに対して、(1)前記与えられたプロセスがカーネルモードプロセスである場合は、前記カーネルモード実施へ、また(2)前記与えられたプロセスがユーザーモードプロセスである場合は、前記ユーザーモード実施へ、共通のインターフェイスコールのうちの1つ、または2つ以上をマッピングする行為と、
    前記カーネルモード処理に固有である1つ、または2つ以上の動作のカーネルモード実施を提供する行為とを備え、
    前記少なくとも1つの動作のユーザーモード実施は、カーネルモードへ切り替えること無しに、前記ハードウエアアダプタへユーザーモードプロセスの直接のアクセスを提供する通信動作に対応し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエアアダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とする方法。
  2. カーネルモード処理に固有である前記1つ、または2つ以上の動作は、前記ハードウエアアダプタを通して、通信の開始および終了に対する通信動作のうちの1つ、または2つ以上に対応し、カーネルモード処理、およびユーザーモード処理に共通である前記少なくとも1つの動作に対する前記共通のインターフェイスは、前記ハードウエアアダプタを通して、情報の送受信に対する通信動作に対応することを特徴とする請求項記載の方法。
  3. 前記カーネルモード実施で通信キューの作成および破壊を行い、前記ユーザーモード実施で、前記カーネルモード実施で作成した通信キューへユーザデータの転送を行うことを特徴とする請求項1または2記載の方法。
  4. 前記マッピングは、実行中で起こることを特徴とする請求項1記載の方法。
  5. 前記マッピングは、静的であることを特徴とする請求項1記載の方法。
  6. 前記ハードウエアアダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項1記載の方法。
  7. (1)比較的あまり制限されないカーネルモード、および(2)比較的制限されたユーザーモード、のうちの少なくとも1つで動作をすることができる1つ、または2つ以上のプロセス、および前記1つ、または2つ以上のプロセスが通信リンク上で少なくとも1つのハードウエアデバイスと通信することを可能にするハードウエアアダプタとを備えるコンピュータシステムに対して、前記ハードウエアアダプタに関連する、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作の一回の方法の実施させるためのプログラムを記録したコンピュータ可読記録媒体であって、前記方法は、
    カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対して、共通のインターフェイス名を規定する行為と、
    前記名前に対応する前記少なくとも1つの動作のカーネルモード実施を提供する行為と、
    前記名前に対応する前記少なくとも1つの動作のユーザーモード実施を提供する行為と、
    与えられたプロセスに対して、(1)前記与えられたプロセスがカーネルモードプロセスである場合は、前記カーネルモード実施へ、また(2)前記与えられたプロセスがユーザーモードプロセスである場合は、前記ユーザーモード実施へ、共通のインターフェイスコールのうちの1つ、または2つ以上をマッピングする行為と
    カーネルモード処理に固有である1つ、または2つ以上の動作のカーネルモード実施を提供する行為とを備え、
    前記少なくとも1つの動作のユーザーモード実施は、カーネルモードへ変更すること無しに、前記ハードウエアアダプタへユーザーモードプロセスの直接のアクセスを提供する通信動作に対応し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエアアダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とするコンピュータ可読記録媒体。
  8. カーネルモード処理に固有である前記1つ、または2つ以上の動作は、前記ハードウエアを通して、通信の開始および終了に対する通信動作のうちの1つ、または2つ以上と対応し、および、カーネルモード処理、およびユーザーモード処理に共通である少なくとも1つの動作に対する前記共通のインターフェイスは、前記ハードウエアアダプタを通して、情報の送受信に対する通信動作に対応することを特徴とする請求項記載のコンピュータ可読記録媒体。
  9. 前記カーネルモード実施で通信キューの作成および破壊を行い、前記ユーザーモード実施で、前記カーネルモード実施で作成した通信キューへユーザデータの転送を行うことを特徴とする請求項7または8記載のコンピュータ可読記録媒体。
  10. 前記マッピングは、実行中で起こることを特徴とする請求項記載のコンピュータ可読記録媒体。
  11. 前記マッピングは、静的であることを特徴とする請求項記載のコンピュータ可読記録媒体。
  12. 前記ハードウエアアダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項記載のコンピュータ可読記録媒体。
  13. ハードウエア通信アダプタに関連した、カーネルモード処理、およびユーザーモード処理の両方に共通である1つ、または2つ以上の動作に関する一回の実行をコンピュータにさせるプログラムであって、コンピュータに、
    カーネルモード処理、およびユーザーモード処理に共通である前記1つ、または2つ以上の動作に対して、共通の名前およびパラメータリストを識別するインターフェイスモジュールと、
    カーネルモードでの実行に対する前記1つ、または2つ以上の動作を実施するカーネルモード実施モジュールと、
    ユーザーモードでの実行に対する前記1つ、または2つ以上の動作を実施するユーザーモード実施モジュールと、
    コーリングプロセスがカーネルモードプロセスである場合は、カーネルモード実施モジュールを呼び出し、および、前記コーリングプロセスがユーザーモードプロセスである場合は、ユーザーモード実施モジュールを呼び出すディスパッチモジュールと
    カーネルモード処理に固有である1つ、または2つ以上の動作を実施する、カーネルモードのみの実施モジュールとを実現させ、
    前記ユーザーモード実施モジュールは、カーネルモードへ切り替えすること無しで、前記ハードウエア通信アダプタに直接のアクセスを提供し、前記カーネルモード処理に固有である1または2以上の動作のうちの少なくとも1つは、前記ハードウエア通信アダプタに直接のアクセスが可能か否かを示すセキュリティパラメータが設定されていることを特徴とするプログラム。
  14. 前記カーネルモード実施モジュールは通信キューの作成および破壊を行い、前記ユーザーモード実施モジュールは、前記カーネルモード実施モジュールが作成した通信キューへユーザデータの転送を行うことを特徴とする請求項1記載のプログラム。
  15. カーネルモード処理に固有である前記1つ、または2つ以上の動作は、1つ、または2つ以上の特権動作を備え、および、カーネルモード処理、およびユーザーモード処理に共通である前記1つ、または2つ以上の動作は、非特権動作のうちの1つ、または2つ以上に対応することを特徴とする請求項1記載のプログラム。
  16. 前記特権動作のうちの1つ、または2つ以上は、前記ハードウエア通信アダプタを通して、通信の開始および終了に使用され、および、前記非特権動作のうちの1つ、または2つ以上は、前記ハードウエア通信アダプタを通して、情報の送受信に使用されることを特徴とする請求項1記載のプログラム。
  17. 前記ディスパッチモジュールは、前記カーネルモード実施モジュール、および前記ユーザーモード実施モジュールに静的にリンクされることを特徴とする請求項1記載のプログラム。
  18. 前記ディスパッチモジュールは、実行中で、カーネルモード実施モジュール、およびユーザーモード実施モジュールのどちらかを、動的に呼び出すことを特徴とする請求項1記載のプログラム。
  19. 前記ハードウエア通信アダプタは、InfiniBandホストチャネルアダプタであることを特徴とする請求項1記載のプログラム。
JP2003183592A 2002-06-26 2003-06-26 プロセスモードが独立したドライバモデル Expired - Lifetime JP4721627B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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