Windows 操作系统中的进程如何与用户模式和内核模式协同工作?

Windows 操作系统中的进程如何与用户模式和内核模式协同工作?

我一直在尝试学习 Windows 架构,但我仍然在努力将所有部分拼凑在一起,而且我认为这特别困难,因为我没有任何编程知识。

我最头疼的领域之一是内核和用户模式。有人能帮我举个好例子来理解在用户模式下运行的进程如何访问内核吗?句柄和对象在哪里出现?

据我所知,内核模式和用户模式只是 Windows 上的两种不同处理器模式。用户模式用于应用程序、系统进程、服务等,而内核模式用于 Windows Executive、设备和文件系统驱动程序、HAL、内核代码本身、GDI 等。Windows 上运行的处理器根据其正在执行的代码在这两种模式之间切换。

在用户模式下,执行代码无法直接访问硬件,并且只能有限地访问系统数据。它必须使用句柄来访问内核模式资源(即对象)。在内核模式下,执行代码可以完全且不受限制地访问底层硬件和系统数据。这种隔离可以提高系统稳定性和安全性。用户模式下的崩溃只会影响应用程序,因为每个进程都在其自己的私有虚拟内存空间(称为堆)中运行,而内核模式下的崩溃会导致错误检查,因为内核模式共享虚拟内存空间(称为池)。

为了说明我目前的理解,让我们以 MS Paint 为例。如果我启动 Paint,然后尝试通过键入文件名来打开图像,则处理器会将 mspaint.exe 进程中的线程切换到内核模式,以便访问处于内核模式的文件系统,这将允许它查看磁盘上存在的所有文件并找到与文件名匹配的文件。找到文件后,处理器会向 mspaint 线程提供内核模式下文件对象的句柄,然后该线程将由处理器切换回用户模式。

如果我错了,请纠正我。如果是这样,我将非常感激能够提供一个正确的例子来说明它的工作原理。

答案1

MS Paint 线程从内核调用一个“函数”,用于读取需要修改的文件。该函数仅具有从磁盘加载到 RAM 或反之亦然的功能。MS Paint 可以访问 RAM 中的特定空间,内核会将文件加载到该空间。MS Paint 通过更改颜色、字体等来修改 RAM 中的已加载副本。再次从内核调用一个函数来保存修改。

相关内容