当前位置:主页 > 书籍配套资源 > Linux配套资源
《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》 源代码

《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》 源代码

  • 更新:2022-04-14
  • 大小:3.29 MB
  • 类别:Linux
  • 作者:高剑林
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书是内核研发和调试工程师、驱动开发工程师们正确和高效地掌握Linux内核的难得佳作!作者是腾讯公司资深的Linux内核专家和存储系统专家,在该领域工作和研究10余年,期间面试了数百位Linux内核工程师,深知他们在学习Linux内核过程中所遇到的困惑和犯过的错误,作者在此基础上撰写了本书。它在出发点和写作方式上可谓独辟蹊径,从工业需求角度出发,注重效率和实用性,将Linux内核分为基础部分和应用部分以及内核架构和内核实现两个维度,对Linux内核的文件系统、设备驱动的架构设计与实现原理进行了深入分析。

全书在逻辑上分为三部分:第一部分(1-2章)首先将内核层划分为了基础层和应用层,讲解了基础层包含的服务和数据结构以及应用层包含的各种功能,然后对文件系统的架构进行了提纲挈领的介绍,为读者学习后面的内容打下基础;第二部分(3-9章)深入地分析了设备的总体架构、为设备服务的特殊文件系统sysfs、字符设备和input设备、platform总线、serio总线、PCI总线、块设备的实现原理和工作机制;第三部分(10-13章)则对文件系统的读写机制进行了深入分析。

封面图

目录

  • 前言
  • 第1章内核的基础层和应用层1
  • 1.1 内核基础层提供的服务1
  • 1.1.1 内核中使用内存2
  • 1.1.2 内核中的任务调度2
  • 1.1.3 软中断和tasklet3
  • 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 什么是VFS13
  • 2.1.2 超级块super_block13
  • 2.1.3 目录项dentry14
  • 2.1.4 索引节点inode15
  • 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 一个最简单的文件系统aufs22
  • 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 设备中断和DMA61
  • 3.4 总线对设备的扫描62
  • 3.5 设备驱动管理62
  • 3.6 本章小结62
  • 第4章为设备服务的特殊文件系统sysfs63
  • 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/O143
  • 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 回写超级块内的inode209
  • 12.4 平衡写213
  • 12.4.1 检查直接回写的条件214
  • 12.4.2 回写系统脏页面的条件215
  • 12.4.3 检查计算机模式216
  • 12.5 本章小结216
  • 第13章一个真实文件系统ext2217
  • 13.1 ext2的硬盘布局217
  • 13.2 ext2文件系统目录树218
  • 13.3 ext2文件内容管理219
  • 13.4 ext2文件系统读写219
  • 13.5 本章小结219

资源下载

资源下载地址1:https://pan.baidu.com/s/1YsQkizgbkgKIri4wu65hHA

相关资源

网友留言