介绍

计算机中运行Windows的处理器有两种不同的模式:用户模式和内核模式。

处理器根据正在处理的代码类型在这两种模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。虽然许多驱动程序在内核模式下运行,但某些驱动程序可能会在用户模式下运行。

用户模式

当您启动用户模式应用程序时,Windows 会为该应用程序创建一个进程。该进程为应用程序提供了私有的虚拟地址空间和私有的句柄表。由于应用程序的虚拟地址空间是私有的,因此一个应用程序不能更改属于另一个应用程序的数据。每个应用程序都在隔离中运行,如果一个应用程序崩溃,则崩溃仅限于该单个应用程序。其他应用程序和操作系统不会受到崩溃影响。

除了是私有的之外,用户模式应用程序的虚拟地址空间也是有限制的。在用户模式下运行的进程无法访问保留给操作系统使用的虚拟地址。限制用户模式应用程序的虚拟地址空间可以防止其更改并可能损坏关键操作系统数据。

内核模式

所有在内核模式下运行的代码共享一个虚拟地址空间。因此,内核模式驱动程序与其他驱动程序和操作系统本身不是隔离的。如果内核模式驱动程序意外地写入了错误的虚拟地址,属于操作系统或另一个驱动程序的数据可能会被破坏。如果内核模式驱动程序崩溃,整个操作系统都会崩溃。

这张图解说明了用户模式和内核模式组件之间的通信。

User mode and kernel mode - 图1