本书基于Linux 5.0内核的源代码讲述Linux内核的调试技巧和案例。本书共6章,主要内容包括并发与同步,中断管理,内核调试与性能优化,基于x86_64解决宕机难题,基于ARM64解决宕机难题,安全漏洞分析等。
本书适合从事Linux系统开发人员、嵌入式系统开发人员及Android开发人员阅读,也可供计算机相关专业的师生阅读。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 奔跑吧Linux内核(卷2调试与案例分析第2版) |
分类 | 计算机-操作系统 |
作者 | 笨叔 |
出版社 | 人民邮电出版社 |
下载 | ![]() |
简介 | 内容推荐 本书基于Linux 5.0内核的源代码讲述Linux内核的调试技巧和案例。本书共6章,主要内容包括并发与同步,中断管理,内核调试与性能优化,基于x86_64解决宕机难题,基于ARM64解决宕机难题,安全漏洞分析等。 本书适合从事Linux系统开发人员、嵌入式系统开发人员及Android开发人员阅读,也可供计算机相关专业的师生阅读。 作者简介 笨叔,Linux内核爱好者,出版过《奔跑吧Linux内核》《奔跑吧Linux内核入门篇》。创建了奔跑吧Linux社区,为广大Linux爱好者布道。 目录 第1章 并发与同步 1.1 原子操作 1.1.1 原子操作 1.1.2 atomic_add()函数分析 1.1.3 比较并交换指令 1.2 内存屏障 1.2.1 经典内存屏障接口函数 1.2.2 内存屏障扩展接口函数 1.3 经典自旋锁 1.3.1 自旋锁的实现 1.3.2 自旋锁的变体 1.3.3 spin_lock()和raw_spin_lock()函数 1.4 MCS锁 1.4.1 快速申请通道 1.4.2 中速申请通道 1.4.3 慢速申请通道 1.4.4 释放锁 1.5 排队自旋锁 1.5.1 快速申请通道 1.5.2 中速申请通道 1.5.3 慢速申请通道 1.5.4 释放锁 1.5.5 案例分析:为什么这里pending域要清零 1.5.6 小结 1.6 信号量 1.6.1 信号量简介 1.6.2 小结 1.7 互斥锁 1.7.1 mutex数据结构 1.7.2 互斥锁的快速通道 1.7.3 互斥锁的慢速通道 1.7.4 乐观自旋等待机制 1.7.5 mutex_unlock()函数分析 1.7.6 案例分析 1.7.7 小结 1.8 读写锁 1.9 读写信号量 1.9.1 rw_semaphore数据结构 1.9.2 申请读者类型信号量 1.9.3 释放读者类型信号量 1.9.4 申请写者类型信号量 1.9.5 释放写者类型信号量 1.9.6 小结 1.10 RCU 1.10.1 关于RCU的一个简单例子 1.10.2 经典RCU和Tree RCU 1.11 案例分析:内存管理中的锁 1.11.1 mm->mmap_sem 1.11.2 mm->page_table_lock 1.11.3 PG_Locked 1.11.4 anon_vma->rwsem 1.11.5 zone->lru_lock 1.11.6 RCU 1.11.7 RCU停滞检测 第 2章 中断管理 2.1 中断控制器 2.1.1 中断状态和中断触发方式 2.1.2 ARM GIC-V2中断控制器 2.1.3 关于ARM Vexpress V2P开发板的例子 2.1.4 关于QEMU虚拟机平台的例子 2.2 硬件中断号和Linux中断号的映射 2.3 注册中断 2.4 ARM64底层中断处理 2.4.1 异常向量表 2.4.2 IRQ处理 2.4.3 栈框 2.4.4 保存中断上下文 2.4.5 恢复中断上下文 2.5 高层中断处理 2.5.1 汇编跳转 2.5.2 handle_arch_irq处理 2.5.3 小结 2.6 软中断和tasklet 2.6.1 软中断 2.6.2 tasklet 2.6.3 local_bh_disable()和local_bh_enable()函数分析 2.6.4 小结 2.7 工作队列 2.7.1 工作队列的相关数据结构 2.7.2 工作队列初始化 2.7.3 创建工作队列 2.7.4 添加和调度一个work 2.7.5 处理一个work 2.7.6 取消一个work 2.7.7 和调度器的交互 2.7.8 小结 第3章 内核调试与性能优化 3.1 打造ARM64实验平台 3.1.1 使用O0优化等级编译内核 3.1.2 QEMU虚拟机 Debian实验平台 3.1.3 单步调试ARM64 Linux内核 3.1.4 以图形化方式单步调试内核 3.1.5 单步调试head.S文件 3.2 ftrace 3.2.1 irqs跟踪器 3.2.2 function跟踪器 3.2.3 动态ftrace 3.2.4 事件跟踪 3.2.5 添加跟踪点 3.2.6 trace-cmd和kernelshark 3.2.7 跟踪标记 3.2.8 小结 3.3 内存检测 3.3.1 slub_debug 3.3.2 KASAN内存检测 3.4 死锁检测 3.5 内核调试方法 3.5.1 printk 3.5.2 动态输出 3.5.3 oops分析 3.5.4 BUG_ON()和WARN_ON()宏分析 3.6 使用perf优化性能 3.6.1 安装perf工具 3.6.2 perf list命令 3.6.3 perf record/report命令 3.6.4 perf stat命令 3.6.5 perf top命令 3.7 SystemTap 3.8 eBPF和BCC 3.8.1 BCC工具集 3.8.2 编写BCC脚本 第4章 基于x86_64解决宕机难题 4.1 Kdump和Crash工具 4.2 x86_64架构基础知识 4.2.1 通用寄存器 4.2.2 函数参数调用规则 4.2.3 栈的结构 4.2.4 寻址方式 4.3 在CentOS 7.6中安装和配置Kdump和Crash 4.4 crash命令 4.5 案例1:一个简单的宕机案例 4.6 案例2:访问被删除的链表 4.7 案例3:一个真实的驱动崩溃案例 4.8 死锁检查机制 4.9 案例4:一个简单的死锁案例 4.10 案例5:分析和推导参数的值变量 4.11 案例6:一个复杂的宕机案例 4.11.1 问题描述 4.11.2 分析ps进程 4.11.3 分析test进程 4.11.4 计算一个进程被阻塞了多长时间 第5章 基于ARM64解决宕机难题 5.1 搭建Kdump实验环境 5.2 案例1:一个简单的宕机案例 5.3 案例2:恢复函数调用栈 5.4 案例3:分析和推导参数的值 5.5 案例4:一个复杂的宕机案例 5.5.1 分析ps进程 5.5.2 分析test进程 第6章 安全漏洞分析 6.1 侧信道攻击 6.2 CPU熔断漏洞分析 6.2.1 乱序执行、异常处理和 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。