epub 深入linux内核架构_深入Linux内核架构[Professional Linux Kernel Architecture]pdf

摘要

众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。《深入Linux内核架构》结合内核版本2.6.24源代码中关键的部分。深入讨论Lirnux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等。《深入Linux内核架构》引导你阅读内核源代码,熟悉Lirnux妍有的内在工作机理,充分展现Linux系统的魅力。《深入Linux内核架构》适合Linux系统编程人员、系统管理者

深入Linux内核架构[Professional Linux Kernel Architecture] 内容简介

《深入Linux内核架构》讨论了Linux内核的概念、结构和实现。主要内容包括多任务、调度和进程管理,物理内存的管理以及内核与相关硬件的交互,用户空间的进程如何访问虚拟内存,如何编写设备驱动程序,模块机制以及虚拟文件系统,Ext文件系统属性和访问控制表的实现方式,内核中网络的实现,系统调用的实现方式,内核对时间相关功能的处理,页面回收和页交换的相关机制以及审计的实现等。此外,《深入Linux内核架构》借助内核源代码中关键的部分进行讲解,帮助读者掌握重要的知识点,从而在运用中充分展现Linux系统的魅力。《深入Linux内核架构》适合Linux内核爱好者阅读。

深入Linux内核架构[Professional Linux Kernel Architecture] 目录

第1章 简介和概述1

1.1 内核的任务2

1.2 实现策略2

1.3 内核的组成部分3

1.3.1 进程、进程切换、调度3

1.3.2 UNIX进程4

1.3.3 地址空间与特权级别6

1.3.4 页表9

1.3.5 物理内存的分配11

1.3.6 计时13

1.3.7 系统调用13

1.3.8 设备驱动程序、块设备和字符设备14

1.3.9 网络14

1.3.10 文件系统14

1.3.11 模块和热插拔15

1.3.12 缓存16

1.3.13 链表处理16

1.3.14 对象管理和引用计数17

1.3.15 数据类型20

1.3.16 本书的局限性22

1.4 为什么内核是特别的23

1.5 行文注记23

1.6 小结27

第2章 进程管理和调度28

2.1 进程优先级28

2.2 进程生命周期30

2.3 进程表示32

2.3.1 进程类型37

2.3.2 命名空间37

2.3.3 进程ID号43

2.3.4 进程关系49

2.4 进程管理相关的系统调用50

2.4.1 进程复制50

2.4.2 内核线程62

2.4.3 启动新程序63

2.4.4 退出进程66

2.5 调度器的实现67

2.5.1 概观67

2.5.2 数据结构69

2.5.3 处理优先级74

2.5.4 核心调度器79

2.6 完全公平调度类84

2.6.1 数据结构85

2.6.2 CFS操作85

2.6.3 队列操作89

2.6.4 选择下一个进程91

2.6.5 处理周期性调度器92

2.6.6 唤醒抢占93

2.6.7 处理新进程93

2.7 实时调度类94

2.7.1 性质94

2.7.2 数据结构95

2.7.3 调度器操作96

2.8 调度器增强97

2.8.1 SMP调度97

2.8.2 调度域和控制组101

2.8.3 内核抢占和低延迟相关工作102

2.9 小结106

第3章 内存管理107

3.1 概述107

3.2 (N)UMA模型中的内存组织109

3.2.1 概述109

3.2.2 数据结构111

3.3 页表123

3.3.1 数据结构124

3.3.2 页表项的创建和操作129

3.4 初始化内存管理129

3.4.1 建立数据结构130

3.4.2 特定于体系结构的设置135

3.4.3 启动过程期间的内存管理153

3.5 物理内存的管理159

3.5.1 伙伴系统的结构159

3.5.2 避免碎片161

3.5.3 初始化内存域和结点数据结构167

3.5.4 分配器API172

3.5.5 分配页177

3.5.6 释放页192

3.5.7 内核中不连续页的分配195

3.5.8 内核映射201

3.6 slab分配器205

3.6.1 备选分配器206

3.6.2 内核中的内存管理207

3.6.3 slab分配的原理209

3.6.4 实现212

3.6.5 通用缓存226

3.7 处理器高速缓存和TLB控制228

3.8 小结230

第4章 进程虚拟内存231

4.1 简介231

4.2 进程虚拟地址空间231

4.2.1 进程地址空间的布局232

4.2.2 建立布局234

4.3 内存映射的原理237

4.4 数据结构238

4.4.1 树和链表238

4.4.2 虚拟内存区域的表示239

4.4.3 优先查找树241

4.5 对区域的操作244

4.5.1 将虚拟地址关联到区域245

4.5.2 区域合并246

4.5.3 插入区域247

4.5.4 创建区域248

4.6 地址空间250

4.7 内存映射251

4.7.1 创建映射251

4.7.2 删除映射253

4.7.3 非线性映射254

4.8 反向映射257

4.8.1 数据结构258

4.8.2 建立逆向映射259

4.8.3 使用逆向映射259

4.9 堆的管理261

4.10 缺页异常的处理263

4.11 用户空间缺页异常的校正268

4.11.1 按需分配/调页269

