图书介绍

Linux内核修炼之道PDF|Epub|txt|kindle电子书版本网盘下载

Linux内核修炼之道
  • 任桥伟编著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115225856
  • 出版时间:2010
  • 标注页数:350页
  • 文件大小:116MB
  • 文件页数:368页
  • 主题词:Linux操作系统

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux内核修炼之道PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 初识Linux1

1.1 Linux史记2

1.1.1 Linux诞生记2

1.1.2 泰坦尼克的狂潮2

1.1.3 提前发生的革命3

1.1.4 和平、爱情和Linux4

1.1.5 Ubuntu 4.104

1.1.6 Richard Stallman的征婚启事5

1.1.7 一封公开信6

1.1.8 首款Android手机8

1.1.9 Linux信用卡8

1.2 内核的版本9

1.3 获取内核源码10

1.4 Linux发行版11

1.4.1 软件包管理器11

1.4.2 流行的发行版12

1.4.3 选择Linux发行版13

第2章 配置与编译内核15

2.1 配置内核16

2.1.1 几种配置方式16

2.1.2 .config文件19

2.1.3 配置选项详解20

2.2 编译内核26

2.2.1 准备工作26

2.2.2 如何为内核打补丁27

2.2.3 编译步骤28

2.2.4 文档的编译29

2.2.5 编译小技巧29

2.3 自由软件的编译与安装30

2.3.1 发布时的组织结构30

2.3.2 配置30

2.3.3 编译32

2.3.4 安装35

第3章 浏览内核源代码37

3.1 内核学习的技术基础38

3.2 内核体系结构38

3.3 内核源码目录结构40

3.4 浏览代码的工具43

3.4.1 Source Insight43

3.4.2 Vim+Cscope43

3.4.3 LXR45

3.5 内核代码的特点46

3.5.1 GCC扩展46

3.5.2 内嵌汇编51

3.6 内核中的链表51

3.7 Kconfig和Makefile53

3.7.1 Kconfig结构54

3.7.2 利用Kconfig和Makefile寻找目标代码55

3.8 代码分析示例57

3.8.1 分析README57

3.8.2 分析Kconfig和Makefile58

3.8.3 寻找初始化函数60

第4章 系统初始化64

4.1 引导过程65

4.2 内核初始化67

4.2.1 start_kernel函数68

4.2.2 reset_init函数71

4.2.3 kernel_init函数72

4.2.4 init_post函数73

4.3 init进程75

4.4 内核选项解析75

4.4.1 内核选项75

4.4.2 注册内核选项77

4.4.3 两次解析78

4.5 子系统的初始化79

4.5.1 do_initcalls()函数79

4.5.2 .initcall.init节80

4.5.3 分析示例81

第5章 系统调用84

5.1 系统调用概述85

5.1.1 系统调用、POSIX、C库、系统命令和内核函数85

5.1.2 系统调用表87

5.1.3 系统调用号87

5.1.4 系统调用服务例程88

5.1.5 如何使用系统调用88

5.1.6 为什么需要系统调用90

5.2 系统调用执行过程91

5.3 系统调用示例93

5.3.1 sys_dup93

5.3.2 sys_reboot94

5.4 系统调用的实现97

5.4.1 如何实现一个新的系统调用97

5.4.2 什么时候需要添加新的系统调用99

第6章 中断与中断处理100

6.1 概述101

6.1.1 中断分类101

6.1.2 PIC vs APIC102

6.1.3 中断号vs中断向量104

6.1.4 中断描述符表105

6.1.5 门106

6.1.6 中断服务程序107

6.2 重要数据结构107

6.2.1 中断描述符irq_desc108

6.2.2 中断控制器描述符irq_chip109

6.2.3 中断服务程序描述符irqaction110

6.3 中断子系统初始化111

6.3.1 中断描述符表的初始化111

6.3.2 中断请求队列的初始化116

6.4 中断或异常处理117

6.4.1 中断控制器的工作118

6.4.2 CPU的工作120

6.4.3 内核对中断的处理120

6.4.4 内核对异常的处理123

6.5 中断API123

6.5.1 注册和释放123

6.5.2 激活和禁止125

6.5.3 其他API函数125

6.6 通用IRQ层126

6.6.1 GenIRQ的起源及发展126

6.6.2 GenIRQ的抽象层次126

6.7 多处理器系统中的中断处理128

6.7.1 处理器间中断128

6.7.2 中断亲和力128

6.7.3 中断负载均衡129

6.8 中断的下半部130

6.8.1 下半部的实现机制130

6.8.2 下半部机制的选择132

第7章 进程管理133

7.1 概述134

7.1.1 进程vs程序134

7.1.2 进程vs线程134

7.1.3 进程描述符135

7.1.4 进程状态136

7.1.5 进程标识符137

7.1.6 进程间关系138

7.1.7 进程0与进程1140

7.1.8 进程的内核栈140

7.1.9 获取当前进程142

7.2 进程创建142

7.2.1 fork()、vfork()与clone()143

7.2.2 do_fork()146

