Windows 中什么是用户模式与内核模式


您可能听说过在“内核”或“用户”模式下运行的应用程序。这一切都取决于操作系统在完成其工作时如何工作。一旦理解了这一点,就很容易掌握用户模式和内核模式之间的区别。

了解操作系统的用途

计算机由硬件、电子组件和软件(由该硬件执行的计算机代码)组成。但可能不太清楚的是它们如何协同工作。

计算机最基本的元素是位或“二进制数字”。计算机所做的一切都用 1 和 0 表示。不同的计算机组件以不同的方式表示位。在 中央处理器 中,微型晶体管通过打开或关闭来表示 1 和 0。这些晶体管被排列成逻辑结构,称为逻辑门。

在电子计算机存储器中,位由电荷高于或低于特定阈值的存储单元表示。在机械硬盘驱动器上,位被表示为在旋转盘片上测量的磁波动。在光盘上,反射或不反射激光的凹坑和平台起到相同的作用。

无论如何实现二进制代码的物理表示,您最终都可以将所有消费者计算机组件缩减为这个原始机器代码。

那么如何从计算机的人性化界面过渡到计算机本身的原始低级进程呢?这就是操作系统的用武之地。它直接控制计算机的硬件。

该软件将应用程序(以及用户)想要的所有内容转换为 CPU 和其他组件可以理解的机器代码指令。这个过程中最关键的软件就是内核。

什么是内核?

内核,顾名思义,就是操作系统的核心。内核是驻留在内存 中并指导计算机所做的一切的软件。当某些内容写入内存时,由内核指挥执行。

内核知道如何与 GPU 和网卡等硬件进行交互,但它可能不知道如何依靠计算机行业的通用标准来充分发挥它们的潜力。.

硬件驱动程序在这里发挥作用。驱动程序告诉您的操作系统如何使用特定组件,这就是为什么您需要针对 Nvidia 和 AMD GPU 的不同驱动程序。

配备了正确的驱动程序,内核是计算机内的最终权威,包括执行可能灾难性地破坏数据的操作。

应用程序编程接口 (API) 的作用

在 MS-DOS 时代,软件开发人员必须专门为用户的硬件编写软件。 MS-DOS 系统上最臭名昭著的例子是声卡驱动程序。

给定的视频游戏必须支持最流行的卡(Sound Blaster、Ad-lib、Gravis Ultrasound 等),并希望大多数玩家都能覆盖。如今,由于 API 的存在,事情的工作方式已大不相同。

Microsoft DirectX 就是一个很好的例子。如果您想要深入的解释,请查看 什么是 DirectX 以及为什么它很重要? 但是,最重要的是要知道 API 为软件开发人员提供了一种标准方法,可以从 GPU 等组件请求硬件资源。此外,硬件制造商必须仅确保其产品符合 DirectX,以确保与任何同样兼容的软件完全兼容。

API 在软件应用程序和低级内核及其硬件驱动程序之间提供了一个转换层。是的,这会带来轻微的性能损失。不过,在现代计算机上,这是可以忽略不计的,并且它具有多种优点,这就是我们最终讨论用户模式和内核模式的地方。

用户模式与内核模式

现代操作系统同时运行数百或数千个“进程”,根据其优先级和计算能力要求动态地为它们提供 CPU 时间。

当您启动应用程序时,它会生成进程,CPU 可以在用户模式或内核模式下执行它们。

运行在用户模式下的Windows进程只能访问自己的私有虚拟内存地址空间和句柄表。软件使用这些表在 RAM 中存储数据并请求资源。无法直接访问内存或其他硬件,由操作系统将这些虚拟空间映射到计算机的实际硬件。.

这有很多好处,但最重要的好处是应用程序无法覆盖或更改其虚拟内存地址空间之外的数据。此外,某些功能是用户模式进程禁止使用的,主要是那些可能导致系统崩溃或破坏数据的功能。

当进程启动或提升到内核模式时,它可以完全访问系统资源,甚至是为操作系统保留的资源。因此,从理论上讲,它可以覆盖操作系统正常运行所需的关键数据。

陷阱和异常

重要的是要了解这两种模式是由 CPU 本身在硬件级别强制执行的。如果在用户模式下运行的应用程序尝试执行需要内核模式访问的操作,则会生成“陷阱”或“异常”。然后操作系统将处理应用程序,通常是关闭应用程序并生成崩溃日志,以便开发人员可以看到当事情脱离轨道时内存中发生了什么。

内核模式的危险:蓝屏死机

如果您曾经经历过蓝屏死机(谁没有经历过?),迫使您的计算机关闭或重新启动,那么很可能是内核模式进程造成的。

当内核模式下的进程执行不应该执行的操作时,操作系统无法从中恢复,并且整个计算机将停止运行。当用户模式进程失控时,只有应用程序崩溃,软件和操作系统的其余部分可以继续运行,不会出现任何问题。

这是 API 发挥重要作用的领域,因为它是需要内核模式权限的 API。用户模式应用程序本质上是将需要内核模式权限的请求委托给 API。

这就是为什么内核模式通常只授予需要直接访问计算机硬件的低级系统进程。通常,此特权会扩展到进程,因为它需要比用户模式可以提供的更多性能。有些CPU指令只能在内核模式下工作,因此如果进程需要使用这些功能,则必须对其进行提升。

如果您遇到蓝屏死机问题,请务必阅读我们的Windows 10 蓝屏死机故障排除指南 !.

.

相关文章:


31.12.2021