目录
Linux 的内核态与用户态
我们常说的 Linux 严格来说指代的是 Linux Kernel,泛指使用或裁剪标准 Linux Kernel 并在此基础之上实现各种应用程序解决方案的操作系统发行版本(e.g. RHEL、SUSE 和 Ubuntu)。一个完整的 Linux 操作系统体系架构通常由下列几个核心层级组成:
- Applications:在操作系统上安装并运行的用户态应用程序
- Shell:支持编程的命令行解析器
- Libs:操作系统标准库函数
- System Calls:暴露给用户态的内核态系统调用接口
- Kernel:操作系统的核心,真正对接硬件平台的软件程序
Linux Kernel 本质上看是一种软件,实现了进程管理器、内存管理器、文件系统、设备驱动以及网络管理组件来负责对接、管理计算机硬件平台,并通过系统调用(System Calls)为上层应用程序暴露硬件资源以提供程序运行环境。
以系统调用为边界将 Linux 操作系统的体系架构分为用户态和内核态(包括系统调用)。
操作系统的用户态和内核态实际上对应了 CPU 指令集中的非特权指令和特权指令的执行状态,CPU 划分了不同的执行级别来执行具有相应特权的指令。例如: