《深入Linux内核架构与底层原理》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:刘京洋,韩方著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121322907
  • 页数:383 页
图书介绍:Linux系统级的底层技术和Linux内核的上层技术原理。从上而下理解性的宏观分析各个模块和微观的重要细节算法实现。本书的涉及到的深度会非常深,广度上也会比较广,但是讲解上即使是最深入的地方也会着重平实的理解性的描述,而不是过于技术的逻辑堆叠。内容上不是纯粹的内核技术细节,而更多的侧重linux系统中高级使用所需要的内核和系统底层的相关知识。

第1章 总览 1

1.1 简介 1

1.2 Linux学习曲线和职业曲线 4

1.2.1 给自己定级 4

1.2.2 使用者 8

1.2.3 开发者 17

1.3 如何形成一个内核 24

1.3.1 内核形成过程 24

1.3.2 Exokernels和Anykernel 25

1.3.3 内核为何使用C语言 26

第2章 内核架构 29

2.1 常见架构范式与核心系统 29

2.1.1 Linux内核上下层通信方式 29

2.1.2 横向系统和纵向系统 32

2.2 基础功能元素 32

2.2.1 模块支持 32

2.2.2 模块编程可以使用的内核组件 37

2.3 特殊硬件框架 39

2.4 特殊软件机制 41

第3章 内核数据结构 47

3.1 链表与哈希表 47

3.1.1 双向链表 48

3.1.2 hlist 48

3.1.3 ScatterList 50

3.1.4 llist 51

3.2 其他数据结构 53

3.2.1 树 53

3.2.2 FIFO文件 53

3.2.3 位数组bitmap 57

第4章 Linux系统的启动 59

4.1 启动的硬件支持 59

4.1.1 固件 59

4.1.2 磁盘分区管理 60

4.2 Bootloader和内核二进制 62

4.2.1 Bootloader 62

4.2.2 内核二进制 63

4.3 Linux的启动原理 64

4.3.1 Linux的最小系统制作和启动 65

4.3.2 initrd文件系统 66

4.3.3 EFI启动桩 68

4.3.4 启动管理程序 69

4.3.5 Linux内核启动顺序 74

第5章 进程 75

5.1 进程原理 75

5.1.1 服务与进程 75

5.1.2 资源与进程 76

5.1.3 进程概念 76

5.1.4 父子关系 77

5.1.5 ptrace系统调用 82

5.2 进程调度 90

5.2.1 调度策略 91

5.2.2 进程调度策略的配置 92

5.2.3 公平问题 92

5.2.4 内核线程的调度 93

5.3 资源 94

5.3.1 资源锁 94

5.3.2 资源限制 96

5.3.3 进程对系统内存的使用 97

5.4 多进程与进程通信 98

5.4.1 多进程模型 98

5.4.2 用户进程间通信 99

5.4.3 内核与用户空间的进程通信 103

5.4.4 Netlink功能模块 105

5.4.5 其他Netlink种类 106

5.4.6 genetlink的使用 108

5.4.7 inet_diag模块 112

5.4.8 RTNETLINK 116

第6章 Linux内核内存管理 121

6.1 内存模型 121

6.1.1 内存模型概览 121

6.1.2 内存组织方式 122

6.2 申请和释放内存 124

6.2.1 高端内存 124

6.2.2 设备内存映射 125

6.2.3 启动时内存的申请和释放:bootmem 126

6.2.4 Mempool 126

6.2.5 CMA(连续内存分配器) 127

6.2.6 伙伴算法 127

6.2.7 slab 127

6.2.8 用户端内存管理基础组件 128

6.3 内存组件 129

6.3.1 内存回收算法(PFRA) 129

6.3.2 其他内存功能组件 130

6.3.3 内存压缩 132

6.3.4 BDI(backing device info) 133

第7章 安全 137

7.1 概览 137

7.2 密码学 138

7.2.1 密码学概览 138

7.2.2 摘要 139

