开始学习
Linux 内核组成
Linux 采用宏内核(monolithic kernel)架构,内核主要由五个子系统组成:进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)以及进程间通信(IPC)。
进程调度
进程调度(Process Scheduler)负责控制进程对 CPU 的访问,当需要选择下一个进程运行时,由进程调度子系统根据调度算法选择最值得运行的进程。进程调度是操作系统最基本的功能,处于系统的中心位置,所有其他子系统都依赖它。
Linux 进程在几个状态间进行切换,下图展示了进程状态之间的切换关系。
内存管理
内存管理(Memory Management)的主要作用是控制多个进程安全地共享主内存区域,即管理多个进程对内存的使用。
Linux 支持虚拟内存,当 CPU 提供内存管理单元(MMU)时,Linux 内存管理子系统完成对每个进程的虚拟内存到物理内存的转换。
虚拟文件系统
虚拟文件系统(Virtual File System)隐藏了各种硬件的具体细节,为所有设备提供了统一的接口。VFS 独立于各个具体的文件系统,是对各种文件系统的一个抽象,提供数十种不同的文件系统支持。包括:
- 逻辑文件系统:Linux 所支持的文件系统,如 ext3、FAT 等;
- 设备驱动程序:为每一种硬件控制器所编写的设备驱动模块。
网络接口
网络接口(Network Interface)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为:
- 网络协议:实现每一种可能的网络传输协议;
- 网络驱动程序:与硬件设备的通信,每一种可能的硬件设备都有相应的设备驱动程序。
进程间通信
进程间通信(Interprocess Communication)提供了进程之间的各种通信机制,包括信号量、共享内存、消息队列、管道、UNIX 域套接字等。这些机制可协助多个进程、多资源的互斥访问、进程间的同步和消息传递。
在实际的 Linux 应用中,人们更多地趋向于使用 UNIX 域套接字,而不是 System V IPC 中的消息队列等机制,Android 内核则新增了 Binder 进程间通信方式。