简介
目录
第 1章 进程、地址空间和线程 1
1.1 进程 1
1.1.1 所谓地址空间的错觉 2
1.1.2 内核空间和用户空间 3
1.2 进程描述符 4
1.2.1 进程属性:关键元素 5
1.2.2 进程关系:关键元素 8
1.2.3 调度属性:关键元素 9
1.2.4 进程限制:关键元素 9
1.2.5 文件描述符表:关键元素 11
1.2.6 信号描述符:关键元素 11
1.3 内核栈 12
1.4 栈溢出问题 16
1.5 进程创建 17
1.5.1 fork() 17
1.5.2 写时复制(COW) 18
1.5.3 exec 18
1.5.4 vfork() 19
1.5.5 Linux线程支持 19
1.6 内核线程 21
1.7 进程状态和终止 29
1.7.1 wait 29
1.7.2 exit 29
1.8 命名空间和cgroup 30
1.8.1 挂载命名空间 30
1.8.2 UTS命名空间 31
1.8.3 IPC命名空间 31
1.8.4 PID命名空间 31
1.8.5 网络命名空间 31
1.8.6 用户命名空间 31
1.8.7 cgroup命名空间 32
1.8.8 控制组(cgroup) 32
1.9 小结 33
第 2章 进程调度器 34
2.1 进程调度器 34
2.2 Linux进程调度器设计 35
2.3 运行队列 39
2.4 调度入口 41
2.5 进程优先级 43
2.6 调度类 44
2.7 完全公平调度类(CFS) 44
2.7.1 CFS计算优先级和时间片 45
2.7.2 CFS运行队列 45
2.7.3 组调度 46
2.7.4 多核系统下的调度实体 47
2.7.5 调度策略 48
2.8 实时调度类 49
2.8.1 FIFO 49
2.8.2 RR 49
2.8.3 实时组调度 50
2.8.4 deadline调度类(零散任务模型的deadline调度) 50
2.9 调度相关的系统调用 51
2.10 进程抢占 53
2.11 小结 54
第3章 信号管理 55
3.1 信号 55
3.2 信号管理API 58
3.2.1 程序发出信号 61
3.2.2 等待排队信号 62
3.3 信号数据结构 62
3.3.1 信号描述符 63
3.3.2 被阻塞和挂起的队列 64
3.3.3 信号处理程序描述符 65
3.4 信号生成和传递 66
3.4.1 信号生成调用 66
3.4.2 信号传递 69
3.4.3 执行用户模式处理程序 74
3.4.4 设置用户模式处理程序帧 75
3.5 重新启动被中断的系统调用 78
3.6 小结 80
第4章 内存管理和分配器 81
4.1 初始化操作 81
4.2 区域和节点 87
4.2.1 内存区域 87
4.2.2 内存节点 89
4.3 内存分配 97
4.3.1 页帧分配器 98
4.3.2 GFP掩码 105
4.3.3 slab分配器 110
4.3.4 vmalloc 122
4.3.5 连续内存分配器(CMA) 124
4.4 小结 125
第5章 文件系统和文件I/O 126
5.1 文件系统—高层视图 126
5.1.1 元数据 127
5.1.2 操作 132
5.1.3 附加功能 134
5.2 Linux内核中的文件系统 135
5.3 通用文件系统接口 138
5.4 特殊文件系统 153
5.4.1 procfs 154
5.4.2 sysfs 156
5.4.3 debugfs 157
5.5 小结 157
第6章 进程间通信 158
6.1 管道和FIFO 158
6.2 消息队列 163
6.2.1 System V消息队列 163
6.2.2 POSIX消息队列 165
6.3 共享内存 167
6.3.1 System V共享内存 167
6.3.2 POSIX共享内存 170
6.4 信号量 171
6.4.1 System V信号量 171
6.4.2 POSIX信号量 173
6.5 小结 174
第7章 虚拟内存管理 175
7.1 进程地址空间 175
7.1.1 进程内存描述符 177
7.1.2 页表 193
7.2 小结 195
第8章 内核同步和锁 196
8.1 原子操作 196
8.1.1 原子整数操作 197
8.1.2 原子位操作 198
8.2 排斥锁 199
8.2.1 自旋锁 199
8.2.2 互斥锁 207
8.2.3 信号量 217
8.2.4 顺序锁 221
8.2.5 完成锁 223
8.3 小结 226
第9章 中断和延迟工作 227
9.1 中断信号和向量 227
9.2 可编程中断控制器 229
9.2.1 中断控制器操作 230
9.2.2 IRQ描述符表 232
9.3 高级中断管理接口 235
9.3.1 注册一个中断处理程序 235
9.3.2 注销一个中断处理程序 237
9.3.3 线程化中断处理程序 237
9.3.4 控制接口 240
9.3.5 中断栈 241
9.4 延迟工作 241
9.4.1 softirq 242
9.4.2 tasklet 244
9.4.3 工作队列 248
9.5 小结 252
第 10章 时钟和时间管理 253
10.1 时间表示 253
10.2 硬件抽象 257
10.3 Linux计时数据结构体、宏以及辅助函数 260
10.3.1 jiffies 260
10.3.2 timeval和timespec 262
10.3.3 跟踪和维护时间 264
10.3.4 节拍和中断处理 265
10.3.5 节拍设备 267
10.4 软件定时器和延迟函数 267
10.4.1 动态定时器 268
10.4.2 带有动态定时器的竞争条件 270
10.4.3 动态定时器处理 271
10.4.4 延迟函数 271
10.5 POSIX时钟 272
10.6 小结 273
第 11章 模块管理 274
11.1 内核模块 274
11.1.1 LKM的要素 274
11.1.2 加载和卸载操作 277
11.2 小结 288
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问