博文视点Broadview
以下文章来源于人人极客社区 ,作者布道师Peter
人人极客社区 .
工程师们自己的Linux底层技术社区,分享体系架构、内核、网络、安全和驱动。
大家好,我是皮哥 Peter,十年磨一剑,我的新书《打通Linux操作系统和芯片开发》上市了!
为了保证体验,咱们这本采用的是彩色印刷,再加上图非常多,整书体验非常的棒,大家可以看下面视频里的实际体验:
为什么写本书
毕业后我一直从事于底层技术开发,从最初的驱动开发、内核开发、安卓 Framework 开发、再到芯片级的系统开发,一直对底层的本质原理有着浓厚的兴趣,十多年的工作沉淀对操作系统和芯片级的软件开发有着一定的理解。希望通过某种方式把自己的一些总结记录下来。另外我一直认为,如果把人比作计算机的话,人的大脑更像是 CPU,并不适合用来存储记忆,特别是随着时间的推移,经验也会遗忘,所以需要有像硬盘一样的东西把内容记录下来,这也是我选择写书的原因之一。
为什么选择写打通操作系统和芯片开发的内容?我们知道计算机是个变化极快的行业,特别是从事互联网行业的朋友,经常面对技术的更新,开发语言的迭代,每天过的都很焦虑,随着新人的入职,技术的变化,老人的技术经验似乎无法得到发挥,这也是为什么都说程序员有35岁失业的根本原因。那么技术更新不那么快的行业是不是就好点了呢?的确如此,比如更加底层的嵌入式行业,操作系统行业,芯片行业等都会比互联网行业好很多,特别是同时懂软件和硬件的工程师,甚至随着时间的推移,越老越吃香,而且国家越来越重视底层技术的开发。即便是在互联网行业,如果你对底层技术有着深厚的积累,依然可以很有竞争力,就相当是拥有了武侠片中的内功,一旦有了雄厚的内功,其它武功你一看就明白,一学就会,任何招式你和别人打出去的威力就不是一个级别。这种帮助无论对嵌入式开发者,还是对互联网程序员都是非常明显的。
学习最重要的是什么?其实很简单,好的资料加好的老师,然后花时间投入进去。现在人工智能发展很快,特别是大模型的出现,几乎每个人都可以拥有自己的智能助手,完全可以利用人工智能充当好的老师。好的老师有了,那学习资料呢?我刚毕业那会学习资料很少,更不用说偏向底层的计算机书籍,只能通过阅读代码的方式一边理解,一边猜测背后的逻辑,很痛苦。很羡慕现在的学生,无论是视频、图文,还是自媒体、纸质书,市面上的学习资料很多,大大降低了学习的门槛。但这也是最大的问题,资料太多带来的筛选成本和学习成本也很高。而且我发现,市场上虽然有很多操作系统、Linux 内核、芯片开发的书籍,但彼此内容都是隔离的,芯片、硬件开发者想了解软件开发的人很多,但还是无法找到合适的书籍。软件开发者想了解底层硬件技术原理,也是无法找到合适的内容,这一度让有志于挖掘底层技术原理的工作者无从下手。这也是我选择写此书的原因之一,希望《打通操作系统和芯片开发》能帮助一些人找到提升内功的把手,借此机会在技术的道路上更上一层。
权威认证
很荣幸,《打通Linux操作系统和芯片开发》得到业界权威认证,受到了“鸿蒙之父”陈海波、RT-Thread创始人熊谱翔、飞漫科技创始人魏永明、嵌入式大咖韦东山、内核大佬宋宝华等良师益友的重磅推荐!
本书主要内容
全书共 13 章内容,操作系统部分涉及内存管理,进程管理,文件系统,同步管理,以及系统调用。芯片 SoC 部分涉及 SoC bringup 的过程,设备模型,设备树原理,电源模块,时钟模块,引脚模块,时间模块以及中断模块,这些模块都是芯片运行操作系统的基本要求。站在一线开发者的角度先剖析 Kernel 6.6 的实现原理,然后结合恩智浦 i.MX9 芯片的 SoC 硬件原理,由浅入深的讲解操作系统和 SoC 的不解之谜。本书涵盖以下主要内容。
第1章介绍内存管理,包括内存管理的机制,CPU访问内存的过程,内存架构和内存模型,memblock物理内存初始化和映射,物理内存的软件划分,页帧分配器的实现,快速分配之水位控制,快速分配之伙伴系统,慢速分配之内存碎片整理。
第2章介绍进程管理,包括内核对进程的描述,用户态进程、线程的创建,do_fork 函数的实现,进程的调度,SMP的负载均衡等内容。
第3章介绍文件系统,包括磁盘的物理结构,查看文件系统,查找 ext4 文件系统的过程,虚拟文件系统的原理。
第4章介绍同步管理,包括原子操作、 自旋锁,信号量 、互斥锁,RCU等内容。
第5章介绍系统调用,包括系统调用的定义,从内核态和用户态讲解系统调用的处理流程。
第6章介绍 SoC bringup,从 Uboot 启动前,到 Uboot 的初始化,再到 Kernel 的初始化。内容包括 SPL 的工作流程,ATF 的工作流程,Uboot 的过程,以及 Kernel 各个子系统的初始化流程。
第7章介绍设备模型,这是进入研究设备驱动的基础,内容包括设备模型的基石,设备模型的探究,最后手把手和大家一起定制一块开发板。
第8章介绍设备树原理,涉及设备树的基本用法,设备树的深度解析。
第9章介绍电源模块,这是操作系统在SoC上运行的动力来源,内容涉及电源 Power Domain 的软硬件实现,电源 Runtime PM 的软硬件实现。
第10章介绍时钟模块,这是操作系统在 SoC 上运行的心跳,内容涉及时钟控制器的硬件实现,时钟子系统的实现,时钟控制器的驱动实现。
第11章介绍引脚模块,这是操作系统在 SoC 上运行的四肢,用来连接其它外设,内容涉及 IOMUX 控制器的硬件实现,IOMUX 控制器的驱动实现,以及引脚设备的驱动实现。
第12章介绍时间模块,这是操作系统在 SoC 上运行时的计时,内容涉及时间子系统的架构,定时器和时钟源的初始化,高分辨率定时器 hrtimer,低分辨率定时器,sched_timer。
第13章介绍中断模块,这是操作系统在 SoC 上运行时对外界的反馈,内容涉及中断控制器的硬件实现,中断控制器的驱动实现,中断下半部的实现过程。
学习本书好处
在人工智能时代,操作系统和芯片开发的技术广度大幅扩展。AI 芯片的普及和边缘计算、物联网等新兴技术的兴起,要求硬件与软件深度协同。例如,在边缘设备上运行AI模型时,开发者需要同时优化操作系统的资源管理和芯片的能耗控制。这种跨领域能力是 AI 时代技术发展的关键。
从技术深度看,操作系统和芯片开发的学习能帮助读者深入理解底层原理,提升性能优化、安全性和可靠性设计能力。例如,如何通过优化操作系统的调度算法和芯片的缓存机制来加速 AI 推理?如何设计安全的系统以保护隐私?这些问题的解决需要扎实的底层技术功底,为未来的技术创新奠定基础。此外还可以助我们:
顺利通过大厂面试。大厂面试通常非常注重技术深度。对于底层技术的考查,能够有效筛选出真正有实力的候选人。在面试中,很多应聘者可能对应用层技术有一定了解,但深入到操作系统原理、芯片架构等底层知识时,掌握这些知识的人相对较少。例如,在操作系统方面,能够深入讲解进程调度算法(如 CFS - 完全公平调度算法)、内存管理机制(如分页和分段机制)的应聘者会给面试官留下深刻印象。在芯片开发领域,了解芯片常用驱动等底层知识,能够在面试相关岗位时展现出自己的专业度。这是因为大厂往往有自己的底层技术研发需求,大厂在实际项目中会遇到很多与底层技术相关的问题。例如,软件在运行时出现性能瓶颈,可能与操作系统的内存分配不合理或者 CPU 调度策略不优化有关。掌握底层技术的人能够从根源上分析和解决这些问题,这在面试中通过案例分析等环节可以很好地体现出来。
拓宽技术职业方向。操作系统和芯片开发等底层技术的变化相对缓慢。与应用层技术频繁更新换代不同,底层技术的核心原理和架构在较长时间内保持稳定。例如,Linux 操作系统的内核架构虽然在不断发展,但基本的进程管理、内存管理等核心机制变化不大。学习这些底层技术可以让从业者在较长的职业生涯中保持技术的有效性和竞争力。而且掌握底层技术能够使从业者更容易实现技术迁移。无论是从不同行业领域之间的择业,还是从一种操作系统平台转向另一种,底层技术知识都能提供坚实的基础。例如,一个熟悉操作系统底层的开发者,在从传统 PC 操作系统开发转向移动操作系统开发时,能够更快地理解和适应新的开发环境,因为移动操作系统的很多底层原理(如进程管理、资源调度)与传统操作系统是相通的。在人工智能时代亦是如此。
缓解“35 岁失业“焦虑。在技术行业,35 岁左右往往面临年轻从业者的竞争压力。学习操作系统和芯片开发等底层技术可以建立起较高的技术壁垒。这些底层技术需要长时间的学习和实践才能掌握,相比年轻从业者普遍掌握的应用层技术,底层技术更能体现资深从业者的价值。例如,在企业裁员时,能够对操作系统内核进行优化或者对芯片设计进行改进的技术人员,因其不可替代的技术能力,被裁掉的风险相对较低。
尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...
时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...
如题 ...
读者评论