Linux内核概述
Linux内核大家或许都不陌生,这是Linux操作系统中最核心和关键的部分,也是最为复杂的部分。Linux操作系统具有稳定/高系能/容易维护等优点,这与Linux优秀的内核实现是分不开的,我们在这里以How Linux Works这本书中的主要内容为依据,对Linux内核做一个整体的阐述。
Linux 的抽象层次
Linux把系统层和用户层分开,硬件系统之上便是内核,直接负责与底层硬件进行交互,用户应用则通过内核直接或间接与硬件打交道。内核进行资源管理的单位是任务(task), 这主要是指进程(process). 它是由内核统一管理的,称为用户空间或用户进程,在用户模式(user mode)中运行。而操作系统内核则运行在内核空间,内核空间所占用的内存与用户空间是隔离开的,这在后面我们会讲。
内核的职责
内核主要负责这么几个部分:
- 管理进程:决定那个进程可以使用CPU
- 管理内存:分配与回收,共享内存等
- 设备驱动程序:提供应用与硬件之间的接口
- 提供系统调用和其他支持
对进程的管理
Linux对进程的管理主要就是上下文切换,涉及到进程的启动/暂停/恢复与终止。其实更准确地来说应该是对任务的管理,因为管理的不仅仅是进程,还有线程,在Linux上我们将进程与线程统一称之为任务。早期的Linux上对线程支持不好,二者区别并不是很大。随着CPU的升级以及内核的改进,Linux上的线程也比原先性能改进很多。
上下文切换(context switc