4.11.2 匿名页271

4.11.3 写时复制271

4.11.4 获取非线性映射272

4.12 内核缺页异常272

4.13 在内核和用户空间之间复制数据274

4.14 小结276

第5章 锁与进程间通信277

5.1 控制机制277

5.1.1 竞态条件277

5.1.2 临界区278

5.2 内核锁机制279

5.2.1 对整数的原子操作280

5.2.2 自旋锁282

5.2.3 信号量283

5.2.4 RCU机制284

5.2.5 内存和优化屏障286

5.2.6 读者/写者锁287

5.2.7 大内核锁288

5.2.8 互斥量288

5.2.9 近似的per-CPU计数器290

5.2.10 锁竞争与细粒度锁291

5.3 SystemV进程间通信292

5.3.1 SystemV机制292

5.3.2 信号量292

5.3.3 消息队列300

5.3.4 共享内存303

5.4 其他IPC机制303

5.4.1 信号303

5.4.2 管道和套接字310

5.5 小结311

第6章 设备驱动程序312

6.1 I/O体系结构312

6.2 访问设备316

6.2.1 设备文件316

6.2.2 字符设备、块设备和其他设备317

6.2.3 使用ioctl进行设备寻址319

6.2.4 主从设备号的表示320

6.2.5 注册321

6.3 与文件系统关联324

6.3.1 inode中的设备文件成员324

6.3.2 标准文件操作325

6.3.3 用于字符设备的标准操作325

6.3.4 用于块设备的标准操作325

6.4 字符设备操作326

6.4.1 表示字符设备326

6.4.2 打开设备文件326

6.4.3 读写操作328

6.5 块设备操作329

6.5.1 块设备的表示330

6.5.2 数据结构331

6.5.3 向系统添加磁盘和分区338

6.5.4 打开块设备文件339

6.5.5 请求结构341

6.5.6 BIO343

6.5.7 提交请求345

6.5.8 I/O调度350

6.5.9 ioctl的实现352

6.6 资源分配353

6.6.1 资源管理353

6.6.2 I/O内存355

6.6.3 I/O端口357

6.7 总线系统358

6.7.1 通用驱动程序模型358

6.7.2 PCI总线363

6.7.3 USB370

6.8 小结376

第7章 模块377

7.1 概述377

7.2 使用模块378

7.2.1 添加和移除378

7.2.2 依赖关系380

7.2.3 查询模块信息381

7.2.4 自动加载382

7.3 插入和删除模块384

7.3.1 模块的表示385

7.3.2 依赖关系和引用389

7.3.3 模块的二进制结构391

7.3.4 插入模块396

7.3.5 移除模块403

7.4 自动化与热插拔404

7.4.1 kmod实现的自动加载404

7.4.2 热插拔405

7.5 版本控制408

7.5.1 校验和方法408

7.5.2 版本控制函数411

7.6 小结412

第8章 虚拟文件系统413

8.1 文件系统类型413

8.2 通用文件模型414

8.2.1 inode415

8.2.2 链接416

8.2.3 编程接口416

8.2.4 将文件作为通用接口417

8.3 VFS的结构417

8.3.1 结构概观418

8.3.2 inode419

8.3.3 特定于进程的信息423

8.3.4 文件操作427

8.3.5 目录项缓存431

8.4 处理VFS对象436

8.4.1 文件系统操作436

8.4.2 文件操作450

8.5 标准函数456

8.5.1 通用读取例程457

8.5.2 失效机制459

8.5.3 权限检查461

8.6 小结463

第9章 Ext文件系统族464

9.1 简介464

9.2 Ext2文件系统465

9.2.1 物理结构465

9.2.2 数据结构470

9.2.3 创建文件系统484

9.2.4 文件系统操作485

9.3 Ext3文件系统507

9.3.1 概念508

9.3.2 数据结构509

9.4 小结511

第10章 无持久存储的文件系统512

10.1 proc文件系统512

10.1.1 /proc的内容513

10.1.2 数据结构519

10.1.3 初始化522

10.1.4 装载proc文件系统523

10.1.5 管理/proc数据项525

10.1.6 读取和写入信息528

10.1.7 进程相关的信息530

10.1.8 系统控制机制535

10.2 简单的文件系统542

10.2.1 顺序文件542

10.2.2 用libfs编写文件系统546

10.2.3 调试文件系统547

10.2.4 伪文件系统549

10.3 sysfs549

10.3.1 概述550

10.3.2 数据结构550

10.3.3 装载文件系统554

10.3.4 文件和目录操作556

10.3.5 向sysfs添加内容562

10.4 小结564

第11章 扩展属性和访问控制表565

11.1 扩展属性565

11.1.1 到虚拟文件系统的接口566

11.1.2 Ext3中的实现570

11.1.3 Ext2中的实现576

11.2 访问控制表577

11.2.1 通用实现577

11.2.2 Ext3中的实现580

11.2.3 Ext2中的实现585

11.3 小结585

……

第12章 网络586

第13章 系统调用655

第14章 内核活动678

第15章 时间管理714

第16章 页缓存和块缓存761

