技术成就梦想
Linux 内核探秘
本课程的内容很简单,分析透彻一个简单的文件系统,分析透彻一个设备驱动,
课后检验和作业也简单,学习者独立写一个简单文件系统,独立写一个设备驱动。
如果完成课程,达到课后目标,相信我,你已经超过了国内主流公司绝大多数人
的内核水准。
老师致学习者的话:
我认为,计算机技术层面可以分为系统和架构、语言和编译、OS。而系统内核
无疑是其中最有难度,学习路径最陡峭的一部分。各位既然选择业余时间来学习
这门艰深的课程,想必对自己有所期许,也有投入的计划。诚实的说,本课程确
实不是容易通过的,但对有志向的各位来说,如果很容易通过,那么别人也会很
容易。既然大家都容易得到,那么价值就大打折扣了。由此有志于此的学习者需
要做好挑战的准备。
老师只是课程的引导者,而非代替学习者实践和思考的人。学习者可以利用网络
搜索和自行发现答案,我想这一定可以大大提升学习者的信心。
本课程不需要太多内核方面的知识。毕竟这是一门从基础开始的课程。基本的 c
语言编程知识还是需要的,起码要编译过内核,能配置内核编译的选项。
本课程的内容设置和典型的教科书不同,也和其它类似的教程不同,课程设置完
全反应了老师的思考和对国内工业界现实的理解。将 OS 内核分为基础层面和应
用层面是作者的一个创造,也是导引学习者快速入门和学以致用的关键。本课程
包括对 OS 内存和任务调度的应用,但并不包括这些的原理。因为老师并不认为
知识的堆彻就可以加深理解和思考,学习—应用—创新—再学习是作者理解的
@ DataGuru 专业数据分析社区 网址 : 1
技术成就梦想
最好路径。如果能学以致用,就已经达到很深的程度。毕竟这只是起步阶段,太
多的知识只会打击初学者的信心。
虽然课程有大量的学习内容,但课程的目的不是为了掌握某些知识,而是为了了
解学习的方法,再进一步了解思考的方式。我一直认为,独立学习是重要的,而
独立思考能力是最重要的。所以课程作业可能和课程的内容并没关系,甚至是课
程里面完全没有的内容。没问题,如果深入思考,作业不会超过初学者可以达到
的水准,而找到答案的学习者,会发现已经找到了自己的学习之路。
课程大纲:
第 1 课前言(第一阶段:基础知识)
国内内核应用的现状
各大公司内核应用情况的介绍(百度、阿里、腾讯、IBM、intel、华为等)
国内普遍的内核应用模式和问题
内核在当前的主流应用
云计算和虚拟化中内核的应用
设备开发中驱动的开发
分布式系统应用:分布式文件系统,
如何学习内核
带着使用的目的学习内核,边学边用,学以致用
阅读和修改活着的代码,而非读书籍
以培养阅读代码的能力为主,而非具体知识的学习
内核基础层的范畴
内核基础层和应用层的划分逻辑
@ DataGuru 专业数据分析社区 网址 : 2
技术成就梦想
从代码量和应用模式理解应用层和基础
学习方法和内容
切勿贪大求全,聚焦关键应用领域
奠定基础,循序渐进
兴趣是第一驱动力
本课程提出的学习方法和内容
第 2 课内核基础层数据结构(第一阶段:基础知识)
内核数据结构
双向链表
Hash 链表
单向链表
红黑树
Radix 树
内核同步机制
自旋锁
内核信号量
自旋锁和内核信号量的区别
原子变量
completion
每 CPU 变量
RCU 无锁机制
@ DataGuru 专业数据分析社区 网址 : 3
技术成就梦想
第 3 课内核基础层提供的服务
内核中使用内存
Linux 内存管理基础-伙伴系统和 slab
从伙伴系统申请内存
从 slab 系统申请内存
内核中的任务调度
内核中进程调度的目的和应用范围
从