当前位置:首页 > 工业技术
Linux技术内幕
Linux技术内幕

Linux技术内幕PDF电子书下载

工业技术

  • 电子书积分:21 积分如何计算积分?
  • 作 者:罗秋明著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:7302451001
  • 页数:774 页
图书介绍:教材首先将从一个C程序源代码编译过程入手引入Linux进程映像的概念,继而以进程主体的需求引入Linux进程空间虚存管理和物理内存管理。在上述“实在”概念基础之上再讨论多Linux进程切换和进程调度,进而讨论Linux进程间通信、同步等问题。以上是第一篇的基础内容,第二篇则是以文件系统为骨干,将文件系统、设备管理、页缓存及换页等庞杂的功能通过文件系统联系到一起。各部分内容联系紧密,相互间的作用已由明确的接口划分。
《Linux技术内幕》目录
标签:内幕 技术

第一篇 基本框架 3

第1章 Linux内核概述 3

1.1 UNIX与Linux 3

1.1.1 UNIX 3

1.1.2 Linux 3

1.1.3 宏内核与微内核 6

1.1.4 Linux内核源码及版本 6

1.2 Linux内核模型 11

1.2.1 多视角下的内核 11

1.2.2 功能模型 14

1.2.3 内存模型 15

1.2.4 时空模型 16

1.2.5 特权模型 17

1.3 本书局限性 18

小结 18

第2章 进程影像 20

2.1 从源代码到进程 20

2.1.1 源代码、目标文件 20

2.1.2 可执行文件与进程影像 26

2.2 proc中的进程 32

2.2.1 进程内存空间 32

2.2.2 进程运行状态等信息 33

2.3 进程空间 35

2.3.1 进程空间描述符 36

2.3.2 虚存区域VMA 40

2.3.3 VMA属性 45

2.4 ELF可执行文件装入过程 48

2.4.1 ELF装入函数 49

2.4.2 ELF格式 49

2.5 进程空间的动态变化 54

2.5.1 VMA上的操作 54

2.5.2 文件映射 55

2.5.3 堆的调整 58

2.5.4 栈的变化 60

2.6 并发的进程空间 60

小结 61

第3章 虚拟空间的物理支撑 63

3.1 物理内存组织与管理 64

3.1.1 节点与内存域 64

3.1.2 物理页帧 79

3.1.3 buddy系统 84

3.1.4 页帧迁移 94

3.1.5 内存热插拔 98

3.2 地址映射与页表 99

3.2.1 分页机制与页表 99

3.2.2 缺页异常 103

3.3 内核空间 104

3.3.1 一致映射与高端内存 104

3.3.2 一致内存分配 108

3.3.3 非一致内存分配 109

3.3.4 slub分配器 115

小结 130

第4章 进程组织与基础行为 131

4.1 进程组织管理 131

4.1.1 PCB进程控制块 131

4.1.2 命名空间 135

4.1.3 进程标识 141

4.1.4 进程间关系 148

4.1.5 进程资源限制 151

4.2 进程创建与撤销 152

4.2.1 进程创建 152

4.2.2 execve系统调用 159

4.2.3 内核线程 160

4.2.4 Linux进程树 162

4.2.5 进程的撤销 167

4.3 进程切换 167

4.3.1 切换时机 168

4.3.2 切换过程 169

4.3.3 切换示例 178

小结 181

第5章 进程调度与负载均衡 193

5.1 调度与均衡基本框架 193

5.2 进程状态与转换 194

5.2.1 进程调度状态 194

5.2.2 进程状态变迁 196

5.3 进程调度 198

5.3.1 调度框架 198

5.3.2 完全公平调度 215

5.3.3 实时调度 230

5.3.4 STOP和IDLE调度类 234

5.3.5 调度控制与proc接口 236

5.4 负载均衡 241

5.4.1 处理器层次结构 242

5.4.2 调度的层次管理 243

5.4.3 CFS任务的负载均衡 250

