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

Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2013-12
版次: 1
ISBN: 9787111445852
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 232页
正文语种: 简体中文
原版书名: 高剑林
94人买过
  •   《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》从工业需求角度出发,注重效率和实用性,是帮助内核研发及调试、驱动开发等领域工程师正确认识并高效利用Linux内核的难得佳作!作者是腾讯公司资深的Linux内核专家和存储系统专家,在该领域工作和研究的10余年间,面试了数百位Linux内核工程师,深知学习Linux内核过程中经常遇到的困惑,以及在工作中容易犯的错误。基于这些原因作者撰写了本书。本书出发点和写作方式可谓独辟蹊径,将Linux内核分为两个维度,一是基础部分和应用部分,二是内核架构和内核实现,将两个维有机统一,深入分析了Linux内核的文件系统、设备驱动的架构设计与实现原理。
      《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》在逻辑上分为三部分:第1部分(第1~2章)首先将内核层划分为基础层和应用层,讲解了基础层包含的服务和数据结构,以及应用层包含的各种功能,然后对文件系统的架构进行了提纲挈领的介绍,为读者学习后面的知识打下基础;第二部分(第3~9章)从设备到总线到驱动,逐步深入,剖析了设备的总体架构、为设备服务的特殊文件系统sysfs、字符设备和input设备、platform总线、serio总线、PCI总线、块设备的实现原理和工作机制;第三部分(第10~13章)对文件系统的读写机制进行了深入分析,最后通过一个真实文件系统ext2,复习本书所有知识点。
      高剑林,资深Linux内核专家、存储系统专家、嵌入式系统专家。先后就职于华为、UT斯达康、赛门铁克等公司,从事路由器设备研发、软件开发和存储系统研究相关的工作10余年,经验非常丰富。现就职于腾讯,负责存储系统的开发和研究。
    前言
    第1章内核的基础层和应用层
    1.1内核基础层提供的服务
    1.1.1内核中使用内存
    1.1.2内核中的任务调度
    1.1.3软中断和tasklet
    1.1.4工作队列
    1.1.5自旋锁
    1.1.6内核信号量
    1.1.7原子变量
    1.2内核基础层的数据结构
    1.2.1双向链表
    1.2.2hash链表
    1.2.3单向链表
    1.2.4红黑树
    1.2.5radix树
    1.3内核应用层
    1.4从Linux内核源码结构纵览内核
    1.5内核学习和应用的四个阶段
    1.6本章小结
    第2章文件系统
    2.1文件系统的基本概念
    2.1.1什么是VFS
    2.1.2超级块super_block
    2.1.3目录项dentry
    2.1.4索引节点inode
    2.1.5文件
    2.2文件系统的架构
    2.2.1超级块作用分析
    2.2.2dentry作用分析
    2.2.3inode作用分析
    2.2.4文件作用分析
    2.3从代码层次深入分析文件系统
    2.3.1一个最简单的文件系统aufs
    2.3.2文件系统如何管理目录和文件
    2.3.3文件系统的挂载过程
    2.3.4文件打开的代码分析
    2.4本章小结
    第3章设备的概念和总体架构
    3.1设备的配置表
    3.2访问设备寄存器和设备内存
    3.3设备中断和DMA
    3.4总线对设备的扫描
    3.5设备驱动管理
    3.6本章小结
    第4章为设备服务的特殊文件系统sysfs
    4.1文件和目录的创建
    4.1.1sysfs文件系统的初始化
    4.1.2sysfs文件系统目录的创建
    4.1.3普通文件的创建
    4.2sysfs文件的打开操作
    4.2.1real_lookup函数详解
    4.2.2为文件创建inode结构
    4.2.3为dentry结构绑定属性
    4.2.4调用文件系统中的open函数
    4.3sysfs文件的读写
    4.3.1读文件的过程分析
    4.3.2写文件的过程分析
    4.4kobject结构
    4.4.1kobject和kset的关系
    4.4.2kobject实例:总线的注册
    4.5本章小结
    第5章字符设备和input设备
    5.1文件如何变成设备
    5.1.1init_special_inode函数
    5.1.2def_chr_fops结构
    5.2input设备的注册
    5.2.1主从设备号
    5.2.2把input设备注册到系统
    5.2.3设备区间的登记
    5.2.4注册字符设备
    5.2.5打开input设备
    5.3input设备架构
    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.1q40kbd设备的中断处理
    7.4.2serio总线的中断处理
    7.4.3驱动提供的中断处理
    7.5本章小结
    第8章PCI总线
    8.1深入理解PCI总线
    8.1.1PCI设备工作原理
    8.1.2PCI总线域
    8.1.3PCI资源管理
    8.1.4PCI配置空间读取和设置
    8.2PCI设备扫描过程
    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.1nbd驱动的初始化
    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.1pagecache机制
    10.1.1bufferI/O和directI/O
    10.1.2bufferhead和块缓存
    10.1.3pagecache的管理
    10.1.4pagecache的状态
    10.2文件预读
    10.3文件锁
    10.4文件读过程代码分析
    10.5读过程返回
    10.6文件写过程代码分析
    10.7本章小结
    第11章通用块层和scsi层
    11.1块设备队列
    11.1.1scsi块设备队列处理函数
    11.1.2电梯算法和对象
    11.2硬盘HBA抽象层
    11.3I/O的顺序控制
    11.4I/O调度算法
    11.4.1noop调度算法
    11.4.2deadline调度算法
    11.5I/O的处理过程
    11.5.1I/O插入队列的过程分析
    11.5.2I/O出队列的过程分析
    11.5.3I/O返回路径
    11.6本章小结
    第12章内核回写机制
    12.1内核的触发条件
    12.2内核回写控制参数
    12.3定时器触发回写
    12.3.1启动定时器
    12.3.2执行回写操作
    12.3.3检查需要回写的页面
    12.3.4回写超级块内的inode
    12.4平衡写
    12.4.1检查直接回写的条件
    12.4.2回写系统脏页面的条件
    12.4.3检查计算机模式
    12.5本章小结
    第13章一个真实文件系统ext2
    13.1ext2的硬盘布局
    13.2ext2文件系统目录树
    13.3ext2文件内容管理
    13.4ext2文件系统读写
    13.5本章小结
  • 内容简介:
      《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》从工业需求角度出发,注重效率和实用性,是帮助内核研发及调试、驱动开发等领域工程师正确认识并高效利用Linux内核的难得佳作!作者是腾讯公司资深的Linux内核专家和存储系统专家,在该领域工作和研究的10余年间,面试了数百位Linux内核工程师,深知学习Linux内核过程中经常遇到的困惑,以及在工作中容易犯的错误。基于这些原因作者撰写了本书。本书出发点和写作方式可谓独辟蹊径,将Linux内核分为两个维度,一是基础部分和应用部分,二是内核架构和内核实现,将两个维有机统一,深入分析了Linux内核的文件系统、设备驱动的架构设计与实现原理。
      《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计》在逻辑上分为三部分:第1部分(第1~2章)首先将内核层划分为基础层和应用层,讲解了基础层包含的服务和数据结构,以及应用层包含的各种功能,然后对文件系统的架构进行了提纲挈领的介绍,为读者学习后面的知识打下基础;第二部分(第3~9章)从设备到总线到驱动,逐步深入,剖析了设备的总体架构、为设备服务的特殊文件系统sysfs、字符设备和input设备、platform总线、serio总线、PCI总线、块设备的实现原理和工作机制;第三部分(第10~13章)对文件系统的读写机制进行了深入分析,最后通过一个真实文件系统ext2,复习本书所有知识点。
  • 作者简介:
      高剑林,资深Linux内核专家、存储系统专家、嵌入式系统专家。先后就职于华为、UT斯达康、赛门铁克等公司,从事路由器设备研发、软件开发和存储系统研究相关的工作10余年,经验非常丰富。现就职于腾讯,负责存储系统的开发和研究。
  • 目录:
    前言
    第1章内核的基础层和应用层
    1.1内核基础层提供的服务
    1.1.1内核中使用内存
    1.1.2内核中的任务调度
    1.1.3软中断和tasklet
    1.1.4工作队列
    1.1.5自旋锁
    1.1.6内核信号量
    1.1.7原子变量
    1.2内核基础层的数据结构
    1.2.1双向链表
    1.2.2hash链表
    1.2.3单向链表
    1.2.4红黑树
    1.2.5radix树
    1.3内核应用层
    1.4从Linux内核源码结构纵览内核
    1.5内核学习和应用的四个阶段
    1.6本章小结
    第2章文件系统
    2.1文件系统的基本概念
    2.1.1什么是VFS
    2.1.2超级块super_block
    2.1.3目录项dentry
    2.1.4索引节点inode
    2.1.5文件
    2.2文件系统的架构
    2.2.1超级块作用分析
    2.2.2dentry作用分析
    2.2.3inode作用分析
    2.2.4文件作用分析
    2.3从代码层次深入分析文件系统
    2.3.1一个最简单的文件系统aufs
    2.3.2文件系统如何管理目录和文件
    2.3.3文件系统的挂载过程
    2.3.4文件打开的代码分析
    2.4本章小结
    第3章设备的概念和总体架构
    3.1设备的配置表
    3.2访问设备寄存器和设备内存
    3.3设备中断和DMA
    3.4总线对设备的扫描
    3.5设备驱动管理
    3.6本章小结
    第4章为设备服务的特殊文件系统sysfs
    4.1文件和目录的创建
    4.1.1sysfs文件系统的初始化
    4.1.2sysfs文件系统目录的创建
    4.1.3普通文件的创建
    4.2sysfs文件的打开操作
    4.2.1real_lookup函数详解
    4.2.2为文件创建inode结构
    4.2.3为dentry结构绑定属性
    4.2.4调用文件系统中的open函数
    4.3sysfs文件的读写
    4.3.1读文件的过程分析
    4.3.2写文件的过程分析
    4.4kobject结构
    4.4.1kobject和kset的关系
    4.4.2kobject实例:总线的注册
    4.5本章小结
    第5章字符设备和input设备
    5.1文件如何变成设备
    5.1.1init_special_inode函数
    5.1.2def_chr_fops结构
    5.2input设备的注册
    5.2.1主从设备号
    5.2.2把input设备注册到系统
    5.2.3设备区间的登记
    5.2.4注册字符设备
    5.2.5打开input设备
    5.3input设备架构
    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.1q40kbd设备的中断处理
    7.4.2serio总线的中断处理
    7.4.3驱动提供的中断处理
    7.5本章小结
    第8章PCI总线
    8.1深入理解PCI总线
    8.1.1PCI设备工作原理
    8.1.2PCI总线域
    8.1.3PCI资源管理
    8.1.4PCI配置空间读取和设置
    8.2PCI设备扫描过程
    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.1nbd驱动的初始化
    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.1pagecache机制
    10.1.1bufferI/O和directI/O
    10.1.2bufferhead和块缓存
    10.1.3pagecache的管理
    10.1.4pagecache的状态
    10.2文件预读
    10.3文件锁
    10.4文件读过程代码分析
    10.5读过程返回
    10.6文件写过程代码分析
    10.7本章小结
    第11章通用块层和scsi层
    11.1块设备队列
    11.1.1scsi块设备队列处理函数
    11.1.2电梯算法和对象
    11.2硬盘HBA抽象层
    11.3I/O的顺序控制
    11.4I/O调度算法
    11.4.1noop调度算法
    11.4.2deadline调度算法
    11.5I/O的处理过程
    11.5.1I/O插入队列的过程分析
    11.5.2I/O出队列的过程分析
    11.5.3I/O返回路径
    11.6本章小结
    第12章内核回写机制
    12.1内核的触发条件
    12.2内核回写控制参数
    12.3定时器触发回写
    12.3.1启动定时器
    12.3.2执行回写操作
    12.3.3检查需要回写的页面
    12.3.4回写超级块内的inode
    12.4平衡写
    12.4.1检查直接回写的条件
    12.4.2回写系统脏页面的条件
    12.4.3检查计算机模式
    12.5本章小结
    第13章一个真实文件系统ext2
    13.1ext2的硬盘布局
    13.2ext2文件系统目录树
    13.3ext2文件内容管理
    13.4ext2文件系统读写
    13.5本章小结
查看详情
系列丛书 / 更多
相关图书 / 更多
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux操作系统项目化教程
周秀丽;张徐超;周密
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux C语言程序设计(微课视频版)
张同光;田文强;荆春棋;田乔梅;陈明
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux虚拟化——原理、方法和实战(KVM+Docker+OpenStack)
吴光科;李建尧;柯宇霖
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux源码趣读
闪客
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux自动化运维实战(Linux开发书系)
吴光科;彭威城;文·S
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux云计算——Kubernetes实战
吴光科;程浩;刑亚飞
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux运维从入门到精通
明日科技
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux操作系统项目化教程(第2版)
洪伟 主编;丁传炜 谢鹏 副主编
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
Linux企业高性能架构实战
吴光科;曹森;赵瑞丰