展开全部

主编推荐语

本书基于Linux5.0内核的源代码讲述Linux内核的调试技巧和案例。

内容简介

本书共6章。主要内容包括并发与同步,中断管理,内核调试和性能优化,基于x86_64的宕机难题解决方案,基于ARM64的宕机题解决方案,安全漏洞的产生原理与修复方案等。

本书适合从事Linux系统开发人员、嵌入式系统开发人员及Android开发人员阅读,也可供计算机相关专业的师生阅读。

目录

  • 版权信息
  • 内容提要
  • 第2版前言
  • 致谢
  • 如何阅读本书
  • 服务与支持
  • 第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 ARM64高层中断处理
  • 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 计算一个进程被阻塞了的时间
  • 4.12 关于Crash工具的调试技巧汇总
  • 第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 乱序执行、异常处理和地址空间
  • 6.2.2 修复方案:KPTI技术
  • 6.3 CPU“幽灵”漏洞
  • 6.3.1 分支预测
  • 6.3.2 攻击原理
  • 6.3.3 修复方案
  • 附录A 使用DS-5调试ARM64 Linux内核
  • A.1 DS-5社区版下载和安装
  • A.2 使用DS-5调试内核的优势
  • A.2.1 查看系统寄存器的值
  • A.2.2 内置ARMv8芯片手册
  • A.3 FVP模拟器使用
  • A.4 单步调试内核
  • A.4.1 调试配置
  • A.4.2 调试EL2的汇编代码
  • A.4.3 切换到EL1
  • A.4.4 打开MMU以及重定位
  • A.4.5 调试C语言代码
  • 附录B ARM64中的独占访问指令
  • 附录C 图解MESI状态转换
  • C.1 初始化状态为I
  • C.2 初始化状态为M
  • C.3 初始化状态为S
  • C.4 初始化状态为E
  • 附录D 高速缓存与内存屏障
  • D.1 存储缓冲区与写内存屏障
  • D.2 无效队列与读内存屏障
  • D.3 内存屏障指令总结
  • D.4 ARM64的内存屏障指令的区别
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    本书基于 Linux 5.0 内核的源代码讲述 Linux 内核的调试技巧和案例。本书共 6 章,主要内容包括并发与同步,中断管理,内核调试与性能优化,基于 x86_64 解决宕机难题,基于 ARM64 解决宕机难题,安全漏洞分析等。本书适合从事 Linux 系统开发人员、嵌入式系统开发人员及 Android 开发人员阅读,也可供计算机相关专业的师生阅读。

      转发
      评论

    出版方

    人民邮电出版社

    人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。