前言:
很多为Linux内核“吐血而亡”的程序员都犯了一个通病,那就是一开始就陷入无穷无尽的细节,比如一开始就陷入源代码情景分析。情景分析这样的书,无疑是好书,但是你把《新华字典》从第一个字,背到最后一个字,你仍然写不出一篇作文。
那么先来点真实的:学习Linux内核能上哪些岗位?有哪些阶段?怎么去学、该看哪些书呢?
下面我们来论述学习Linux内核的各个阶段
一、Linux内核组成
内核主要由进程管理、内存管理、设备驱动、文件系统、网络协议栈外加一个系统调用组成
学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
源码组织结构:
二、怎么才能学好Linux内核呢?
首先,Linux内核可不像C或者java那样,1~3个月你就能精通掌握。内核学习是需要一步一步循序渐进,掌握正确的linux内核学习路线对学习至关重要,本篇文章就来分享学习linux内核的一些建议吧。
1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。
3. 在了解Linux内核的一些基本知识点后,接下来可以开始学习《深入理解Linux内核》(作者:Daniel P. Bovet)了。这本书有些内容比较抽象,学习起来比较费神,所以看这本书的时候,要多结合内核代码看着学。
4. 在熟悉Linux内核之后,有的朋友想要从事内核驱动开发岗位的相关工作的话,可以学习《Linux设备驱动程序》,作为驱动入门的书籍,是非常实用的资料。学习驱动,免不了要学习一些硬件的协议和资料,研究哪个就找到相应的硬件文档,把硬件的工作原理搞明白。这些就不细说了。
5. 现在很多Linux相关的工作(包括内核),大都集中在嵌入式开发领域,arm,mips等,要学习以下这些体系架构的的资料,了解CPU的设计和工作方式。ARM就看对应的芯片手册,讲的很细致。MIPS就看 《see mips run》,有一二两版,两版内容有些差异,推荐都看。
6. 关于linux内核学习,再补充一些细节方面的东西吧:
- 学习Linux应用编程,建议看《unix环境高级编程》,把里面的例子都做一遍,会对整个Linux编程有系统都认识。
- 针对Linux,有本 《Linux系统编程》,学完上一本,这本很快看一遍就懂了。主要是针对Linux具体懂一些内容,讲的挺全了,很实用。
- Linux网络编程,系统的学习一下《unix网络编程。卷1,套接字联网api》,基本上网络应用相关的程序就都没问题了。
三、学好Linux内核之后,有哪些福利待遇好的岗位推荐?
1、技术类岗位
后端开发、协议栈开发:
数据架构师:
人工智能:
2、设计类岗位
ARM开发、驱动开发