《LINUX内核分析及高级编程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:吴国伟,李张,任广臣编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121052446
  • 页数:269 页
图书介绍:本书以Linux 2.6内核分析和编程应用来讲解高级操作系统设计和应用方面的问题,本书是编著者在多年的教学和科研的基础上编写的,本书结构上每章先是进行内核设计的分析,然后是实践案例的设计,最后是情景分析运用。全书共13章内容,内容主要包括Linux内核中进程管理、进程间同步通信、内存管理、文件系统、I/O设备管理、模块机制、定时器机制等,及利用内核机制进行高级编程。

第1章 Linux内核简介 1

1.1 Linux简介 1

1.1.1 Linux发展历史 1

1.1.2 常见的Linux介绍 2

1.2 Linux内核版本信息 3

1.2.1 Linux内核版本 3

1.2.2 GPL相关术语 4

1.3 Linux内核体系结构 4

1.4 源代码及组成 6

1.5 内核编译方法 7

1.6 小结 10

1.7 习题 10

第2章 内核探索工具 11

2.1 内核数据结构 11

2.1.1 链表 11

2.1.2 散列表 11

2.1.3 抽象接口 12

2.2 Linux汇编 12

2.2.1 Linux汇编简介 12

2.2.2 Linux汇编语法格式 13

2.2.3 程序实例 14

2.2.4 Linux汇编系统调用 16

2.2.5 GCC内联汇编 17

2.3 Linux C语言 19

2.3.1 C语言标准 19

2.3.2 函数库和系统调用 19

2.3.3 C语言编程风格 21

2.3.4 库和头文件的保存位置 22

2.4 GNU/GCC,GNU/GDB 23

2.4.1 运行gcc 23

2.4.2 gcc的主要选项 24

2.4.3 gdb介绍 25

2.4.4 gdb的常用命令 26

2.4.5 gdb使用范例 26

2.5 GNU make工具介绍 27

2.5.1 GNU make概述 27

2.5.2 makefile基本结构 28

2.5.3 makefile变量 29

2.5.4 GNU make的主要预定义变量 29

2.5.5 隐含规则 30

2.5.6 运行make 31

2.6 内核探测工具 31

2.6.1 objdump/readelf 31

2.6.2 hexdump 33

2.6.3 nm 33

2.6.4 objcopy 33

2.6.5 ar 33

2.7 小结 33

2.8 习题 34

第3章 Linux内核引导 35

3.1 BIOS和Open Firmware 35

3.1.1 BIOS 35

3.1.2 Open Firmware 36

3.2 Bootloader介绍 36

3.2.1 GRUB 36

3.2.2 LILO 38

3.2.3 U-Boot 38

3.3 系统引导过程 40

3.3.1 概述 40

3.3.2 系统启动 41

3.3.3 第一阶段引导加载程序 42

3.3.4 第二阶段引导加载程序 42

3.3.5 内核 43

3.3.6 init 44

3.4 小结 46

3.5 习题 46

第4章 进程管理 47

4.1 进程描述符及任务结构体 47

4.2 进程创建 55

4.2.1 概述 55

4.2.2 fork()函数 56

4.2.3 vfork()函数 58

4.2.4 clone()函数 58

4.2.5 do_fork()函数 59

4.2.6 exec()函数族 61

4.3 进程终止 62

4.3.1 概述 62

4.3.2 进程终止过程 63

4.3.3 进程的状态 64

4.4 线程的实现 65

4.5 工业监控场景应用 67

4.5.1 场景描述 67

4.5.2 处理流程 67

4.5.3 程序范例 68

4.6 小结 71

4.7 习题 72

第5章 进程调度 73

5.1 调度策略 73

5.1.1 优先级调度 73

5.1.2 时间片轮转 74

5.1.3 三种调度策略 75

5.2 调度算法分析 75

5.3 等待队列 79

5.4 抢占和上下文切换分析 80

5.4.1 上下文切换 80

5.4.2 抢占 81

5.5 调度相关系统调用 82

5.6 动态更改进程优先级程序实例 84

5.6.1 场景描述 84

5.6.2 处理流程 85

5.6.3 程序范例 85

5.7 小结 86

5.8 习题 86

第6章 系统调用 88

6.1 API、POSIX及C库 88

6.2 系统调用及实现分析 89

6.2.1 基本概念 89

6.2.2 系统调用简述 90

6.2.3 系统调用功能模块的初始化 92

6.2.4 内核服务 92

6.2.5 实现过程 93

6.2.6 调用流程实例 95

6.3 添加系统调用 96

6.4 增加系统调用场景应用 98

6.4.1 场景描述 98

6.4.2 添加流程 98

6.4.3 计算数值平方的系统调用添加实例 100

6.5 小结 100

6.6 习题 101

第7章 中断机制 102

7.1 中断 102

7.1.1 中断分类 102

7.1.2 中断请求 103

