课程会给出一些加分题,不少题目会要求深入源代码

1. 阅读完整源代码的重要性

Linux系统创始人Linus Torvalds在一篇新闻投稿上所说的,要理解一个软件系统的真正运行机制,一定要阅读其源代码(RTFSC – Read The Fucking Source Code)。可以这么理解:源码才是第一手资料,其他资料(如博文)已是二手+了。

除此之外,阅读源代码是一种能力。有些系统并没有太多资料,比如2011年的Contiki OS,想了解系统运行原理(或者解决某个深层次问题),只能深入分析源代码。参考:Contiki分析笔记

2. 选择Linux哪个内核版本

Linux从1991年2~4月的0.00版本(没有发布)到现在的6.2.5(2023-03-11发布),代码量一直在增加,如下图所示:

image-20230312231427770

图2 Linux内核各版本源代码行数(赵炯《Linux内容完全注释 内核版本0.11》)

img

图1 Lines of code in the Linux kernel (图片来源于这里)

阅读最新内核版本的源代码,因代码量太大不现实。Linux 0.12内核代码只有463KB左右(大概2万行左右),涵盖了Linux精髓的内容,是一个很好的开始。除此之外,赵炯博士撰写的书《Linux内核完全剖析:基于0.12内核》,也可以辅助了解。

建议:先从Linux 0.12开始,理解了在0.12的实现原理,有余力,再去看最新版本的实现。

3. 一些参考例子

以下是我在学习过程中深入源代码理解系统运行原理的一些例子。

  • Contiki分析笔记:Contiki OS,研究生期间项目组用到的操作系统,当时资料甚少,想了解原理,不得不深入源代码
  • The ONE分析笔记:博士期间,使用The ONE仿真器做网络编码,The ONE对MAC层高度抽象,但我需要为其增加广播功能,方能做网络编码实验。基于此,深入源码,了解了整个仿真器的运行原理

更多资料:

[1] Linux kernel version history - Wikipedia

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2023-03-12 23:34

results matching ""

    No results matching ""