进程管理
内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程
间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也
由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通
常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.
内存管理
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为
所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部
分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更
复杂的功能.
文件系统
Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个
文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽
象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物
理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文
件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统.
设备控制
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别
的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进
行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬
盘驱动到键盘和磁带驱动器. 内核功能的这个方面是本书中的我们主要感兴趣的地
方.
网络
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系
统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统
负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序
的执行. 另外, 所有的路由和地址解析问题都在内核中实现.