《Linux内核精析》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:郑阿奇编
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2013
  • ISBN:9787121192111
  • 页数:796 页
图书介绍:学习Linux的关键在于对内核的理解和把握,本书作者长期从事Linux系统特别是嵌入式系统产品的研发,积累了丰富的经验。书中全面、系统、深入地介绍了Linux,对Linux内核进行了深度的剖析。全书共15章,包括概述、Linux内核启动、进程、进程地址空间、进程的调度、内存管理、进程间通信、系统调用、内核同步、设备驱动程序、中断、时钟、文件系统、ext文件系统和内核模块。每一章的内容都深入浅出,文字和程序相结合,每一部分的说明都很详细,让读者能看得懂、能理解。

第1章 概述 1

1.1 Linux的内存管理机制 1

1.2 Linux的基本组成 3

1.2.1 进程 3

1.2.2 进程间通信 4

1.2.3 内存管理 4

1.2.4 设备驱动 5

1.2.5 中断 6

1.2.6 时钟 6

1.2.7 文件系统 6

1.2.8 内核模块 7

1.3 本章小结 7

第2章 Linx内核启动 8

2.1 BOIS启动阶段 8

2.2 实模式setup阶段 9

2.3 保护模式startup_32阶段 14

2.4 内核启动start_kernel 17

2.5 本章小结 39

第3章 进程 40

3.1 进程的表示 40

3.1.1 进程描述符 40

3.1.2 命名空间 47

3.1.3 进程标识 52

3.2 进程关系 63

3.3 进程的复制 64

3.3.1 写时复制 64

3.3.2 执行系统调用 65

3.4 新进程启动 94

3.5 进程的切换 103

3.6 进程的退出 106

3.7 本章小结 118

第4章 进程地址空间 119

4.1 进程虚拟地址空间 119

4.1.1 进程地址空间的布局 120

4.1.2 进程地址空间布局的创建 123

4.2 线性区 125

4.2.1 虚拟内存区域的表示 127

4.2.2 虚拟内存区域的操作 131

4.2.3 缺页的异常处理 150

4.2.4 堆的管理 157

4.3 本章小结 159

第5章 进程的调度 160

5.1 数据结构 160

5.1.1 调度器类 162

5.1.2 就绪队列 164

5.1.3 调度实体 166

5.2 进程优先级 168

5.2.1 优先级内核表示 168

5.2.2 优先级的计算 171

5.2.3 计算负荷权重 173

5.2.4 核心调度器 175

5.3 CFS调度器 176

5.3.1 CFS调度器对象 176

5.3.2 CFS调度器的管理结构 177

5.3.3 CFS调度器操作 178

5.3.4 CFS队列操作 182

5.3.5 周期性调度器 186

5.3.6 进程加入就绪队列 189

5.3.7 选择下一个进程 192

5.3.8 唤醒进程 195

5.3.9 新进程处理 202

5.4 实时调度类 204

5.4.1 实时进程的数据结构 204

5.4.2 实时调度器操作 205

5.5 本章小结 207

第6章 内存管理 208

6.1 内存管理的框架 208

6.1.1 非一致内存访问(NUMA) 208

6.1.2 内存管理区 210

6.1.3 物理内存地址空间 214

6.2 内存管理初始化 216

6.2.1 建立数据结构 216

6.2.2 启动过程内存管理的初始化 222

6.2.3 页表的初始化 230

6.2.4 内存管理结构的初始化 233

6.3 伙伴算法 242

6.3.1 伙伴算法初始化与释放 243

6.3.2 内存分配API 248

6.3.3 内核中不连续页的分配 254

6.3.4 内核映射 259

6.4 slab分配器 264

6.4.1 slab分配器的原理 264

6.4.2 slab分配器的实现 265

6.4.3 通用对象 282

6.5 slub分配器 284

6.5.1 slub分配器的原理 284

6.5.2 slub分配器的初始化 287

6.5.3 slub内存的分配 289

6.5.4 slub内存的释放 295

6.6 本章小结 297

第7章 进程间通信 298

7.1 管道 298

7.1.1 管道相关的数据结构 298

7.1.2 管道的创建 300

7.1.3 管道的撤销 306

7.1.4 向管道写入数据 307

7.1.5 从管道读取数据 311

7.2 FIFO 314

7.3 System V IPC 317

7.3.1 IPC信号量 317

7.3.2 消息队列 321

7.3.3 共享内存 323

7.4 信号 324

7.4.1 信号发送 327

7.4.2 信号传递与捕获 338

7.5 本章小结 346

第8章 系统调用 347

