[!TIP] 省流: 用户模式和内核模式切换是操作系统保护机制的核心,而
/proc是 Linux 系统暴露内核态信息的主要==接口==。通过/proc,用户模式程序能够安全、高效地获取系统内核的信息,而无需直接进入内核态。
用户模式和内核模式
1. 用户模式
- 权限限制:在用户模式下,程序的运行受限。它只能执行有限的指令,不能直接访问硬件资源(如磁盘、内存)。
- 运行环境:一般用户应用程序(如文本编辑器、浏览器)在用户模式下运行。
- 保护机制:如果应用程序出现问题(如非法内存访问),不会影响整个系统,因为操作受限制。
2. 内核模式
- 完全权限:内核模式拥有对硬件和系统资源的完全访问权限,能够直接操作内存、硬件设备等。
- 运行环境:操作系统内核和内核态驱动程序运行在内核模式下。
- 风险:如果内核代码有问题,可能导致系统崩溃。
用户模式与内核模式之间的切换
==在 windows 中,主要通过调用系统 API 来实现==
==在 linux 中,就是主要通过接口或者直接的 c 语言程序来实现==
切换发生的典型场景:
- 系统调用:用户程序通过系统调用请求内核服务(如文件操作、网络通信)。
- 硬件中断:硬件设备向操作系统发送中断信号(如键盘输入、网络数据到达)。
- 异常处理:当用户程序发生异常(如除零错误、非法内存访问),切换到内核模式处理异常。
切换流程(以系统调用为例)
- 用户程序发起系统调用:
- 调用一个标准库函数(如
read、write)。 - 函数通过
syscall指令触发软中断(如int 0x80或syscall指令)。
- 调用一个标准库函数(如
- 切换到内核模式:
- CPU模式从用户态切换到内核态。
- 跳转到内核中对应的系统调用处理函数。
- 内核处理请求:
- 执行内核代码完成请求(如从文件中读取数据)。
- 返回用户模式:
- 内核将结果返回给用户程序。
- CPU切换回用户模式,继续执行用户代码。
/proc 文件系统
/proc 是 Linux 中一个伪文件系统,用于访问系统内核和进程信息。它提供了关于系统运行状态的动态信息,并不占用实际磁盘空间。
作用
-
访问系统信息:
- 提供硬件配置、内存使用、CPU信息等。
- 示例:
cat /proc/cpuinfo查看CPU信息。
-
查看进程状态:
- 每个运行的进程都有一个目录
/proc/<PID>,其中包含该进程的详细信息。 - 示例:
cat /proc/1234/status查看进程 1234 的状态。
- 每个运行的进程都有一个目录
-
调试和监控:
- 开发者和系统管理员可以通过
/proc监控内核行为。 - 示例:
cat /proc/meminfo查看内存使用情况。
- 开发者和系统管理员可以通过
/proc常见的文件和目录
| 路径 | 含义 |
|---|---|
/proc/cpuinfo | CPU的详细信息 |
/proc/meminfo | 内存使用情况 |
/proc/uptime | 系统运行时间 |
/proc/<PID> | 特定进程的信息(PID 是进程ID) |
/proc/version | 内核版本信息 |