出版社:机械工业出版社
年代:2013
定价:59.0
本书独辟蹊径,对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.3 软中断和tasklet1.1.4 工作队列1.1.5 自旋锁1.1.6 内核信号量1.1.7 原子变量1.2 内核基础层的数据结构1.2.1 双向链表1.2.2 hash链表1.2.3 单向链表1.2.4 红黑树1.2.5 radix树1.3 内核应用层1.4 从Linux内核源码结构纵览内核1.5 内核学习和应用的四个阶段1.6 本章小结第2章 文件系统2.1 文件系统的基本概念2.1.1 什么是VFS2.1.2 超级块super_block2.1.3 目录项dentry2.1.4 索引节点inode2.1.5 文件2.2 文件系统的架构2.2.1 超级块作用分析2.2.2 dentry作用分析2.2.3 inode作用分析2.2.4 文件作用分析2.3 从代码层次深入分析文件系统2.3.1 一个最简单的文件系统aufs2.3.2 文件系统如何管理目录和文件2.3.3 文件系统的挂载过程2.3.4 文件打开的代码分析2.4 本章小结第3章 设备的概念和总体架构3.1 设备的配置表3.2 访问设备寄存器和设备内存3.3 设备中断和DMA3.4 总线对设备的扫描3.5 设备驱动管理3.6 本章小结第4章 为设备服务的特殊文件系统sysfs4.1 文件和目录的创建4.1.1 sysfs文件系统的初始化4.1.2 sysfs文件系统目录的创建4.1.3 普通文件的创建4.2 sysfs文件的打开操作4.2.1 real_lookup函数详解4.2.2 为文件创建inode结构4.2.3 为dentry结构绑定属性4.2.4 调用文件系统中的open函数4.3 sysfs文件的读写4.3.1 读文件的过程分析4.3.2 写文件的过程分析4.4 kobject结构4.4.1 kobject和kset的关系4.4.2 kobject实例:总线的注册4.5 本章小结第5章 字符设备和input设备5.1 文件如何变成设备5.1.1 init_special_inode函数5.1.2 def_chr_fops结构5.2 input设备的注册5.2.1 主从设备号5.2.2 把input设备注册到系统5.2.3 设备区间的登记5.2.4 注册字符设备5.2.5 打开input设备5.3 input设备架构5.3.1 注册input设备的驱动5.3.2 匹配input管理的设备和驱动5.3.3 注册input设备5.4 本章小结第6章 platform总线6.1 从驱动发现设备的过程6.1.1 驱动的初始化6.1.2 注册驱动6.1.3 为总线增加一个驱动6.1.4 驱动加载6.1.5 遍历总线上已经挂载的设备6.2 从设备找到驱动的过程6.2.1 注册设备和总线类型6.2.2 注册设备的资源6.2.3 增加一个设备对象6.3 本章小结第7章 serio总线7.1 什么是总线适配器7.2 向serio总线注册设备7.2.1 注册端口登记事件7.2.2 遍历总线的驱动7.2.3 注册input设备7.3 虚拟键盘驱动7.3.1 键盘驱动的初始化7.3.2 与设备建立连接7.3.3 启动键盘设备7.3.4 输入设备和主机系统之间的事件7.4 键盘中断7.4.1 q40kbd设备的中断处理7.4.2 serio总线的中断处理7.4.3 驱动提供的中断处理7.5 本章小结第8章 PCI总线8.1 深入理解PCI总线8.1.1 PCI设备工作原理8.1.2 PCI总线域8.1.3 PCI资源管理8.1.4 PCI配置空间读取和设置8.2 PCI设备扫描过程8.2.1 扫描0号总线8.2.2 扫描总线上的PCI设备8.2.3 扫描多功能设备8.2.4 扫描单个设备8.2.5 扫描设备信息8.3 本章小结第9章 块设备9.1 块设备的架构9.1.1 块设备、磁盘对象和队列9.1.2 块设备和通用磁盘对象的绑定9.1.3 块设备的队列和队列处理函数9.2 块设备创建的过程分析9.2.1 nbd驱动的初始化9.2.2 为通用磁盘对象创建队列成员9.2.3 将通用磁盘对象加入系统9.3 块设备文件系统9.3.1 块设备文件系统的初始化9.3.2 块设备文件系统的设计思路9.4 块设备的打开流程9.4.1 获取块设备对象9.4.2 执行块设备的打开流程9.5 本章小结第10章 文件系统读写10.1 page cache机制10.1.1 buffer I/O和direct I/O10.1.2 buffer head和块缓存10.1.3 page cache的管理10.1.4 page cache的状态10.2 文件预读10.3 文件锁10.4 文件读过程代码分析10.5 读过程返回10.6 文件写过程代码分析10.7 本章小结第11章 通用块层和scsi层11.1 块设备队列11.1.1 scsi块设备队列处理函数11.1.2 电梯算法和对象11.2 硬盘HBA抽象层11.3 I/O的顺序控制11.4 I/O调度算法11.4.1 noop调度算法11.4.2 deadline调度算法11.5 I/O的处理过程11.5.1 I/O插入队列的过程分析11.5.2 I/O出队列的过程分析11.5.3 I/O返回路径11.6 本章小结第12章 内核回写机制12.1 内核的触发条件12.2 内核回写控制参数12.3 定时器触发回写12.3.1 启动定时器12.3.2 执行回写操作12.3.3 检查需要回写的页面12.3.4 回写超级块内的inode12.4 平衡写12.4.1 检查直接回写的条件12.4.2 回写系统脏页面的条件12.4.3 检查计算机模式12.5 本章小结第13章 一个真实文件系统ext213.1 ext2的硬盘布局13.2 ext2文件系统目录树13.3 ext2文件内容管理13.4 ext2文件系统读写13.5 本章小结
腾讯资深Linux内核专家10余年工作经验结晶,业界多位专家联袂推荐,Linux内核工程师和驱动开发工程师的必读之作。 从工业需求角度另辟蹊径,注重效率和实用性,将Linux内核分为基础部分和应用部分以及内核架构和内核实现两个维度,对Linux内核的文件系统、设备驱动的架构设计与实现原理进行了深入分析。 更多精彩好书推荐,请点击图片查看: 海报: 《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》从工业需求角度出发,注重效率和实用性,是帮助内核研发及调试、驱动开发等领域工程师正确认识并高效利用Linux内核的难得佳作!作者是腾讯公司资深的Linux内核专家和存储系统专家,在该领域工作和研究的10余年间,面试了数百位Linux内核工程师,深知学习Linux内核过程中经常遇到的困惑,以及在工作中容易犯的错误。基于这些原因作者撰写了本书。本书出发点和写作方式可谓独辟蹊径,将Linux内核分为两个维度,一是基础部分和应用部分,二是内核架构和内核实现,将两个维有机统一,深入分析了Linux内核的文件系统、设备驱动的架构设计与实现原理。 《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》在逻辑上分为三部分:第一部分(第1~2章)首先将内核层划分为基础层和应用层,讲解了基础层包含的服务和数据结构,以及应用层包含的各种功能,然后对文件系统的架构进行了提纲挈领的介绍,为读者学习后面的知识打下基础;第二部分(第3~9章)从设备到总线到驱动,逐步深入,剖析了设备的总体架构、为设备服务的特殊文件系统sysfs、字符设备和input设备、platform总线、serio总线、PCI总线、块设备的实现原理和工作机制;第三部分(第10~13章)对文件系统的读写机制进行了深入分析,最后通过一个真实文件系统ext2,复习本书所有知识点。【作者简介】高剑林,资深Linux内核专家、存储系统专家、嵌入式系统专家。先后就职于华为、UT斯达康、赛门铁克等公司,从事路由器设备研发、软件开发和存储系统研究相关的工作10余年,经验非常丰富。现就职于腾讯,负责存储系统的开发和研究。
孙更新, 宾晟, 孙海伦, 编著
工业和信息化部软件与集成电路促进中心, 编著
(日) 高桥浩和, 等著
赵炯, 编著
赵炯, 编著
(美) 拜克 (Beck,M.) , (美) 鲍姆 (Bohme,H.) , (美) 戴治卡 (Dziadzka,M.) , 著
赵炯, 编著
华清远见嵌入式培训中心, 编著
(德) 莫尔勒 (Mauerer,W.) , 著