更新时间:2024-01-31 17:51:13
封面
版权信息
版权
内容提要
关于作者
关于审稿人
前言
第1章 进程、地址空间和线程
1.1 进程
1.1.1 所谓地址空间的错觉
1.1.2 内核空间和用户空间
1.2 进程描述符
1.2.1 进程属性:关键元素
1.2.2 进程关系:关键元素
1.2.3 调度属性:关键元素
1.2.4 进程限制:关键元素
1.2.5 文件描述符表:关键元素
1.2.6 信号描述符:关键元素
1.3 内核栈
1.4 栈溢出问题
1.5 进程创建
1.5.1 fork()
1.5.2 写时复制(COW)
1.5.3 exec
1.5.4 vfork()
1.5.5 Linux线程支持
1.6 内核线程
do_fork()和copy_process()
1.7 进程状态和终止
1.7.1 wait
1.7.2 exit
1.8 命名空间和cgroup
1.8.1 挂载命名空间
1.8.2 UTS命名空间
1.8.3 IPC命名空间
1.8.4 PID命名空间
1.8.5 网络命名空间
1.8.6 用户命名空间
1.8.7 cgroup命名空间
1.8.8 控制组(cgroup)
1.9 小结
第2章 进程调度器
2.1 进程调度器
2.2 Linux进程调度器设计
2.3 运行队列
2.4 调度入口
2.5 进程优先级
2.6 调度类
2.7 完全公平调度类(CFS)
2.7.1 CFS计算优先级和时间片
2.7.2 CFS运行队列
2.7.3 组调度
2.7.4 多核系统下的调度实体
2.7.5 调度策略
2.8 实时调度类
2.8.1 FIFO
2.8.2 RR
2.8.3 实时组调度
2.8.4 deadline调度类(零散任务模型的deadline调度)
2.9 调度相关的系统调用
处理器亲和性调用
2.10 进程抢占
2.11 小结
第3章 信号管理
3.1 信号
3.2 信号管理API
3.2.1 程序发出信号
3.2.2 等待排队信号
3.3 信号数据结构
3.3.1 信号描述符
3.3.2 被阻塞和挂起的队列
3.3.3 信号处理程序描述符
3.4 信号生成和传递
3.4.1 信号生成调用
3.4.2 信号传递
3.4.3 执行用户模式处理程序
3.4.4 设置用户模式处理程序帧
3.5 重新启动被中断的系统调用
3.6 小结
第4章 内存管理和分配器
4.1 初始化操作
页描述符
4.2 区域和节点
4.2.1 内存区域
4.2.2 内存节点
4.3 内存分配
4.3.1 页帧分配器
4.3.2 GFP掩码
4.3.3 slab分配器
4.3.4 vmalloc
4.3.5 连续内存分配器(CMA)
4.4 小结
第5章 文件系统和文件I/O
5.1 文件系统——高层视图
5.1.1 元数据
5.1.2 操作
5.1.3 附加功能
5.2 Linux内核中的文件系统
Ext系列文件系统
5.3 通用文件系统接口