热门搜索: 中考 高考 考试 开卷17
服务电话 024-96192/23945006
 

精通LINUX内核:智能设备开发核心技术

编号:
wx1201989438
销售价:
¥113.52
(市场价: ¥129.00)
赠送积分:
114
商品介绍

经验:作者曾就职于华为/Intel/AMD,多位x86专家担当顾问实用:内核重点、工作疑惑、常见陷阱、关键数据结构全收录深入:作者阅读代码量数百万行,透视模块间关联和背后逻辑动手:配有大量实例,复杂机制均以图表形式帮读者厘清脉络

精通Linux内核:智能设备开发核心技术共五篇,以从易到难的顺序详细剖析了Linux内核开发的核心技术。“知识储备篇”介绍了Linux的数据结构、中断处理、内核同步和时间计算等内容,这些是理解后续章节的前提。之后通过“内存管理篇”“文件系统篇”“进程管理篇”详细介绍了Linux的三大核心模块。*后的“升华篇”则融合了前面诸多模块展示了Linux内核开发在操作系统、智能设备、驱动、通信、芯片以及人工智能等热点领域的应用。书中的重点、难点均配以图表、代码和实战案例进行展示,有助于提高读者的动手操作能力。精通Linux内核:智能设备开发核心技术的读者需要熟悉C语言,对Linux内核有一定了解。推荐初学者按照本书的编排顺序阅读,而熟悉Linux内核的读者可以跳过第壹篇,直接从三大核心模块篇进行阅读。本书可作为Linux初中级读者系统学习Linux内核开发的指导手册,也可作为从事嵌入式、操作系统、Linux编程、驱动/内核开发,以及智能设备开发等工作工程师的案头指南和进阶工具书。

姜亚华曾负责华为手机的Touch、Sensor的驱动和软件优化(包括Mate、荣耀等系列),以及Intel安卓平台Camera和Sensor的驱动开发(包括Baytrail、Cherrytrail、Cherrytrail CR、Sofia等);现负责DMA、Interrupt、Semaphore等模块的优化和验证(包括Vega、Navi系列和多款APU产品。)。一直从事与Linux内核和Linux编程相关的工作,研究内核代码十多年,对多数模块的细节如数家珍。熟悉Linux程序,对Linux常见机制的使用理解透彻。曾在华为终端软件精英赛中获奖,三次获得AMD Spotlight奖励。

