技术成就梦想

Linux 内核探秘

本课程的内容很简单,分析透彻一个简单的文件系统,分析透彻一个设备驱动,

课后检验和作业也简单,学习者独立写一个简单文件系统,独立写一个设备驱动。

如果完成课程,达到课后目标,相信我,你已经超过了国内主流公司绝大多数人

的内核水准。

老师致学习者的话:

我认为,计算机技术层面可以分为系统和架构、语言和编译、OS。而系统内核

无疑是其中最有难度,学习路径最陡峭的一部分。各位既然选择业余时间来学习

这门艰深的课程,想必对自己有所期许,也有投入的计划。诚实的说,本课程确

实不是容易通过的,但对有志向的各位来说,如果很容易通过,那么别人也会很

容易。既然大家都容易得到,那么价值就大打折扣了。由此有志于此的学习者需

要做好挑战的准备。

老师只是课程的引导者,而非代替学习者实践和思考的人。学习者可以利用网络

搜索和自行发现答案,我想这一定可以大大提升学习者的信心。

本课程不需要太多内核方面的知识。毕竟这是一门从基础开始的课程。基本的 c

语言编程知识还是需要的,起码要编译过内核,能配置内核编译的选项。

本课程的内容设置和典型的教科书不同,也和其它类似的教程不同,课程设置完

全反应了老师的思考和对国内工业界现实的理解。将 OS 内核分为基础层面和应

用层面是作者的一个创造,也是导引学习者快速入门和学以致用的关键。本课程

包括对 OS 内存和任务调度的应用,但并不包括这些的原理。因为老师并不认为

知识的堆彻就可以加深理解和思考,学习—应用—创新—再学习是作者理解的

@ DataGuru 专业数据分析社区 网址 : 1

技术成就梦想

最好路径。如果能学以致用,就已经达到很深的程度。毕竟这只是起步阶段,太

多的知识只会打击初学者的信心。

虽然课程有大量的学习内容,但课程的目的不是为了掌握某些知识,而是为了了

解学习的方法,再进一步了解思考的方式。我一直认为,独立学习是重要的,而

独立思考能力是最重要的。所以课程作业可能和课程的内容并没关系,甚至是课

程里面完全没有的内容。没问题,如果深入思考,作业不会超过初学者可以达到

的水准,而找到答案的学习者,会发现已经找到了自己的学习之路。

课程大纲:

第 1 课前言(第一阶段:基础知识)

国内内核应用的现状

各大公司内核应用情况的介绍(百度、阿里、腾讯、IBM、intel、华为等)

国内普遍的内核应用模式和问题

内核在当前的主流应用

云计算和虚拟化中内核的应用

设备开发中驱动的开发

分布式系统应用:分布式文件系统,

如何学习内核

带着使用的目的学习内核,边学边用,学以致用

阅读和修改活着的代码,而非读书籍

以培养阅读代码的能力为主,而非具体知识的学习

内核基础层的范畴

内核基础层和应用层的划分逻辑

@ DataGuru 专业数据分析社区 网址 : 2

技术成就梦想

从代码量和应用模式理解应用层和基础

学习方法和内容

切勿贪大求全,聚焦关键应用领域

奠定基础,循序渐进

兴趣是第一驱动力

本课程提出的学习方法和内容

第 2 课内核基础层数据结构(第一阶段:基础知识)

内核数据结构

双向链表

Hash 链表

单向链表

红黑树

Radix 树

内核同步机制

自旋锁

内核信号量

自旋锁和内核信号量的区别

原子变量

completion

每 CPU 变量

RCU 无锁机制

@ DataGuru 专业数据分析社区 网址 : 3

技术成就梦想

第 3 课内核基础层提供的服务

内核中使用内存

Linux 内存管理基础-伙伴系统和 slab

从伙伴系统申请内存

从 slab 系统申请内存

内核中的任务调度

内核中进程调度的目的和应用范围