更新时间:2019-01-05 06:09:13
封面
版权信息
对本书的赞誉
前言
Linux体系结构
推荐预备知识
本书章节概述
致谢
第1章 进程与线程
1.1 进程和线程的概念
1.1.1 进程的历史
1.1.2 线程的不同玩法
1.2 Linux对进程和线程的实现
1.2.1 Linux中的进程实现
1.2.2 进程创建之后
1.2.3 内核线程和进程的区别
1.2.4 用户线程库pthread
1.3 进程的调度
1.3.1 进程调度机制的架构
1.3.2 进程切换的原理
1.3.3 调度中的CPU亲和度
1.4 在应用程序中管理进程和线程
1.4.1 Memcached线程池模型分析
1.4.2 Nginx进程模型分析
1.5 处理进程和线程的相关工具
1.5.1 开发环境调试线程
1.5.2 进程崩溃调试方法
1.5.3 strace工具
1.5.4 SystemTap工具
1.5.5 DTrace工具
1.6 本章小结
第2章 并发
2.1 什么是并发
2.1.1 并发是如何产生的
2.1.2 并发会带来什么问题
2.1.3 如何解决并发带来的问题
2.2 操作系统会在哪些场景遇到并发
2.3 Linux中并发工具的实现
2.3.1 原子变量
2.3.2 自旋锁
2.3.3 信号量
2.3.4 互斥锁
2.3.5 读写锁
2.3.6 抢占
2.3.7 per-cpu变量
2.3.8 RCU机制
2.3.9 内存屏障
2.4 常见开源软件中的并发问题分析
2.4.1 Nginx原子性
2.4.2 Memcached中的互斥锁
2.4.3 Redis无锁解决方案
2.4.4 Linux中惊群问题分析
2.4.5 解决MyCat同步问题
2.4.6 false-sharing问题解决方案
2.5 本章小结
第3章 内存管理
3.1 为什么需要内存管理
3.2 MMU和地址空间
3.2.1 虚拟地址、线性地址、物理地址
3.2.2 MMU的内存管理机制
3.3 Linux中的分段和分页机制
3.3.1 分段机制
3.3.2 分页机制
3.4 Linux的内存管理
3.4.1 物理内存管理
3.4.2 进程地址空间管理
3.5 Linux的内存分配和管理
3.5.1 物理内存分配算法
3.5.2 slab分配器
3.5.3 内核态内存管理
3.5.4 用户态内存申请
3.6 栈内存分配和管理
3.7 内存管理案例分析
3.7.1 Memcached内存管理机制分析
3.7.2 Redis内存管理机制分析
3.8 本章小结
第4章 中断机制
4.1 x86系统的中断机制
4.1.1 x86中断架构
4.1.2 x86在保护模式下的中断
4.2 Linux对中断的支持和实现
4.2.1 初始化IRQ中断门
4.2.2 中断响应流程
4.2.3 中断回调handler注册过程
4.3 Linux加速中断处理的机制
4.3.1 软中断
4.3.2 tasklet
4.3.3 工作队列
4.4 系统调用
4.5 时钟中断
4.6 信号处理机制
4.7 Nginx信号处理机制
4.8 本章小结
第5章 输入输出
5.1 I/O在Linux中的生命周期
5.1.1 vfs层
5.1.2 文件系统层
5.1.3 Block层
5.1.4 scsi层
5.1.5 I/O流程总结