为什么要学习 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.)著
链接:https://pan.baidu.com/s/1EbQebbGxPHJq6piTnKUTMg
提取码:eatl
推荐
Linux 内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 系统性学习公开课https://ke.qq.com/course/4032547?flowToken=1040348
Linux 内核/Linux 服务器开发 面试题、学习资料、教学视频,免费分享有需要的可以自行添加学习交流群960994558
评论