7.2 中断处理程序 104

7.3 管理中断的数据结构 105

7.3.1 结构体irq_desc_t 106

7.3.2 结构体irqaction 107

7.3.3 结构体hw_interrupt_type 108

7.4 注册中断处理程序 110

7.5 释放中断处理程序 111

7.6 编写中断处理程序 111

7.7 中断上下文 112

7.8 中断处理机制的实现 112

7.8.1 中断处理总体流程 112

7.8.2 中断处理具体过程 113

7.8.3 与中断处理相关的主要函数 113

7.8.4 下半部机制 123

7.8.5 软中断 123

7.8.6 tasklet 125

7.8.7 工作队列 132

7.9 中断处理程序场景应用 142

7.9.1 场景描述 142

7.9.2 处理流程 142

7.9.3 程序范例 143

7.10 小结 144

7.11 习题 145

第8章 内核同步机制 146

8.1 临界区和竞争条件 146

8.2 原子操作 146

8.3 自旋锁 150

8.4 读/写自旋锁 154

8.5 信号量 156

8.6 读/写信号量 157

8.7 完成变量 159

8.8 BKL 160

8.9 生产者/消费者场景应用 160

8.9.1 场景描述 160

8.9.2 处理流程 161

8.9.3 程序范例 161

8.10 小结 166

8.11 习题 167

第9章 定时器和时间管理机制 168

9.1 内核中的时间概念 168

9.2 节拍率 169

9.3 jiffies 169

9.4 硬时钟和定时器 171

9.4.1 硬时钟 171

9.4.2 定时器 175

9.5 时钟中断处理程序 175

9.6 内核时间管理函数 178

9.7 定时器 180

9.7.1 动态定时器机制实现原理 180

9.7.2 定时器竞争条件 180

9.7.3 定时器实现 181

9.8 定时显示信息的场景应用 183

9.8.1 场景描述 183

9.8.2 处理流程 183

9.8.3 程序范例 184

9.9 小结 185

9.10 习题 185

第10章 模块机制 187

10.1 模块概念 187

10.2 modutils介绍 188

10.2.1 insmod的使用 188

10.2.2 lsmod的使用 189

10.2.3 rmmod的使用 189

10.2.4 modprobe的使用 190

10.2.5 从kerneld到kmod 191

10.3 模块实现机制分析 191

10.3.1 基本概念 191

10.3.2 Linux内核模块实现机制 192

10.3.3 如何构建自己的模块 195

10.4 模块编程注意事项 197

10.4.1 内核中的并发 197

10.4.2 版本相关性 198

10.5 模块机制的改变对设备驱动的影响 198

10.5.1 获取内核版本 199

10.5.2 模块编译 199

10.5.3 模块装载时的版本检查 200

10.5.4 模块的初始化与退出 200

10.5.5 模块使用计数 200

10.5.6 模块输出的内核符号 200

10.5.7 模块的命令行输入参数 201

10.5.8 模块的许可证声明 202

10.6 增加模块应用场景 202

10.6.1 场景描述 202

10.6.2 处理流程 202

10.6.3 程序范例 203

10.7 小结 205

10.8 习题 205

第11章 内存管理机制 206

11.1 基本机制 206

11.1.1 页 206

11.1.2 区 208

11.2 伙伴算法 212

11.3 slab分配器 214

11.4 内存分配释放函数 218

11.5 虚拟内存 222

11.6 高速缓存 223

11.7 Linux页表 224

11.8 进程内存映射 225

11.9 内存管理应用实例 225

11.10 小结 227

11.11 习题 228

第12章 虚拟文件系统 229

12.1 和平共处通用文件系统接口 229

12.2 VFS对象及数据结构 230

12.3 超级块对象 231

12.3.1 超级块结构体 231

12.3.2 超级块操作 234

12.4 索引节点对象 236

12.4.1 索引节点结构体 236

12.4.2 索引节点操作 238

12.5 目录项对象 240

12.5.1 目录项结构体 240

12.5.2 目录项操作 241

12.6 文件对象 242

12.6.1 文件对象结构体 242

12.6.2 文件对象操作 244

12.7 VFS中挂载与卸载文件系统 246

12.7.1 登记文件系统 246

12.7.2 安装文件系统 247

12.7.3 卸载文件系统 248

12.8 小结 248

12.9 习题 248

第13章 I/O设备管理 249

13.1 I/O管理机制 249

13.2 块设备管理 249

13.2.1 缓冲区和缓冲区头 250

13.2.2 bio结构体 252

13.2.3 请求队列 254

13.3 驱动程序设计 257

13.3.1 驱动程序框架 257

13.3.2 块设备驱动程序 259

13.4 驱动程序设计实例 262

13.4.1 字符设备驱动程序 262

13.4.2 块设备驱动程序 265

13.5 小结 266

13.6 习题 267

参考文献 268