ユーザー モードとカーネル モード
Windows を実行しているコンピューターのプロセッサは、ユーザー モードの とカーネル モード の 2 つの異なるモードで動作します。 プロセッサは、実行中のコードの種類に応じて、これらのモードを切り替えます。 アプリケーションはユーザー モードで動作し、コア オペレーティング システム コンポーネントはカーネル モードで機能します。 多くのドライバーはカーネル モードで動作しますが、ユーザー モードで機能するドライバーもあります。
ユーザー モード
ユーザー モードでアプリケーションを起動すると、Windows によって プロセス が作成されます。 このプロセスでは、プライベート 仮想アドレス空間 とプライベート ハンドル テーブルをアプリケーションに提供します。 各アプリケーションの仮想アドレス空間はプライベートであるため、あるアプリケーションで別のアプリケーションのデータを変更することはできません。 各アプリケーションは個別に実行され、クラッシュしても他のアプリケーションやオペレーティング システムに影響を与えないことを確認します。
ユーザー モード アプリケーションの仮想アドレス空間も制限されます。 ユーザー モードで実行されているプロセスは、オペレーティング システム用に予約されている仮想アドレスにアクセスできません。 ユーザー モード アプリケーションの仮想アドレス空間を制限すると、アプリケーションは重要なオペレーティング システム データを変更または破損できなくなります。
カーネル モード
カーネル モードで実行されているすべてのコードは、1 つの仮想アドレス空間を共有します。 その結果、カーネル モード ドライバーは、他のドライバーやオペレーティング システムから分離されません。 カーネル モード ドライバーが誤って間違った仮想アドレスに書き込む場合は、オペレーティング システムまたは別のドライバーに属するデータが侵害される可能性があります。 カーネル モード ドライバーがクラッシュすると、オペレーティング システム全体がクラッシュします。
次の図は、ユーザー モード コンポーネントとカーネル モード コンポーネント間の通信を示しています。