[1]Linux体系结构
Linux体系结构可以分为两块:
1. 用户空间:用户空间中又包含用户的应用程序,C库。
2. 内核空间:内核空间包括:系统调用、内核以及与平台架构相关的代码。
Linux体系结构要分成用户空间和内核空间的原因:
1. 现代CPU通常都实现了不同的工作模式。以ARM为例:ARM实现了7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同:
(1)用户模式 usr (2)系统模式 sys(3)管理模式 svc(4)快速中断 fiq(5)外部中断 irq(6)数据访问终止 abt(7)未定义指令异常。
以X86为例:X86实现了4个不同级别的权限,Ring0—Ring3 ;Ring0下可以执行特权指令,可以访问IO设备;Ring3则有很多的限制。
所以,Linux从CPU的角度出发,为了保护内核的安全,把系统分成了2部分。
用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断“来完成用户空间到内核空间的转移。
[2]Linux内核架构
系统调用接口:
系统调用接口(SCI)为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。
进程管理:
进程管理的重点是创建进程(fork、exec),停止进程(kill、exit),并控制它们之间的通信(signal 或者 POSIX 机制)。进程管理还包括控制活动进程如何共享CPU,即进程调度。
内存管理:
内存管理的主要作用是控制多个进程安全地共享内存区域。
网络协议栈:
内核协议栈为Linux提供了丰富的网络协议实现。
虚拟文件系统:
虚拟文件系统(VFS)隐藏各种文件系统的具体细节,为文件操作提供统一的接口。
设备驱动:
Linux 内核中有大量代码都在设备驱动程序中,它们控制特定的硬件设备。