7.2.3 copy_process()149

7.2.4 内核线程150

7.3 进程退出151

7.3.1 do_exit()151

7.3.2 僵死进程152

7.3.3 孤儿进程153

7.4 后台进程153

第8章 调度155

8.1 概述156

8.1.1 调度策略156

8.1.2 进程调度的目标157

8.1.3 进程的nice值158

8.1.4 优先级158

8.1.5 时间片159

8.2 进程调度器的发展历史160

8.2.1 Linux 2.4的调度器160

8.2.2 O(1)调度器161

8.2.3 SD调度器163

8.2.4 RSDL调度器163

8.2.5 CFS调度器164

8.3 O(1)调度器165

8.3.1 运行队列165

8.3.2 优先级数组168

8.3.3 计算时间片169

8.3.4 平均休眠时间170

8.3.5 判断交互性170

8.3.6 计算优先级171

8.3.7 休眠和唤醒172

8.3.8 schedule()173

8.3.9 负载均衡174

8.3.10 软实时调度176

8.4 CFS调度器176

8.4.1 完全公平与进程的权重176

8.4.2 模块化177

8.4.3 调度实体179

8.4.4 CFS运行队列180

8.4.5 虚拟运行时间181

8.4.6 CFS调度类182

8.4.7 schedule()183

8.4.8 组调度183

8.5 进程抢占与切换185

8.5.1 用户抢占185

8.5.2 内核抢占186

8.5.3 进程切换187

第9章 内存管理189

9.1 内存概述190

9.1.1 地址空间190

9.1.2 分页191

9.2 内核的内存分配192

9.2.1 内存结构192

9.2.2 BUDDY页面管理195

9.2.3 SLAB内存管理198

9.2.4 SLUB/SLOB内存管理201

9.2.5 vmalloc内存分配203

9.2.6 高端内存映射204

9.3 进程地址空间204

9.3.1 内存描述符205

9.3.2 内存映射208

9.3.3 多级页表结构209

9.3.4 缺页错误处理210

9.4 页面缓存211

9.4.1 页面缓存管理212

9.4.2 Swap内存交换213

9.4.3 kswapd和pdflush214

9.5 内存工具汇总214

9.5.1 用proc接口查看内存信息214

9.5.2 系统命令工具215

第10章 文件系统217

10.1 概述218

10.1.1 文件218

10.1.2 文件系统218

10.1.3 虚拟文件系统221

10.2 VFS的数据结构224

10.2.1 超级块224

10.2.2 索引节点227

10.2.3 目录项232

10.2.4 文件235

10.2.5 与文件系统相关的数据结构238

10.2.6 与进程相关的数据结构240

10.2.7 路径查找辅助结构243

10.3 VFS的缓存机制244

10.3.1 索引节点缓存244

10.3.2 目录项缓存245

10.3.3 缓冲区缓存247

10.4 文件系统的注册与安装248

10.4.1 文件系统的注册248

10.4.2 文件系统的安装249

10.4.3 rootfs的注册和安装250

10.5 inotify机制251

10.5.1 inotify数据结构251

10.5.2 inotify钩子函数253

10.5.3 inotify用户接口254

10.5.4 应用示例255

10.5.5 inotify工具256

第11章 设备驱动258

11.1 概述259

11.2 模块机制与“Hello World!”260

11.3 设备模型262

11.3.1 设备模型的经济基础263

11.3.2 设备模型的上层建筑268

11.3.3 类(Class)与类设备(class_device)273

11.4 sysfs文件系统275

11.4.1 sysfs与/sys276

11.4.2 sysfs目录项sysfs_dirent277

11.4.3 sysfs目录和属性278

11.5 spec、datasheet与内核源代码279

11.6 USB子系统与USB驱动279

11.6.1 USB简史279

11.6.2 USB协议基础281

11.6.3 USB子系统与sysfs284

11.6.4 内核中的USB286

11.6.5 USB设备基础288

11.6.6 USB urb304

11.6.7 OTG简介310

11.6.8 USB驱动程序310

第12章 内核开发基础316

12.1 相关资源317

12.1.1 内核文档317

12.1.2 经典书籍318

12.1.3 内核社区319

12.1.4 其他网络资源319

12.2 编码风格320

12.3 内核API324

12.4 内核中的Makefile325

12.5 如何添加自己的驱动程序327

12.6 如何提交补丁329

12.7 学会使用Git332

第13章 调试335

13.1 内核调试配置选项336

13.2 二分法与printk()337

13.2.1 二分查找法的基本原理337

13.2.2 printk()338

13.3 获取内核信息339

13.3.1 syslog和dmesg339

13.3.2 /proc340

13.3.3 /sys341

13.3.4 ioctl342

13.4 oops342

13.5 调试工具343

13.5.1 gdb343

13.5.2 kgdb344

13.5.3 kdb346

13.5.4 kprobes346

13.5.5 systemtap347

13.5.6 kdump348

13.5.7 硬件工具348

13.6 “神奇”的SysRq349

13.7 使用模拟器与虚拟机349

热门推荐