5.4.4 实时负载均衡 254

小结 258

第6章 进程间通信与同步 259

6.1 管道通信 260

6.1.1 无名管道 260

6.1.2 命名管道 261

6.1.3 管道数据结构 261

6.1.4 管道操作 266

6.2 SystemVIPC 269

6.2.1 IPC标识与命名空间 269

6.2.2 IPC公共框架 275

6.2.3 IPC信号量 279

6.2.4 IPC消息队列 283

6.2.5 IPC共享内存 287

6.3 信号 290

6.3.1 信号分类 290

6.3.2 数据结构 294

6.3.3 信号产生与发送 302

6.3.4 信号的递交和处理 305

小结 312

第7章 内核活动 313

7.1 中断分类 313

7.1.1 x86的中断和异常 314

7.1.2 后半部机制与软中断 315

7.1.3 中断相关概念的关系 315

7.2 中断处理 316

7.2.1 中断号 317

7.2.2 中断描述符表 320

7.2.3 公共入口 325

7.2.4 异常处理 329

7.3 高层中断处理 332

7.3.1 转向高层处理 333

7.3.2 中断的高层数据结构 336

7.3.3 中断返回处理 342

7.3.4 中断的线程化 349

7.4 中断嵌套与中断管理 350

7.4.1 中断嵌套与中断上下文 350

7.4.2 中断管理 353

7.5 软中断和tasklet 355

7.5.1 中断的下半部 355

7.5.2 软中断执行时机 356

7.5.3 相关数据结构 360

7.5.4 软中断的执行 361

7.5.5 软中断的相关操作 363

7.5.6 tasklet 365

7.6 工作队列 369

7.6.1 工作队列机制 369

7.6.2 cmwq数据结构 371

7.6.3 工作项 371

7.6.4 cmwq工作队列 375

7.6.5 工作者池worker pool 383

7.6.6 并发度、应急处理等 386

7.7 系统调用 388

7.7.1 POSIX API、C库和系统调用 388

7.7.2 系统调用的实现 389

小结 399

第8章 时间管理 400

8.1 时间管理框架 400

8.1.1 基本概念 400

8.1.2 时间中断和事件 406

8.1.3 clock event device与tick device 407

8.1.4 TIMER SOFTIRQ软中断 413

8.1.5 timekeeper 414

8.2 定时器 416

8.2.1 低分辨率定时器 416

8.2.2 高精度定时器 419

8.2.3 模拟tick事件 422

8.2.4 通知链技术 423

小结 424

第9章 内核并发与同步 426

9.1 同步的需求 426

9.1.1 内核并发情形 426

9.1.2 内核抢占 429

9.2 内核共享变量的保护 432

9.2.1 被保护对象 432

9.2.2 保护原则 433

9.2.3 禁止内核并发 435

9.3 内核同步手段 437

9.3.1 原子操作 437

9.3.2 自旋锁、读写锁和顺序锁 439

9.3.3 RCU机制 444

9.3.4 顺序和屏障 447

9.3.5 信号量与互斥量 448

9.3.6 等待队列与完成变量 452

9.3.7 每CPU变量 455

小结 458

第二篇 盘根错节的文件系统 461

第10章 文件系统 461

10.1 文件系统的抽象层次 461

10.1.1 进程视角下的文件 462

10.1.2 VFS虚拟文件系统 468

10.1.3 多角度分层模型 472

10.2 VFS核心对象 475

10.2.1 文件对象 475

10.2.2 目录项对象 479

10.2.3 索引节点对象 484

10.2.4 超级块对象 490

10.3 文件系统类型与挂载 495

10.3.1 文件系统类型与注册 495

10.3.2 挂载操作 503

10.3.3 挂载模式 513

10.3.4 特殊文件系统 519

小结 525

第11章 页缓存和块缓存 526

11.1 页高速缓存 527

11.1.1 address_space 528

11.1.2 页高速缓存的组织 530

11.1.3 反向映射 534

