《Linux内核探秘 深入解析文件系统和设备驱动的架构与设计》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:高剑林著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111445852
  • 页数:220 页
图书介绍:本书独辟蹊径,对Linux内核的文件系统和设备驱动的架构设计进行了深入探讨。第一章从基础层和应用层的角度对内核提供的服务和数据结构进行了介绍;第2章和第3章分别介绍了文件系统和设备的核心概念、架构;第4章详细介绍了sysfs文件系统;第5章讲解了字符设备和输入设备;第6~8章分别讲解了Platform总线、serio总线和PCI总线;第9章讲解了块设备;第10章讲解了文件系统的读写;第11章讲解了Linux内核的通用块层和scis层;第12章讲解了linux的回写机制;第13章介绍了ext2文件系统。

第1章 内核的基础层和应用层 1

1.1内核基础层提供的服务 1

1.1.1内核中使用内存 2

1.1.2内核中的任务调度 2

1.1.3软中断和tasklet 3

1.1.4工作队列 4

1.1.5自旋锁 5

1.1.6内核信号量 5

1.1.7原子变量 5

1.2内核基础层的数据结构 6

1.2.1双向链表 6

1.2.2 hash链表 6

1.2.3单向链表 7

1.2.4红黑树 7

1.2.5 radix树 7

1.3内核应用层 8

1.4从Linux内核源码结构纵览内核 9

1.5内核学习和应用的四个阶段 10

1.6本章小结 11

第2章 文件系统 12

2.1文件系统的基本概念 12

2.1.1什么是VFS 13

2.1.2超级块super_block 13

2.1.3目录项dentry 14

2.1.4索引节点inode 15

2.1.5文件 17

2.2文件系统的架构 17

2.2.1超级块作用分析 17

2.2.2 dentry作用分析 18

2.2.3 inode作用分析 20

2.2.4文件作用分析 21

2.3从代码层次深入分析文件系统 21

2.3.1一个最简单的文件系统aufs 22

2.3.2文件系统如何管理目录和文件 26

2.3.3文件系统的挂载过程 38

2.3.4文件打开的代码分析 42

2.4本章小结 59

第3章 设备的概念和总体架构 60

3.1设备的配置表 60

3.2访问设备寄存器和设备内存 61

3.3设备中断和DMA 61

3.4总线对设备的扫描 62

3.5设备驱动管理 62

3.6本章小结 62

第4章 为设备服务的特殊文件系统sysfs 63

4.1文件和目录的创建 63

4.1.1 sysfs文件系统的初始化 64

4.1.2 sysfs文件系统目录的创建 64

4.1.3普通文件的创建 68

4.2 sysfs文件的打开操作 69

4.2.1 real_lookup函数详解 70

4.2.2为文件创建inode结构 70

4.2.3为dentry结构绑定属性 71

4.2.4调用文件系统中的open函数 72

4.3 sysfs文件的读写 74

4.3.1读文件的过程分析 74

4.3.2写文件的过程分析 75

4.4 kobject结构 76

4.4.1 kobject和kset的关系 76

4.4.2 kobject实例:总线的注册 77

4.5本章小结 79

第5章 字符设备和input设备 80

5.1文件如何变成设备 80

5.1.1 init special_inode函数 80

5.1.2 def chr_fops结构 81

5.2 input设备的注册 82

5.2.1主从设备号 83

5.2.2把input设备注册到系统 84

5.2.3设备区间的登记 85

5.2.4注册字符设备 86

5.2.5打开input设备 87

5.3 input设备架构 88

5.3.1注册input设备的驱动 88

5.3.2匹配input管理的设备和驱动 89

5.3.3注册input设备 90

5.4本章小结 92

第6章 platform总线 93

6.1从驱动发现设备的过程 93

6.1.1驱动的初始化 93

6.1.2注册驱动 94

6.1.3为总线增加一个驱动 95

6.1.4驱动加载 95

6.1.5遍历总线上已经挂载的设备 96

6.2从设备找到驱动的过程 98

6.2.1注册设备和总线类型 98

6.2.2注册设备的资源 99

6.2.3增加一个设备对象 100

6.3本章小结 102

第7章 serio总线 103

7.1什么是总线适配器 103

7.2向serio总线注册设备 103

7.2.1注册端口登记事件 104

7.2.2遍历总线的驱动 106

7.2.3注册input设备 109

7.3虚拟键盘驱动 110

7.3.1键盘驱动的初始化 110

7.3.2与设备建立连接 111

7.3.3启动键盘设备 111

7.3.4输入设备和主机系统之间的事件 112

7.4键盘中断 112

7.4.1 q40kbd设备的中断处理 113

7.4.2 serio总线的中断处理 113

7.4.3驱动提供的中断处理 113

7.5本章小结 116

第8章 PCI总线 117

8.1深入理解PCI总线 117

8.1.1 PCI设备工作原理 117

8.1.2 PCI总线域 118

8.1.3 PCI资源管理 118

8.1.4 PCI配置空间读取和设置 119

8.2 PCI设备扫描过程 120

8.2.1扫描0号总线 120

8.2.2扫描总线上的PCI设备 121

8.2.3扫描多功能设备 124

8.2.4扫描单个设备 125

8.2.5扫描设备信息 125

8.3本章小结 128

第9章 块设备 129

9.1块设备的架构 129

9.1.1块设备、磁盘对象和队列 129

9.1.2块设备和通用磁盘对象的绑定 130

9.1.3块设备的队列和队列处理函数 131

9.2块设备创建的过程分析 132

9.2.1 nbd驱动的初始化 132

9.2.2为通用磁盘对象创建队列成员 133

9.2.3将通用磁盘对象加入系统 134

9.3块设备文件系统 135

9.3.1块设备文件系统的初始化 135

9.3.2块设备文件系统的设计思路 136

9.4块设备的打开流程 136

9.4.1获取块设备对象 137

9.4.2执行块设备的打开流程 140

9.5本章小结 142

第10章 文件系统读写 143

10.1 page cache机制 143

10.1.1 buffer I/O和direct I/O 143

10.1.2 buffer head和块缓存 143

10.1.3 page cache的管理 144

10.1.4 page cache的状态 145

10.2文件预读 146

10.3文件锁 146

10.4文件读过程代码分析 147

10.5读过程返回 161

10.6文件写过程代码分析 162

10.7本章小结 169

第11章 通用块层和scsi层 170

11.1块设备队列 170

11.1.1 scsi块设备队列处理函数 170

11.1.2电梯算法和对象 171

11.2硬盘HBA抽象层 172

11.3 I/O的顺序控制 173

11.4 I/O调度算法 173

11.4.1 noop调度算法 173

11.4.2 deadline调度算法 174

11.5 I/O的处理过程 178

11.5.1 I/O插入队列的过程分析 178

11.5.2 I/O出队列的过程分析 186

11.5.3 I/O返回路径 194

11.6本章小结 203

第12章 内核回写机制 204

12.1内核的触发条件 204

12.2内核回写控制参数 204

12.3定时器触发回写 205

12.3.1启动定时器 205

12.3.2执行回写操作 207

12.3.3检查需要回写的页面 208

12.3.4回写超级块内的inode 209

12.4平衡写 213

12.4.1检查直接回写的条件 214

12.4.2回写系统脏页面的条件 215

12.4.3检查计算机模式 216

12.5本章小结 216

第13章 一个真实文件系统ext2 217

13.1 ext2的硬盘布局 217

13.2 ext2文件系统目录树 218

13.3 ext2文件内容管理 219

13.4 ext2文件系统读写 219

13.5本章小结 219