Bootstrap

为什么要学习linux内核源码以及如何学习Linux内核源码

操作系统 linux内核 学习的重要性

大学里普遍使用的操作系统是Windows,老师大多也用Windows。Windows的优势是界面友好,很容易上手,于是我们就养成了要配置东西了就去菜单找,用鼠标点点的习惯,似乎会攒电脑、装系统、配软件就能搞定一切问题。

一种操作系统对应的是一系列的软件生态,而大学里很多课程都是围绕Windows软件生态展开的。例如学C++用的是Vistual Studio,学数据库用的是SQL Server,做网站用的是IIS等等。

大学里的操作系统课往往都是纯讲理论,讲了很多原理,但是压根儿没法和平时用的Windows系统的行为关联起来,也根本弄不清操作系统在底层到底是怎么做的。

Linux对于编程世界来说,简直就像一扇门。尽管门里的知识浩如烟海,每一本书都厚如砖头,但我发现这条路上任何一片景色都精彩无比。

对于服务器端,其中Linux可以称得上是中流砥柱。随着移动互联网的发展,客户端基本上以Android和iOS为主。Android是基于Linux内核的,因而客户端也进入了Linux阵营。可以说,在编程世界中,Linux就是主流,不会Linux你就会格格不入。

那些火得不行的技术,什么云计算、虚拟化、容器、大数据、人工智能,几乎都是基于Linux技术的。那些牛得不行的系统,团购、电商、打车、快递,都是部署在服务端,也几乎都是基于Linux技术的。

如果你想进大公司,想学新技术,Linux一定是一道绕不过去的坎。只有进入Linux操作系统这扇门,你才能成为合格的软件工程师。

Linux最大的优点就是开源。作为程序员,有了代码,啥都好办了。只要有足够的耐心,我们就可以一层一层看下去,看内核调度函数,看内存分配过程。理论理解起来不容易,但是一行行的“if-else”却不会产生歧义。

在Linux内核里,你会看到数据结构和算法的经典使用案例;你甚至还会看到并发情况下的保护这种复杂场景;在实践中遇到问题的时候,你可以直接参考内核中的实现。

再如,当你写代码的时候,大部分情况下都可以使用现成的数据结构和算法库,但是有些场景对于内存的使用需要限制到很小,对于搜索的时间需要限制到很小的时候,我们需要定制化一些数据结构,这个时候内核里面这些实现就很有参考意义了。

了解Linux操作系统生态,能让你事半功倍地学会新技术

Linux是一个生态,里面丰富多彩。很多大牛都是基于Linux来开发各种各样的软件。可以这么说,只要你能想象到的技术领域,几乎都能在里面找到Linux的身影。

数据库MySQL、PostgreSQL,消息队列RabbitMQ、Kafka,大数据Hadoop、Spark,虚拟化KVM、Openvswitch,容器Kubernetes、Docker,这些软件都会默认提供Linux下的安装、使用、运维手册,都会默认先适配Linux。

因此,在Linux环境下,很容易能够找到现成的工具,这不仅会让你的工作事半功倍,还能让你有亲密接触大牛思想的机会,这对于你个人的技术进步和职业发展都非常有益。

如果不进入Linux世界,你恐怕很难享受到开源软件如此多的红利。

Linux内核源码如何学习

面对浩若烟海的Linux内核源代码迷失在代码的海洋里不知所措?理解Linux操作系统运行的基本过程及涉及的核心机制。

Linux内核可以分一下6个模块用理论结合实践的方法一步一步抓住Linux内核最核心的部分代码

进程管理专题

内存管理专题

设备驱动专题

网络协议专题

内核组件专题

文件系统专题

Linux内核学习参考书籍

1、《深入理解LINUX内核》第三版[美]博韦等著

2、《Linux设备驱动开发详解》宋宝华编著

3、《Linux内核设计与实现》原书第3版拉芙(RobertLove)著

4、《深入理解LINUX网络内幕》[意] Benvenuti 著

5、《Linux设备驱动程序》[美]科波特(Corbet J.)著

链接:

提取码:eatl

推荐

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 系统性学习公开课

Linux内核/Linux服务器开发 面试题、学习资料、教学视频,免费分享有需要的可以自行添加学习交流群