11.2 块高速缓存 540

11.2.1 块缓存 540

11.2.2 LRU块缓存 542

11.2.3 块缓存操作 543

小结 547

第12章 VFS的文件操作 548

12.1 VFS系统调用 548

12.2 open()与close()系统调用 549

12.2.1 open的框架 549

12.2.2 文件定位过程 552

12.2.3 close()系统调用 558

12.3 读/写系统调用 558

12.3.1 入口代码 560

12.3.2 通用write写例程 568

12.3.3 通用read读例程 570

12.3.4 其他读写细节 583

12.3.5 向BIO层提交请求 587

小结 588

第13章 ext2文件系统 590

13.1 ext2磁盘数据结构 590

13.1.1 磁盘分区的组织 590

13.1.2 块组描述符和位图 591

13.1.3 盘上和内存数据结构 592

13.2 ext2超级块 593

13.2.1 ext2超级块数据结构 593

13.2.2 挂载与访问 597

13.3 ext2索引节点 598

13.3.1 盘上ext2索引节点 599

13.3.2 内存ext2索引节点 601

13.3.3 inode_operations 603

13.3.4 ext2地址空间与文件操作 604

13.4 目录及目录项 607

13.4.1 ext2_dir_entry 607

13.4.2 ext2_lookup() 609

小结 610

第14章 页缓存同步(回写) 611

14.1 同步/回写、交换与回收 611

14.2 脏页同步(回写) 613

14.2.1 回写机制演变 613

14.2.2 同步时机与框架 615

14.2.3 基本数据结构 617

14.3 回写接口 627

14.3.1 sync系列系统调用 627

14.3.2 sys_sync() 628

14.3.3 sys_syncfs 633

14.3.4 单个文件的同步 635

14.3.5 被动回写 637

14.4 回写工作队列 638

14.4.1 初始化 638

14.4.2 工作队列处理函数 640

14.5 回写操作 643

14.5.1 do_writepages() 644

14.5.2 ext2_writepages() 645

14.5.3 回写等待 647

小结 649

第15章 内存回收与交换 650

15.1 页帧回收 650

15.1.1 直接释放 650

15.1.2 LRU页帧组织 651

15.1.3 PFRA回收算法 655

15.2 核心回收操作 659

15.2.1 shrink_zone() 659

15.2.2 shrink_slab() 666

15.2.3 解除页表映射 667

15.3 交换 667

15.3.1 交换功能 668

15.3.2 交换分区 668

15.3.3 交换缓存 673

小结 675

第16章 设备管理 676

16.1 设备管理组织 676

16.1.1 设备驱动模型 677

16.1.2 sysfs 678

16.1.3 基础组件 679

16.1.4 容器 682

16.2 设备的VFS接口 688

16.2.1 设备文件 689

16.2.2 从VFS中访问设备 691

16.3 字符设备 693

16.3.1 设备的散列组织 694

16.3.2 初始化与注册 695

16.3.3 打开字符设备 696

16.4 PCI设备 698

16.4.1 pci_bus_type和pci_bus 699

16.4.2 pci_driver 700

16.4.3 pci_dev 701

16.4.4 uevent 704

小结 705

第17章 块设备 706

17.1 基本概念 706

17.1.1 块设备层 706

17.1.2 传送单位 708

17.2 块设备层组件 709

17.2.1 磁盘与磁盘分区 709

17.2.2 块设备 712

17.2.3 请求队列 715

17.3 提交请求及处理 728

17.3.1 plug/unplug机制 728

17.3.2 提交请求 733

17.3.3 提交到驱动程序 742

17.3.4 硬盘的request_fn 744

17.3.5 中断处理 746

17.4 IO调度 749

17.4.1 IO调度器 749

17.4.2 调度器数据结构 751

17.5 初始化及注册 754

17.5.1 块设备初始化 754

17.5.2 硬盘初始化 759

小结 764

附录 765

后记 774

返回顶部