奔跑吧Linux内核(第2版)卷2:调试与案例分析
正版图书 真实库存欢迎选购 可开电子发票 有需要联系客服!
¥
80.37
7.3折
¥
109.9
全新
库存2件
作者笨叔
出版社人民邮电
ISBN9787115552525
出版时间2021-03
装帧平装
开本其他
定价109.9元
货号31101183
上书时间2024-12-17
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
笨叔,Linux内核爱好者,出版过《奔跑吧Linux内核》《奔跑吧Linux内核入门篇》。创建了奔跑吧Linux社区。
目录
目 录
第 1章 并发与同步1
1.1 原子操作3
1.1.1 原子操作3
1.1.2 atomic_add()函数分析6
1.1.3 比较并交换指令7
1.2 内存屏障11
1.2.1 经典内存屏障接口函数11
1.2.2 内存屏障扩展接口函数13
1.3 经典自旋锁14
1.3.1 自旋锁的实现15
1.3.2 自旋锁的变体18
1.3.3 spin_lock()和raw_spin_lock()
函数19
1.4 MCS锁20
1.4.1 快速申请通道21
1.4.2 中速申请通道22
1.4.3 慢速申请通道23
1.4.4 释放锁26
1.5 排队自旋锁27
1.5.1 快速申请通道29
1.5.2 中速申请通道30
1.5.3 慢速申请通道32
1.5.4 释放锁36
1.5.5 案例分析:为什么这里
pending域要清零36
1.5.6 小结38
1.6 信号量39
1.6.1 信号量简介39
1.6.2 小结43
1.7 互斥锁43
1.7.1 mutex数据结构43
1.7.2 互斥锁的快速通道44
1.7.3 互斥锁的慢速通道46
1.7.4 乐观自旋等待机制47
1.7.5 mutex_unlock()函数分析50
1.7.6 案例分析51
1.7.7 小结52
1.8 读写锁52
1.9 读写信号量53
1.9.1 rw_semaphore数据结构53
1.9.2 申请读者类型信号量55
1.9.3 释放读者类型信号量58
1.9.4 申请写者类型信号量58
1.9.5 释放写者类型信号量64
1.9.6 小结64
1.10 RCU64
1.10.1 关于RCU的一个简单例子65
1.10.2 经典RCU和Tree RCU68
1.11 案例分析:内存管理中的锁69
1.11.1 mm->mmap_sem70
1.11.2 mm->page_table_lock71
1.11.3 PG_Locked72
1.11.4 anon_vma->rwsem72
1.11.5 zone->lru_lock74
1.11.6 RCU75
1.11.7 RCU停滞检测78
第 2章 中断管理81
2.1 中断控制器82
2.1.1 中断状态和中断触发方式82
2.1.2 ARM GIC-V2中断控制器83
2.1.3 关于ARM Vexpress V2P
开发板的例子85
2.1.4 关于QEMU虚拟机平台的
例子86
2.2 硬件中断号和Linux中断号的映射87
2.3 注册中断98
2.4 ARM64底层中断处理105
2.4.1 异常向量表105
2.4.2 IRQ处理107
2.4.3 栈框108
2.4.4 保存中断上下文110
2.4.5 恢复中断上下文112
2.5 高层中断处理114
2.5.1 汇编跳转114
2.5.2 handle_arch_irq处理115
2.5.3 小结123
2.6 软中断和tasklet125
2.6.1 软中断125
2.6.2 tasklet129
2.6.3 local_bh_disable()和
local_bh_enable()函数分析134
2.6.4 小结135
2.7 工作队列136
2.7.1 工作队列的相关数据结构137
2.7.2 工作队列初始化141
2.7.3 创建工作队列143
2.7.4 添加和调度一个work149
2.7.5 处理一个work153
2.7.6 取消一个work157
2.7.7 和调度器的交互159
2.7.8 小结161
第3章 内核调试与性能优化164
3.1 打造ARM64实验平台165
3.1.1 使用O0优化等级编译
内核165
3.1.2 QEMU虚拟机+Debian
实验平台166
3.1.3 单步调试ARM64 Linux
内核171
3.1.4 以图形化方式单步调试
内核172
3.1.5 单步调试head.S文件176
3.2 ftrace181
3.2.1 irqs跟踪器182
3.2.2 function跟踪器184
3.2.3 动态ftrace185
3.2.4 事件跟踪186
3.2.5 添加跟踪点188
3.2.6 trace-cmd和kernelshark191
3.2.7 跟踪标记192
3.2.8 小结195
3.3 内存检测196
3.3.1 slub_debug197
3.3.2 KASAN内存检测202
3.4 死锁检测204
3.5 内核调试方法210
3.5.1 printk210
3.5.2 动态输出212
3.5.3 oops分析213
3.5.4 BUG_ON()和WARN_ON()宏
分析217
3.6 使用perf优化性能217
3.6.1 安装perf工具218
3.6.2 perf list命令218
3.6.3 perf record report命令219
3.6.4 perf stat命令220
3.6.5 perf top命令221
3.7 SystemTap222
3.8 eBPF和BCC224
3.8.1 BCC工具集224
3.8.2 编写BCC脚本225
第4章 基于x86_64解决宕机难题229
4.1 Kdump和Crash工具230
4.2 x86_64架构基础知识230
4.2.1 通用寄存器230
4.2.2 函数参数调用规则231
4.2.3 栈的结构232
4.2.4 寻址方式232
4.3 在CentOS 7.6中安装和配置Kdump
和Crash233
4.4 crash命令235
4.5 案例1:一个简单的宕机案例244
4.6 案例2:访问被删除的链表250
4.7 案例3:一个真实的驱动崩溃案例254
4.8 死锁检查机制259
4.9 案例4:一个简单的死锁案例261
4.10 案例5:分析和推导参数的值
变量263
4.11 案例6:一个复杂的宕机案例270
4.11.1 问题描述271
4.11.2 分析ps进程276
4.11.3 分析test进程281
4.11.4 计算一个进程被阻塞了多长
时间283
第5章 基于ARM64解决宕机难题285
5.1 搭建Kdump实验环境285
5.2 案例1:一个简单的宕机案例287
5.3 案例2:恢复函数调用栈288
5.4 案例3:分析和推导参数的值291
5.5 案例4:一个复杂的宕机案例294
5.5.1 分析ps进程296
5.5.2 分析test进程299
第6章 安全漏洞分析303
6.1 侧信道攻击303
6.2 CPU熔断漏洞分析306
6.2.1 乱序执行、异常处理和地址
空间306
6.2.2 修复方案:KPTI技术307
6.3 CPU“幽灵”漏洞317
6.3.1 分支预测317
6.3.2 攻击原理320
6.3.3 修复方案321
附录A 使用DS-5调试ARM64 Linux
内核325
附录B ARM64中的独占访问指令 341
附录C 图解MESI状态转换 345
附录D 高速缓存与内存屏障 350
内容摘要
本书基于Linux5.0内核的源代码讲述Linux内核的调试技巧和案例。本书共6章。主要内容包括并发与同步,中断管理,内核调试和性能优化,基于x86_64的宕机难题解决方案,基于ARM64的宕机题解决方案,安全漏洞的产生原理与修复方案等。
本书适合从事Linux系统开发人员、嵌入式系统开发人员及Android开发人员阅读,也可供计算机相关专业的师生阅读。
主编推荐
1.基于Linux 5.0内核和ARM64/x86_64架构,全面修订;
2.新增实战案例分析,帮助读者提升实战能力;
3.新增了内核调试和优化技巧,通过分析宕机案例和安全漏洞,总结调试技巧;
4.新增了ARM64架构等方面的内容;
5.新增了大量插图和表格。
相对于Linux 4.0内核,Linux 5.0内核中加入了很多新特性,并且很多内核的实现已经发生了很大变化。本书旨在介绍Linux内核中核心模块的实现,主要内容包括ARM64架构,ARM64在Linux内核中的实现,内存管理的理论知识和案例,以及进程管理的基础知识与案例等。
本书特色:
·基于Linux 5.0内核的源代码进行案例分析;
·新增了ARM64架构等方面的内容。
·涵盖实战案例,可操作性强。
— 没有更多了 —
以下为对购买帮助不大的评价