序一序二前言知识储备篇 章 基于Linux内核的操作系统1.1 处理器、平台和操作系统1.2 以安卓为例剖析操作系统1.2.1 安卓的整体架构1.2.2 Linux内核的核心作用1.3 内核整体架构1.3.1 内核代码的目录结构1.3.2 内核的核心模块及关联1.4 实例分析1.4.1 系统响应“点击智能手机触摸屏”的过程1.4.2 智能手机的传感器游戏第2章 数据结构的使用2.1 关系型数据结构2.1.1 一对一关系2.1.2 一对多关系2.1.3 多对多关系2.2 位操作数据结构2.3 模块和内核参数传递2.3.1 内嵌通用数据结构2.3.2 通用结构的私有变量2.4 实例分析2.4.1 模块的封装2.4.2 火眼金睛:看破数据结构第3章 时间的衡量和计算3.1 数据结构3.2 时钟芯片3.3 从内核的角度看时间3.4 周期性和单触发的时钟中断3.5 时间相关的系统调用3.5.1 获取时间3.5.2 给程序定个闹钟3.6 实例分析3.6.1 实现智能手机的长按操作3.6.2 系统的时间并不如你所想第4章 中断和中断处理4.1 处理器识别中断4.2 处理中断4.2.1 中断处理程序4.2.2 中断服务例程4.2.3 中断处理4.3 中断返回4.4 系统调用4.5 软中断4.5.1 原理4.5.2 小任务tasklet4.5.3 定时器4.6 实例分析4.6.1 使用中断向无人驾驶系统报告紧急事件4.6.2 使用watchdog预防无人机坠落第5章 内核同步5.1 临界区的竞争5.2 同步原语5.2.1 每CPU变量5.2.2 volatile关键字5.2.3 屏障5.2.4 atomic变量5.2.5 禁中断5.2.6 禁抢占5.2.7 自旋锁5.2.8 读写锁5.2.9 顺序锁5.2.10 信号量5.2.11 互斥锁5.2.12 读-拷贝-更新5.3 实例分析5.3.1 无人驾驶模式与人工驾驶模式的切换5.3.2 智能手机触摸屏的report和suspend第6章 事件的同步与异步6.1 事件的异步6.2 事件的同步6.2.1 等待一段时间6.2.2 等待事件完成6.3 实例分析6.3.1 使用工作队列轮询无人车环境感知数据6.3.2 使用等待队列等待芯片“回复” 内存管理篇 第7章 内存寻址7.1 处理器眼中的内存7.2 内存分页7.2.1 寻址:处理器的寻宝游戏7.2.2 内存映射7.3 实例分析7.3.1 访问GPU的帧缓冲7.3.2 MMIO的映射第8章 物理内存的管理8.1 物理内存的组织形式8.2 启动程序8.3 memblock分配器8.4 伙伴系统8.4.1 数据结构8.4.2 页的申请和释放8.5 实例分析8.5.1 构造一个内存管理系统8.5.2 安卓的ION第9章 内存线性空间布局9.1 线性空间划分9.2 内核线性空间布局9.2.1 直接映射区9.2.2 动态映射区9.2.3 永久映射区9.2.4 固定映射区9.3 mmap机制9.3.1 函数原型9.3.2 数据结构9.3.3 mmap的实现9.3.4 内存映射的总结9.4 内存申请9.4.1 得到物理内存9.4.2 得到虚拟内存9.5 实例分析9.5.1 通过dev映射内存9.5.2 几种不同的mmap映射方式0章 内存管理进阶10.1 处理器的缓存10.1.1 TLB缓存10.1.2 内存缓存10.2 缺页异常10.2.1 处理缺页异常10.2.2 COW的精髓10.3 实例分析10.3.1 利用Cache的特性优化深度学习开发10.3.2 内核为molloc做了什么 文件系统篇 1章 文件系统11.1 概念和数据结构11.2 文件系统的挂载11.3 查找文件11.4 文件操作11.4.1 创建和删除目录11.4.2 打开和关闭文件11.4.3 文件的链接11.4.4 创建节点11.4.5 删除文件11.5 文件的IO11.5.1 fcntl函数11.5.2 文件的读写11.5.3 ioctl函数11.6 实例分析11.6.1 包罗万象的proc文件系统11.6.2 陌生又熟悉的devtmpfs文件系统2章 sysfs文件系统12.1 基本框架12.2 数据结构12.3 创建文件12.4 文件的IO12.5 实例分析12.5.1 利用sysfs协助驱动调试12.5.2 智能家居:自动调整灯光的亮度和色温3章 ext4文件系统13.1 概述13.2 数据结构13.2.1 ext4_super_block结构体13.2.2 ext4_group_desc结构体13.2.3 ext4_inode结构体13.2.4 ext4_sb_info结构体13.2.5 ext4_inode_info结构体13.3 ext4的挂载13.4 目录的结构13.4.1 线性目录13.4.2 哈希树目录13.4.3 硬链接13.5 文件的IO13.5.1 映射13.5.2 区段树13.6 实例分析13.6.1 恢复删除的文件并不神秘13.6.2 文件系统的修复 进程管理篇 4章 进程14.1 概述14.1.1 数据结构14.1.2 扩展讨论14.2 进程的创建14.2.1 dup_task_struct函数14.2.2 复制creds14.2.3 设置时间14.2.4 sched_fork函数14.2.5 复制资源14.2.6 申请pid14.2.7 重要的杂项14.3 创建进程14.3.1 fork/vfork系统调用14.3.2 创建线程14.3.3 创建内核线程14.4 进程“三巨头”14.5 进程退出14.5.1 退出方式14.5.2 退出过程14.5.3 使用wait等待子进程14.6 实例分析14.6.1

