本文共 784 字,大约阅读时间需要 2 分钟。
Linux系统划分为用户空间和内核空间。
用户空间包含用户应用程序、C库;
内核空间包括系统调用接口、狭义内核、体系结构相关内核代码。将Linux系统划分为用户空间和内核空间有助于保护操作系统。现代CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中止(abt)、系统式(sys)、未定义指令异常(und);X86也实现了4个不同的级别:Ring0-Ring3。Ring0下,可以执行特权指令,可以访问IO设备等,在Ring3则有很多限制。Linux系统利用了CPU的这一特性,使用了其中的两级来分别运行Linux内核与应用程序,这样使操作系统本身得到充分的保护。例如:如果使用X86,用户代码运行在Ring3,内核代码运行在Ring0。
内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。
Linux内核架构图:
系统调用接口(SCI):SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核;
进程管理(PM):进程管理的重点是创建进程(fork、exec),停止进程(kill、exit),并控制它们之间的通信(signal或者 POSIX机制)。进程管理还包括控制活动进程如何共享CPU, 即进程调度;
内存管理(MM):控制多个进程安全地共享内存区域;
网络协议栈:Linux的网络协议栈很丰富并且稳定,即Linux支持的网络协议多并且稳定;
虚拟文件系统(VFS):隐藏各种文件系统的具体细节,为文件操作提供统一的接口;
设备驱动(DD):Linux系统中设备驱动大概占了Linux内核的70%;
ARCH:体系结构相关内核代码,即与cpu密切相关的代码,将这些代码集中一起有助于移植。