「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
リングには0-3のモードがあるが、UNIX、Windowsでも
0:カーネル、3:ユーザの2つのリングしか使用していない。
ユーザモードは通常のプログラムが動作するリング(モード)。
カーネルモードはOSやドライバ等のプログラムが動作するリング(モード)。
カーネルモードで動作することが許されているのは、
に限定されている。
また、Windowsカーネルはカーネル・オブジェクトとしてサービスを提供する。
このため、カーネル・オブジェクトを使用してWindowsカーネルの提供するサービスを使用したり、ドライバ経由で処理を行うファイルIOを行う場合は、
ユーザプログラムのプロセスでも、カーネルモードのCPU時間が増加することをタスクマネージャやパフォーマンスカウンタ等から確認できる。
ntoskrnl.exeを実行するのはSystemプロセス
(Windows 2000ではPID8、XPとServer 2003ではPID 4)
であり、このプロセスはユーザーモードの実行ファイルを動作させていない。
ドライバ(*.sys)は
に存在し、Systemプロセスから呼び出される。
Microsoft Windows 98 と Windows 2000 で導入されたデバイスドライバのフレームワーク
WDMドライバは以下のように分類される。
ドライバ(*.sys)は、通常、ベンダのリリースする
デバイス付属のSDK(ユーザモード、DLL)経由で使用する。
※ DLLから、システムサービス、IOマネージャ経由で.sys(ドライバ)とIRP通信をする。