第17章 数据同步793

第18章 页面回收和页交换821

第19章 审计882

附录A 体系结构相关知识899

附录B 使用源代码919

附录C 有关C语言的注记947

附录D 系统启动985

附录E ELF二进制格式

附录F 内核开发过程

参考文献

深入Linux内核架构[Professional Linux Kernel Architecture] 精彩文摘

1.1 内核的任务

在纯技术层面上,内核是硬件与软件之间的一个中间层。其作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。尽管如此,仍然可以从其他一些有趣的视角对内核进行研究。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Publisher: Wrox Page : 1371 This book discusses the concepts, structure, and implementation of the Linux kernel. In particular, the individual chapters cover the following topics: ❑ Chapter 1 provides an overview of the Linux kernel and describes the big picture that is investigated more closely in the following chapters. ❑ Chapter 2 talks about the basics of multitasking, scheduling, and process management, and investigates how these fundamental techniques and abstractions are implemented. ❑ Chapter 3 discusses how physical memory is managed. Both the interaction with hardware and the in-kernel distribution of RAM via the buddy system and the slab allocator are covered. ❑ Chapter 4 proceeds to describe how userland processes experience virtual memory, and the comprehensive data structures and actions required from the kernel to implement this view. ❑ Chapter 5 introduces the mechanisms required to ensure proper operation of the kernel on multiprocessor systems. Additionally, it covers the related question of how processes can communicate with each other. ❑ Chapter 6 walks you through the means for writing device drivers that are required to add support for new hardware to the kernel. ❑ Chapter 7 explains how modules allow for dynamically adding new functionality to the kernel. ❑ Chapter 8 discusses the virtual filesystem, a generic layer of the kernel that allows for supporting a wide range of different filesystems, both physical and virtual. ❑ Chapter 9 describes the extended filesystem family, that is, the Ext2 and Ext3 filesystems that are the standard workhorses of many Linux installations. ❑ Chapter 10 goes on to discuss procfs and sysfs, two filesystems that are not designed to store information, but to present meta-information about the kernel to userland. Additionally, a number of means to ease writing filesystems are presented. ❑ Chapter 11 shows how extended attributes and access control lists that can help to improve system security are implemented. ❑ Chapter 12 discusses the networking implementation of the kernel, with a specific focus on IPv4, TCP, UDP, and netfilter. ❑ Chapter 13 introduces how systems calls that are the standard way to request a kernel action from userland are implemented. ❑ Chapter 14 analyzes how kernel activities are triggered with interrupts, and presents means of deferring work to a later point in time. ❑ Chapter 15 shows how the kernel handles all time-related requirements, both with low and high resolution. ❑ Chapter 16 talks about speeding up kernel operations with the help of the page and buffer caches. ❑ Chapter 17 discusses how cached data in memory are synchronized with their sources on persistent storage devices. ❑ Chapter 18 introduces how page reclaim and swapping work.
### 回答1: 《深入理解Linux内核》是一本经典的操作系统内核相关的书籍,它详细介绍了Linux内核的结构、逻辑和功能,为读者深入理解Linux操作系统提供了重要的参考。 第四版中文版epub的出版,不仅极大地方便了读者在电子设备上阅读学习,还将经典的内核学习资源带给更多、更广泛的读者,让更多的人通过它深入理解Linux内核。 该书主要包括内核基础、进程管理、进程间通信、系统调用、中断和异常、设备驱动程序、文件系统等多个部分,通过深入讲解每个部分的特点和实现原理,为读者打开了Linux内核的大门,让其能够全面深入地了解Linux操作系统。 在学习的过程中,读者需要具备一定的操作系统和编程基础,但是,即使是初学者,也可以通过本书的详细讲解和案例研究逐步掌握操作系统内核的相关知识。 总之,对于学习操作系统内核知识的读者,这本书是一个不可或缺的重要资源,而第四版中文版epub的发布,更是进一步扩展了该书的影响范围,为更多读者带来了便利和学习机会。 ### 回答2: 《深入理解Linux内核》第四版是一本图书,主要介绍了Linux内核的运作原理和实现机制。它详细介绍了内核底层的数据结构、内存管理、进程调度、文件系统、网络协议栈、设备驱动等方面的知识,并提供了丰富的代码示例以帮助读者更好地理解。本书是日本著名的内核开发者Masami Hiramatsu和Takatoshi Kondo所著的,由于其权威性、详细性和实用性而备受欢迎。 本书适合具有一定Linux系统编程和操作经验的读者。对于想要从事Linux内核开发、系统调优、性能优化、驱动编写等方面的人员来说,本书是一本绝佳的参考书。此外,本书还能帮助读者更好地理解其他Linux系统相关的书籍和文档。 本书以深入浅出的方式,循序渐进地介绍了Linux内核的各个方面,同时也提供了丰富的例子和实用的技巧。读者可以从中掌握Linux内核的基本原理和实现方法,以及如何进行Linux系统的调优和优化。 总之,《深入理解Linux内核》第四版是一本权威、实用、详细的图书,对于想要更深入了解Linux内核的读者,是一本不可缺少的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值