7.2.3 加密 140

7.2.4 认证 141

7.2.5 数字签名 142

7.2.6 秘钥交换 142

7.3 Linux用户和权限系统 143

7.3.1 系统启动时的权限 143

7.3.2 系统启动后的权限 144

7.3.3 内核中的用户和权限模型 145

7.3.4 Linux安全体系 146

7.4 网络安全 148

7.4.1 netfilter概览 148

7.4.2 Filter(LSF、BPF、eBPF) 151

7.5 函数调用的调试 163

7.6 内核调试 164

7.7 PAM和Apparmor 170

7.8 内核安全 175

7.9 常用安全工具和项目 175

第8章 网络 180

8.1 网络架构 180

8.2 socket 185

8.2.1 socket简介 185

8.2.2 类型与接口 186

8.2.3 Linux socket连接模型 190

8.3 IP 191

8.3.1 IP管理 191

8.3.2 IP隧道 193

8.4 TCP 201

8.4.1 TCP存在的原因 201

8.4.2 TCP的连接状态 202

8.4.3 TCP拥塞控制 207

8.4.4 TCP其他的功能特点 215

8.5 网络服务质量与安全性 217

8.5.1 TCP安全性 217

8.5.2 QoS 221

8.5.3 NAT 225

第9章 总线与设备变动 229

9.1 PCI 229

9.2 USB 238

9.2.1 USB概览 238

9.2.2 USB子系统上层(USB设备驱动层) 239

9.2.3 USB子系统的中层(USB core)和下层 242

9.2.4 Platform总线 244

9.3 用户空间的设备管理 244

9.3.1 设备变化通知用户端 245

9.3.2 设备类型 247

9.3.3 内核数据结构的面向用户组织KObject 253

第10章 二进制 254

10.1 函数调用 254

10.1.1 函数调用约定 254

10.1.2 栈结构 258

10.2 Linux的二进制兼容性问题 260

10.2.1 进程的执行 260

10.2.2 同操作系统下的ABI 261

10.2.3 内核版本 262

10.2.4 库 263

10.2.5 编译器 265

10.3 ELF文件执行原理 265

10.3.1 ELF文件分类 265

10.3.2 ELF文件格式 266

10.3.3 进程加载器 280

10.3.4 链接与执行 281

10.3.5 ELF文件的初始化 284

10.3.6 进程初始化前的加载 285

10.3.7 链接环境变量 287

10.3.8 内核加载ELF 288

10.3.9 Audit接口 289

10.3.10 一个简单的ELF解析程序 289

10.4 ELF的安全性 292

10.4.1 二进制修改 293

10.4.2 二进制格式的病毒和木马 297

10.4.3 二进制安全特性简介 298

第11章 存储 301

11.1 磁盘管理 301

11.2 存储协议 304

11.3 通用块层抽象 314

11.3.1 通用块层功能概览 314

11.3.2 数据完整性校验 316

11.3.3 设备抽象 317

11.3.4 BIO和bio_set 317

11.3.5 request 318

11.3.6 request_queue 319

11.3.7 电梯算法 320

11.4 缓存层 330

11.4.1 BDI:缓存设备 330

11.4.2 页回收 332

11.4.3 缓存机制 334

11.4.4 缓存页的状态 337

11.5 文件系统 338

11.5.1 文件系统的种类和选用 339

11.5.2 拥有特殊功能的文件系统 339

11.5.3 其他领域的文件系统 343

11.5.4 文件系统的意义 344

11.5.5 文件系统的抽象:VFS 345

11.5.6 ext4 346

11.6 存储系统 348

11.6.1 存储形式 348

11.6.2 存储格式 350

11.6.3 分布式存储系统 350

第12章 虚拟化与云 358

12.1 常见的虚拟化方案 358

12.2 虚拟文件系统 361

12.3 cgroup 363

12.4 Docker 369

第13章 硬件专用子系统 374

13.1 无线子系统 374

13.2 音频子系统 380