8.1 系统调用简介 347

8.2 系统调用的实现 347

8.3 系统调用的参数传递 363

8.4 异常表 364

8.5 本章小结 367

第9章 内核同步 368

9.1 原子操作 368

9.2 自旋锁 370

9.3 读/写自旋锁 372

9.4 信号量 372

9.5 RCU机制 374

9.6 屏障 377

9.7 互斥量 378

9.8 本章小结 379

第10章 设备驱动程序 380

10.1 I/O体系结构 380

10.2 设备文件 381

10.2.1 字符设备、块设备和其他设备 381

10.2.2 主、从设备号的表示 383

10.3 字符设备注册 383

10.3.1 数据结构 383

10.3.2 字符设备的注册过程 385

10.4 与文件系统关联 389

10.4.1 inode中的设备文件成员 389

10.4.2 标准文件操作 390

10.5 字符设备操作 391

10.5.1 字符设备的表示 391

10.5.2 打开设备文件 392

10.6 块设备操作 394

10.6.1 块设备的处理 394

10.6.2 块设备的表示 397

10.6.3 向系统添加硬盘和分区 404

10.6.4 请求结构 407

10.6.5 BIO 409

10.6.6 提交请求 411

10.6.7 I/O调度 415

10.7 资源分配 416

10.7.1 资源管理 416

10.7.2 I/O内存 418

10.8 总线系统 419

10.8.1 通用驱动程序模型 419

10.8.2 PCI总线 432

10.8.3 USB总线 438

10.9 本章小结 446

第11章 中断 447

11.1 中断处理与中断描述符 447

11.2 中断的初始化 450

11.3 中断请求队列的初始化 460

11.4 中断的处理 464

11.5 中断与异常的返回 475

11.6 软中断 477

11.7 tasklet 483

11.8 工作队列 487

11.9 本章小结 492

第12章 时钟 493

12.1 低分辨率定时器 493

12.1.1 数据结构 494

12.1.2 动态定时器 495

12.2 通用时钟框架 501

12.2.1 clocksource概述 502

12.2.2 clocksource操作 505

12.2.3 tickless机制 507

12.3 高分辨率定时器 520

12.3.1 高分辨率定时器管理结构 521

12.3.2 高分辨率定时器的初始化 525

12.3.3 高分辨率定时器操作 529

12.3.4 高分辨率定时器的实现 535

12.3.5 动态时钟 541

12.4 时钟中断处理 552

12.5 软件定时器 560

12.5.1 软件定时器的初始化 560

12.5.2 软件定时器的注册与处理 562

12.6 本章小结 563

第13章 文件系统 564

13.1 虚拟文件系统管理 564

13.2 通用文件模型 565

13.2.1 VFS的超级块对象 565

13.2.2 VFS的inode结构 570

13.2.3 VFS的文件对象 575

13.2.4 VFS的目录对象 578

13.2.5 与进程相关的文件 579

13.3 文件的类型 581

13.3.1 磁盘文件 581

13.3.2 网络文件 581

13.3.3 特殊文件 581

13.4 虚拟文件系统处理 581

13.4.1 文件系统类型注册 581

13.4.2 文件系统的挂载 584

13.4.3 文件系统的卸载 606

13.4.4 路径定位 609

13.4.5 文件的打开与关闭 630

13.4.6 文件的读/写 648

13.5 proc文件系统 669

13.5.1 数据结构 669

13.5.2 proc文件系统的初始化 672

13.5.3 安装proc文件系统 673

13.5.4 proc数据项管理 679

13.6 sysfs文件系统 701

13.6.1 数据结构 701

13.6.2 安装sysfs文件系统 703

13.6.3 文件与目录的操作 706

13.7 本章小结 714

第14章 ext文件系统 715

14.1 简介 715

14.2 ext2文件系统的物理结构 716

14.3 ext2文件系统的数据结构 717

14.3.1 超级块 717

14.3.2 组描述符 720

14.3.3 索引节点表 720

14.3.4 目录和文件 723

14.3.5 ext2文件系统内存中的结构 724

14.4 ext2文件系统操作 726

14.5 ext2磁盘空间管理 758

14.5.1 创建索引节点inode 759

14.5.2 删除索引节点inode 766

14.5.3 释放数据块 770

14.6 ext3文件系统 772

14.7 本章小结 774

第15章 内核模块 775

15.1 模块的实现 775

15.1.1 模块的表示 776

15.1.2 模块的依赖关系 780

15.2 模块的添加与移除 781

15.3 模块的自动加载 793

15.4 本章小结 795