2013年11月,我加入Intel,开始创作本书,最初决定在3.10版本的内核基础上写作,转眼间多年已逝,内核版本已经更新到5.x,本书也随之更新至5.05版本。少数讨论也涉及3.10版本的内容,保留它们主要是希望可以让读者看到内核的更新和优化思路。建议读者在阅读本书时,可以下载3.10和5.05两个版本的内核代码作为参考。内容本书分为以下五个部分。知识储备篇:包括常见的数据结构、时间、中断处理和内核同步等内容,是后面几部分内容的学习基础,希望读者能够从中了解内核的概况,在后续章节中见到相关知识时不会感觉陌生。尤其是2.1关系型数据结构一节,它是理解其他章节数据结构间关系的基础。内存管理篇:包括内存寻址、物理内存和线性内存空间的管理以及缺页异常等内容。希望读者能够从中学习到内存映射的原理,理解管理内存的过程,在调用内核提供的函数时能够明白内核为用户做了哪些操作。文件系统篇:包括VFS的流程,sysfs、proc和devtmpfs文件系统的实现,ext4文件系统的解析。希望读者能够掌握文件系统的流程、文件操作的实现、sysfs等文件系统的特点以及ext4文件系统的原理。尤其是ext4文件系统,本书列举了大量的实操案例,希望读者可以理解它的精髓。进程管理篇:包括进程原理、进程调度、信号处理、进程通信和程序执行等内容,希望读者能够掌握进程间的关系、进程调度的过程、进程通信的原理、信号的处理过程等。理解进程的创建过程尤为重要,它涵盖了进程实现的原理。升华篇:包括I/O多路复用、input子系统、V4L2架构、Linux设备驱动模型、Binder通信和驱动的实现等内容。升华篇综合了前几部分的知识,希望读者可以掌握它们的原理,使用起来得心应手。从难易程度来讲,这五部分内容是由浅入深的。本书仅罗列了关键或者复杂的代码,从它们包含的代码就可以得知难易程度。知识储备篇偏向工具和基础知识,以原理分析为主。内存管理、文件系统和进程管理篇是重心,代码量优选,这些代码一方面可以帮助读者理清整体的软件架构,另一方面方便读者在学习的时候不会因为手头没有代码而感到无从下手,最重要的是代码才是结论背后的真相,直接给出结论让技术变成了死记硬背的工具岂不无趣。致谢感谢我的研究生导师芦鹏宇,芦老师待人平和耐心,工作一丝不苟,帮助我在校时就树立了正确的做人和做事的方向。芦老师对技术不懈追求的态度,在我毕业时就已经深深烙在心里,并且始终影响着我。感谢芦老师,感谢“规格严格,功夫到家”的哈尔滨工业大学。这八字校训一直激励着我,无数个像芦老师一样的园丁用行动将它们教给我们这些学生。感谢华为的陈栋,很幸运在我份工作中可以遇到一个对技术有信仰的前辈,他对技术不懈追求的态度让我在份工作中养成了良好的习惯。感谢Intel的刘骏、徐杰、黄卫强、王龙和Foster,刘骏将我招入Intel,更开阔了我的视野,改变了我的人生轨迹。我曾经问他,他希望我在有余力的情况下学习些什么知识,他的回答是只要是学习,就会有帮助,无论什么。徐杰在我的工作中,对我信任有加,处处委以重任,让我在很短的时间内快速成长。黄卫强和王龙是我在Intel的师傅(Buddy),在工作和生活中给了我很多建议,至今受用。Foster是BIOS和x86专家,帮助我快速地熟悉x86的原理。感谢AMD的Winston、Gavin和Jennifer,让我在AMD学习到了很多芯片相关的知识,完成了本书的最后一环。Jennifer交给我具有挑战性的工作,让我在新的角色中快速成长。序 一每一个有技术情结的软件兄弟,几乎都有一个内核梦,笔者也曾立志于此。也许对于Linus Torvalds这样的大牛而言,内核最佳的学习方式就是“reading the source code(读取源代码)”。但是,对于普通开发者尤其是刚准备入行的读者而言,理解Linux Kernel绝非易事,Kernel代码晦涩难懂,且规模宏大,具有“内涵深、外延广”的属性。笔者作为过来人,对此有着切身体会。就如欣赏一些经典而有深度的电影,次看可能感受不到导演的深意,甚至完全一头雾水,这时候要结合影评和经典片段咀嚼,才能真正欣赏到影片的“别有洞天”之处,最终才会有一通百通、豁然开朗的快感。学习Linux内核也是如此,核心代码的充分注释和深入剖析不可或缺。本书内容非常实用、清晰,和许多同学一样,亚华(本书作者)也是因为兴趣和爱好,从一个“一穷二白”的民科投入到Linux内核的学习和研究的。在这个追梦的过程中,大家所遇到的困惑和挑战也曾经发生在他的身上,他愈挫愈勇,把成长路上的点点滴滴都用源代码分析和图解等方式写进了自己的图书中。阅读此书,您的感觉就相当于聆听民间音乐爱好者歌唱,也许他的歌喉和技巧不是最好的,但是投入的感情却是绝对真挚的,所以您的感动、共鸣和收获将会不遑多让。希望这本历经五年多完成的Linux内核的图书能让广大读者开卷有益,更希望与广大Linux内核爱好者进行共享、研讨和碰撞,在矛盾攻守的角色转换中升华自己的理解,从而共同提高。华为Android系统优化专家陈栋 序 二进入21世纪,IT技术高速发展。Linux 操作系统作为开源软件的重要一员,得到了国内外开源爱好者和产业界的持续关注。云计算、服务器、桌面、终端、嵌入式系统等领域都将Linux作为首选的操作系统。作为Linux操作系统的核心,Linux内核以开放、自由、协作、高质量等特点吸引众多顶尖科技公司的参与,并有庞大的开发者为Linux内核贡献高质量的代码。本人有幸与本书作者共事多年,共同参与了本书中提到的诸多实际项目,个人认为本书是一本不可多得的理论结合实战的参考书籍,具体有以下几点与大家分享。一、逻辑清晰:从知识储备入手,引入Linux核心模块,包括内存管理、文件系统和进程管理。最后引入本书精华部分,从系统角度探讨智能设备的传感器系统、多媒体系统以及I/O等。分析由浅入深,循序渐进。二、实战性强:作者结合多年的智能设备核心系统开发经验,把理论和实践相结合,帮助读者快速掌握理论知识的同时,提升实战经验。三、与时俱进:作者引入热门的智能手机、无人机、无人驾驶等技术,利用Linux内核来构建新的应用场景,对从业者有启发作用。总之,本人阅读本书后,收获颇多。感谢作者的辛勤付出,希望作为开源爱好者的读者,也能从本书中多多受益!Intel IoT、边缘计算、AI技术专家原Intel scalability团队负责人徐杰

商品参数
基本信息
出版社 机械工业出版社
ISBN 9787111639602
条码 9787111639602
编者 姜亚华
译者
出版年月 2019-11-01 00:00:00.0
开本 16开
装帧 平装
页数 463
字数 738
版次 1
印次 1
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]