展开全部

主编推荐语

基于ARM64架构的Linux 4.x内核,大量图例描述数据结构之间的关系和函数的执行流程 结合代码分析,以通俗化语言全面剖析Linux内核。

内容简介

本书基于4.x版本的Linux内核,介绍了Linux内核的若干关键子系统的技术原理。本书主要内容包括内核的引导过程、内核管理和调度进程的技术原理、内核管理虚拟内存和物理内存的技术原理、内核处理异常和中断的技术原理,以及系统调用的实现方式等。此外,本书还详细讲解了内核实现的各种保护临界区的互斥技术,以及内核的文件系统。本书内容丰富,深入浅出,通过大量的图例来描述数据结构之间的关系和函数的执行流程,并结合代码分析,引导读者阅读和理解内核源代码。

目录

  • 版权信息
  • 内容提要
  • 序一
  • 序二
  • 资源与支持
  • 提交勘误
  • 与我们联系
  • 关于异步社区和异步图书
  • 前言
  • 第1章 内核引导和初始化
  • 1.1 到哪里读取引导程序
  • 1.2 引导程序
  • 1.2.1 入口_start
  • 1.2.2 标号reset
  • 1.2.3 函数_main
  • 1.2.4 函数run_main_loop
  • 1.3 内核初始化
  • 1.3.1 汇编语言部分
  • 1.3.2 C语言部分
  • 1.3.3 SMP系统的引导
  • 1.4 init进程
  • 第2章 进程管理
  • 2.1 进程
  • 2.2 命名空间
  • 2.3 进程标识符
  • 2.4 进程关系
  • 2.5 启动程序
  • 2.5.1 创建新进程
  • 2.5.2 装载程序
  • 2.6 进程退出
  • 2.6.1 线程组退出
  • 2.6.2 终止进程
  • 2.6.3 查询子进程终止原因
  • 2.7 进程状态
  • 2.8 进程调度
  • 2.8.1 调度策略
  • 2.8.2 进程优先级
  • 2.8.3 调度类
  • 2.8.4 运行队列
  • 2.8.5 任务分组
  • 2.8.6 调度进程
  • 2.8.7 调度时机
  • 2.8.8 带宽管理
  • 2.9 SMP调度
  • 2.9.1 进程的处理器亲和性
  • 2.9.2 对调度器的扩展
  • 2.9.3 限期调度类的处理器负载均衡
  • 2.9.4 实时调度类的处理器负载均衡
  • 2.9.5 公平调度类的处理器负载均衡
  • 2.9.6 迁移线程
  • 2.9.7 隔离处理器
  • 2.10 进程的安全上下文
  • 第3章 内存管理
  • 3.1 概述
  • 3.2 虚拟地址空间布局
  • 3.2.1 虚拟地址空间划分
  • 3.2.2 用户虚拟地址空间布局
  • 3.2.3 内核地址空间布局
  • 3.3 物理地址空间
  • ARM64架构的实现
  • 3.4 内存映射
  • 3.4.1 应用编程接口
  • 3.4.2 数据结构
  • 3.4.3 创建内存映射
  • 3.4.4 虚拟内存过量提交策略
  • 3.4.5 删除内存映射
  • 3.5 物理内存组织
  • 3.5.1 体系结构
  • 3.5.2 内存模型
  • 3.5.3 三级结构
  • 3.6 引导内存分配器
  • 3.6.1 bootmem分配器
  • 3.6.2 memblock分配器
  • 3.6.3 物理内存信息
  • 3.7 伙伴分配器
  • 3.7.1 基本的伙伴分配器
  • 3.7.2 分区的伙伴分配器
  • 3.7.3 根据可移动性分组
  • 3.7.4 每处理器页集合
  • 3.7.5 分配页
  • 3.7.6 释放页
  • 3.8 块分配器
  • 3.8.1 编程接口
  • 3.8.2 SLAB分配器
  • 3.8.3 SLUB分配器
  • 3.8.4 SLOB分配器
  • 3.9 不连续页分配器
  • 3.9.1 编程接口
  • 3.9.2 数据结构
  • 3.9.3 技术原理
  • 3.10 每处理器内存分配器
  • 3.10.1 编程接口
  • 3.10.2 技术原理
  • 3.11 页表
  • 3.11.1 统一的页表框架
  • 3.11.2 ARM64处理器的页表
  • 3.12 页表缓存
  • 3.12.1 TLB表项格式
  • 3.12.2 TLB管理
  • 3.12.3 地址空间标识符
  • 3.12.4 虚拟机标识符
  • 3.13 巨型页
  • 3.13.1 处理器对巨型页的支持
  • 3.13.2 标准巨型页
  • 3.13.3 透明巨型页
  • 3.14 页错误异常处理
  • 3.14.1 处理器架构特定部分
  • 3.14.2 用户空间页错误异常
  • 3.14.3 内核模式页错误异常
  • 3.15 反碎片技术
  • 3.15.1 虚拟可移动区域
  • 3.15.2 内存碎片整理
  • 3.16 页回收
  • 3.16.1 数据结构
  • 3.16.2 发起页回收
  • 3.16.3 计算扫描的页数
  • 3.16.4 收缩活动页链表
  • 3.16.5 回收不活动页
  • 3.16.6 页交换
  • 3.16.7 回收slab缓存
  • 3.17 内存耗尽杀手
  • 3.17.1 使用方法
  • 3.17.2 技术原理
  • 3.18 内存资源控制器
  • 3.18.1 使用方法
  • 3.18.2 技术原理
  • 3.19 处理器缓存
  • 3.19.1 缓存结构
  • 3.19.2 缓存策略
  • 3.19.3 缓存维护
  • 3.19.4 SMP缓存一致性
  • 3.19.5 利用缓存提高性能的编程技巧
  • 3.20 连续内存分配器
  • 3.20.1 使用方法
  • 3.20.2 技术原理
  • 3.21 userfaultfd
  • 3.21.1 使用方法
  • 3.21.2 技术原理
  • 3.22 内存错误检测工具KASAN
  • 3.22.1 使用方法
  • 3.22.2 技术原理
  • 第4章 中断、异常和系统调用
  • 4.1 ARM64异常处理
  • 4.1.1 异常级别
  • 4.1.2 异常分类
  • 4.1.3 异常向量表
  • 4.1.4 异常处理
  • 4.2 中断
  • 4.2.1 中断控制器
  • 4.2.2 中断域
  • 4.2.3 中断控制器驱动初始化
  • 4.2.4 Linux中断处理
  • 4.2.5 中断线程化
  • 4.2.6 禁止/开启中断
  • 4.2.7 禁止/开启单个中断
  • 4.2.8 中断亲和性
  • 4.2.9 处理器间中断
  • 4.3 中断下半部
  • 4.3.1 软中断
  • 4.3.2 小任务
  • 4.3.3 工作队列
  • 4.4 系统调用
  • 4.4.1 定义系统调用
  • 4.4.2 执行系统调用
  • 第5章 内核互斥技术
  • 5.1 信号量
  • 5.2 读写信号量
  • 5.3 互斥锁
  • 5.4 实时互斥锁
  • 5.5 原子变量
  • ARM64处理器的原子变量实现
  • 5.6 自旋锁
  • 5.7 读写自旋锁
  • 5.8 顺序锁
  • 5.8.1 完整版的顺序锁
  • 5.8.2 只提供序列号的顺序锁
  • 5.9 禁止内核抢占
  • 5.10 进程和软中断互斥
  • 5.11 进程和硬中断互斥
  • 5.12 每处理器变量
  • 5.12.1 静态每处理器变量
  • 5.12.2 动态每处理器变量
  • 5.12.3 访问每处理器变量
  • 5.13 每处理器计数器
  • 5.14 内存屏障
  • 5.14.1 编译器屏障
  • 5.14.2 处理器内存屏障
  • 5.14.3 MMIO写屏障
  • 5.14.4 隐含内存屏障
  • 5.14.5 ARM64处理器内存屏障
  • 5.15 RCU
  • 5.15.1 使用方法
  • 5.15.2 技术原理
  • 5.16 可睡眠RCU
  • 5.16.1 使用方法
  • 5.16.2 技术原理
  • 5.17 死锁检测工具lockdep
  • 5.17.1 使用方法
  • 5.17.2 技术原理
  • 第6章 文件系统
  • 6.1 概述
  • 6.1.1 用户空间层面
  • 6.1.2 硬件层面
  • 6.1.3 内核空间层面
  • 6.2 虚拟文件系统的数据结构
  • 6.2.1 超级块
  • 6.2.2 挂载描述符
  • 6.2.3 文件系统类型
  • 6.2.4 索引节点
  • 6.2.5 目录项
  • 6.2.6 文件的打开实例和打开文件表
  • 6.3 注册文件系统类型
  • 6.4 挂载文件系统
  • 6.4.1 系统调用mount
  • 6.4.2 绑定挂载
  • 6.4.3 挂载命名空间
  • 6.4.4 挂载根文件系统
  • 6.5 打开文件
  • 6.5.1 编程接口
  • 6.5.2 技术原理
  • 6.6 关闭文件
  • 6.7 创建文件
  • 6.7.1 使用方法
  • 6.7.2 技术原理
  • 6.8 删除文件
  • 6.8.1 使用方法
  • 6.8.2 技术原理
  • 6.9 设置文件权限
  • 6.9.1 使用方法
  • 6.9.2 技术原理
  • 6.10 页缓存
  • 6.10.1 地址空间
  • 6.10.2 基数树
  • 6.10.3 编程接口
  • 6.11 读文件
  • 6.11.1 编程接口
  • 6.11.2 技术原理
  • 6.12 写文件
  • 6.12.1 编程接口
  • 6.12.2 技术原理
  • 6.13 文件回写
  • 6.13.1 编程接口
  • 6.13.2 技术原理
  • 6.14 DAX
  • 6.14.1 使用方法
  • 6.14.2 技术原理
  • 6.15 常用的文件系统类型
  • 结束语
展开全部

评分及书评

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

    本书基于 4.x 版本的 Linux 内核,介绍了 Linux 内核的若干关键子系统的技术原理。本书主要内容包括内核的引导过程、内核管理和调度进程的技术原理、内核管理虚拟内存和物理内存的技术原理、内核处理异常和中断的技术原理,以及系统调用的实现方式等。此外,本书还详细讲解了内核实现的各种保护临界区的互斥技术,以及内核的文件系统。

      转发
      评论

    出版方

    人民邮电出版社

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