CPU内核与用户态的区别与内存空间

zix 2026-8-18 138 8/18

1.CPU的内核态与用户态

        CPU通常具有4个特权状态,现代 CPU通常定义了 4 个特权级别(Ring 0 ~ Ring 3),但主流操作系统(Linux、Windows、macOS)通常只使用其中两个,分别是ring3(最低)对应用户态。

        ring0(最高)对应内核态,是最高特权级别,操作系统内核在此运行,可以直接访问所有硬件资源、执行特权指令(如操作内存管理单元、中断控制、I/O 端口访问等)。

        Ring 3(用户态/用户模式):最低特权级别,普通应用程序在此运行,只能执行非特权指令,不能直接访问硬件或敏感系统资源。

        在此基础上,划分用户空间和内核空间,内核空间和用户空间是内存的空间地址区域,其决定了当前代码能访问哪块内存。

2.内核空间与用户空间

        在程序运行时,函数存储在用户空间的代码段内,程序在用户空间内只能执行普通指令,不能操控硬件,如果需要操控硬件,则需要使用系统调用(syscall)调用内核空间的函数,这些内核空间的函数也是预编译好的机器指令,和用户函数一样,区别在于内核空间的函数运行在CPU的内核态上。

┌─────────────────────────────────────────────────────────────┐
│                      用户空间 (User Space)                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐                      │
│  │ 浏览器   │  │ 微信    │  │ 你的App │  ← 用户态 (Ring 3)    │
│  └─────────┘  └─────────┘  └─────────┘                      │
│  权限:只能执行普通指令,不能直接碰硬件                        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼ 系统调用 (System Call)
                              │  (唯一合法的"穿越通道")
┌────────────────────────────────────────────────────────────────────┐
│                      内核空间 (Kernel Space)                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                  │
│  │ 进程调度    │  │ 文件系统    │  │ 网络协议栈  │                   │
│  │ 内存管理    │  │ 设备驱动    │  │ 中断处理    │  ← 内核态 (Ring 0) │
│  └─────────────┘  └─────────────┘  └─────────────┘                 │
│  权限:执行特权指令,管理所有硬件资源                                 │
└────────────────────────────────────────────────────────────────────┘
                              │
                              ▼ 驱动程序 + 特权指令
┌─────────────────────────────────────────────────────────────┐
│                        硬件层 (Hardware)                    │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐         │
│  │   CPU   │  │  内存   │  │  磁盘   │  │  网卡   │          │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘         │
│  真正的物理设备,被内核通过驱动直接操控                         │
└─────────────────────────────────────────────────────────────┘

        内核空间包含进程调度、内存管理和文件系统、各类驱动以及系统调用接口等,内核通过驱动程序将指令翻译为硬件操作,通过内存映射I/O (MMIO) 或端口I/O读写寄存器,从而实现对硬件的控制。同时,驱动程序还能注册中断处理函数,响应硬件发送过来的信号,设置DMA搬运数据。特别注意,系统调用接口位于内核空间,是内核暴露给用户空间的唯一官方接口。

 

- THE END -

zix

8月19日22:28

1

非特殊说明,本博所有文章均为博主原创。

粤公网安备44011302005765号