科技
类型
6.6
豆瓣评分
可以朗读
语音朗读
630千字
字数
2019-02-01
发行日期
展开全部
主编推荐语
基于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 常用的文件系统类型
- 结束语
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。