Windows 的核心架构被严格划分为用户模式(User Mode)与内核模式(Kernel Mode),以确保操作系统的稳定性和安全性。
为什么需要分层架构?
在现代操作系统中,如果让普通的应用程序(如浏览器、文本编辑器)直接访问硬件设备或物理内存,一旦程序崩溃或发生越界写入,整个系统都会随之蓝屏(BSOD)。
为了防止这种情况,Windows 采用了 CPU 提供的特权级别(Privilege Rings)机制:
- Ring 3 分配给用户模式
- Ring 0 分配给内核模式
用户模式 (User Mode)
这是所有普通应用程序运行的地方。在这个隔离的环境中,程序没有直接访问硬件的权限。当它们需要读取文件、分配内存或发送网络数据包时,必须通过一个称为“系统调用(System Call)”的机制,请求内核代为执行。
主要组件包括:
- 进程与线程:独立的执行单元
- 环境子系统 DLLs:如
kernel32.dll,user32.dll,advapi32.dll - NTDLL.dll:用户模式与内核模式之间的最后一道桥梁
注意:如果一个用户模式程序崩溃了,它通常只会导致该程序自行退出,不会影响整个系统的运行。
内核模式 (Kernel Mode)
内核模式是操作系统的特权层,拥有对系统硬件和内存的完全访问权限。
主要组件包括:
- 执行体 (Executive):包含内存管理器、I/O 管理器、进程管理器等高级系统服务。
- 微内核 (Microkernel):负责底层线程调度、中断处理等最核心的机制。
- 设备驱动 (Device Drivers):允许操作系统与硬件(如显卡、网卡)进行通信。
- 硬件抽象层 (HAL):隐藏不同主板和硬件平台之间的差异,为上层提供统一的接口。
// 一个典型的内核模式结构体示例:EPROCESS
typedef struct _EPROCESS {
KPROCESS Pcb;
EX_PUSH_LOCK ProcessLock;
LARGE_INTEGER CreateTime;
// ...
} EPROCESS, *PEPROCESS;
探索架构的下一部分,我们将深入研究 内核机制。