读行学堂 读行学堂

Linux内核分析

所属微专业:

图片
课程概述


本课程被认定为【国家精品在线开放课程】


下次开课,敬请关注!


等不及啦,我要立即学习,☜点这里!



本课程从理解计算机硬件的核心工作机制(存储程序计算机和函数调用堆栈)和用户态程序如何通过系统调用陷入内核(中断异常)入手,通过上下两个方向双向夹击的策略,并利用实际可运行程序的反汇编代码从实践的角度理解操作系统内核,然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在头脑中演绎Linux系统的运行过程。


学员评价


  • 这门课确实非常的好,理论结合实践,抓住了Linux的核心,并且很好的讲解展现出来,老师的深厚功底也可见一斑。虽然,我可能会很快的忘记了课程中的很多技术细节,但是只要这个感觉在就好。在此,表达对孟宁老师的深深谢意。—— guoyejun

  • 由于这门课,我对系统的理解更加深入地,明白了整个操作系统具体是怎么运作的,同时也学会了怎样看内核代码。——zbh24

  • 原本枯燥难以理解的操作系统知识通过老师幽默的讲解以及丰富的联想再加上动手实验都一一拨云见雾啦, 可以说通过Linux内核源码来理解Linux操作系统是本门课程最大的特点。在学习<<Linux内核分析>>课程中最大的收获就是接触了Linux内核源码这个神秘的以前想都没有想过的东西——jwjjiangwenjun

  • 学习孟宁老师的《Linux内核分析》课程,让我对Linux操作系统内核的运行工作原理有了全面的了解,同时对计算机的工作机制也有了更加深入的理解,给我日常的工作提供了不小的帮助。——chameleonscool

  • 感谢孟宁老师。给我们 带来了一场非常棒的内核体验!——Sip桑

  • 在近两个月的学习过程中,跟着孟宁老师的学习,渐渐地对Linux产生了一个大致的了解,不仅是内核知识点本身,而且包括学习的方法,学习的方向,都有了一些初步的想法。——ES丶行者

  • 之前对Linux的学习总是零零碎碎,东一榔头,西一棒槌,不得要领。通过对《Linux内核分析》课程的学习,有了一种提纲契领的感觉。通过介绍计算机如何工作,到进程的切换、可执行程序的加载、进程管理等等,全部以实践为主,且课后作业也需要复习参考很多资料,使得我又重新拿起课本,温习了遗忘已久的知识,比如AT&T汇编、操作系统、计算机组成原理等。总之,选修这门课程,让我受益良多,它给我指明了一条学习Linux的道路,也让我更有信心去坚持学习它。——ParkerLiu

  • 这门课教会了我学习Linux的方法。这给了我很大信心。特别要感谢孟宁老师团队的无偿奉献,这就是Linux开源的精神吧。——ParkerLiu

  • 被虐的一塌糊涂。。。——柳春卿

  • 学习这门课程最大的收获就是消除了阅读Linux代码的畏难情绪,掌握了一种高效的学习方式,以系统功能为切入点,通过GDB跟踪代码的运行逻辑,快速地理解Linux内核的工作方式。——runner001

  • 学习完这个课程,总体上形成了一个知识的框图。知道大体往哪个方向去努力。一个良好的知识框图对学习是至关重要的,我当初希望学习linux相关的运行机理就错读过不少linux管理方面的书,而实际上这些书并没有提及多少linux运行机理。——qzqsmile

  • 实践出真知,从来没有看到内核的代码离自己这么的近——titer1

  • 谢谢老师非常棒的讲解和精心的课程设计,也感谢实验楼提供的测试环境,在Linux内核学习实验过程中,有过遗憾,有过欢笑,自己得到成长。一声再见,一声祝好,在明天的旅程里,我们还会在不远处相遇。——xujianguo

  • linux内核真的是很有意思,既神秘又很有吸引力,如阿房宫般错综复杂,又如珠穆朗玛峰般,引人去探索,攀登。。。。。。。我逐渐对linux内核产生了感情了,有了这样的感觉就是不一样,摸着那些代码,和以前比较起来,如今的感觉是一种激动,虽然这种激动的情感不是非常强烈,但是我想这是一个非常好的兆头,有了这样的激动,在今后的日子里就会更有意思了。——hhlakc

  • 侯捷先生有言:“源码面前,了无秘密”。回过头看这门课的内容,它真正做到了授之以渔:如何根据自身需要去着手分析Linux内核。感谢这门课程和孟老师给了我面对Linux内核的信心,它之于我不再是遥不可及不可撼动——SsCM

  • 时光匆匆,转眼为期十一周的学习已踏入尾声,犹在耳边环绕的是孟老师诙谐幽默的言谈,眼中浮现的是老师口若悬河的身影。忘不了,忘不了,知遇之恩等同再造,我相信这11周的学习我将永生难忘。——20125111

  • 为期11周的linux内核分析课程已接近尾声,一开始接触linux内核,觉得很虚拟,什么内核态用户态,什么进程创建,什么切换机制等等,都感觉晦涩难懂。在学习过程中,跟着孟宁老师的生动讲解,老师会举出很多形象的例子来解释,以免我们会感到枯燥和乏味,渐渐地对linux产生了一个大致的理解,了解了计算机是如何工作的,操作系统是如何工作的等等,了解到一些函数,针对的是哪些设计思想,实现了什么样的功能,达成了什么样的目的。——20125118

  • 老师带领着我们一层层剥开操作系统的外壳,抽丝剥茧,条分缕析,让我们体会到操作系统原理之精巧,寻得技法之规矩。——黑猫VC

  • 我作为一个入门者,我觉得这门课程十分适用于初学者。孟老师在授课过程中将繁复的Linux内核源码化繁为简,将精华提取出来让我们来学习,我感到十分的幸运。——killer007

  • 没有孟宁老师的教导,我不会对linux有如此深的理解。正是老师诙谐幽默的谈吐,孜孜不倦的教诲,循序渐进的教学方式以及学以致用的教学理念,让我对linux操作系统的知识有了如此深刻的掌握。——l18800166620

  • 这门课程起到了很好的引导作用;师傅领进门,修行靠自身。所以于我来说,这门课虽结束了,但Linux内核的学习才刚刚开始……——FrankSun80

  • 如果说Linux是一座大山,之前被雾气弥漫,那么学习完整个课程后,可以看见攀爬这座山的路径了,更多的细节,我们可以循着这些路径探索了,其实也并没有那么神秘。——leonacwa

  • 天下难事必作于易,天下大事必作于细。虽然Linux内核规模很庞大,关系错综复杂。如果漫无目的的看源代码,就好像在茫茫大海中漂泊,很难找到目的地。但是只要找准切入口,深入分析,就像拿着地图找宝藏,虽然过程可能会有艰难,但是每一次接近宝藏,都会得到快乐,最后找到了更是开心。这样有目的的,一块一块的分析,就能更有效的学习Linux内核。——迷路的Neo

  • 这门课给我的最大感触是线上的教学方式对传统教学模式带来了很大的冲击,另外我也很喜欢写blog的这种学习方式(记录 + 理解 + 总结)。最后还得感谢孟老师,希望这种教学模式可以在软院进一步推广。——burningcodes

  • 学习这门课最大的收获就是明白了一些分析代码问题的思路与方法,我觉得这也是最重要的的,抓住零散的代码中的关键才是深入理解的必要条件。——gaoxing0031

  • 这学期跟孟老师学了不少,孟老师的课上的mykernel让我有学侯捷老师mini-MFC,mini-STL那种深入浅出的感受,关于内核的taxi girl的比喻有Linus "Software is just like sex:it's better when it's free.  "的风格,讲fork时“庄周梦蝶”的比喻还看出孟老师良好的国学功底——娄老师


安装Linux系统做实验太麻烦?No,实验楼为我们提供了Web端可访问的虚拟机,立即去看看! 

Latest Stable Kernel:linux-3.18.6


本课程内容被中国科学技术大学软件学院《Linux操作系统分析》课程选用,获得证书经过考核可以充抵部分分数;

本课程内容被北京电子科技学院在《Linux系统及安全》课程教学中选用,获得证书是是成绩优秀的必要条件;


版权声明:本课程非独家授权网易云课堂发布运营,其他商业机构使用本课程需要获得作者授权!


证书要求

合格证书: 综合评定成绩 >= 60分



预备知识

Linux基本操作技能、C语言、数据结构基础、操作系统原理

授课大纲

第一周:计算机是如何工作的?

  • 存储程序计算机工作模型

  • 32位X86汇编基础

  • 反汇编一个简单的C程序

第二周:操作系统是如何工作的?

  • 函数调用堆栈

  • 借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断

  • 构造一个简单的操作系统内核

第三周:构造一个简单的Linux系统MenuOS

  • Linux内核源代码导读

  • 构造一个简单的Linux系统

  • 跟踪调试Linux内核的启动过程

第四周:扒开系统调用的三层皮

  • 使用库函数触发一个系统调用

  • C代码中嵌入汇编代码的写法

  • 使用嵌入式汇编代码触发同一个系统调用

  • 系统调用在内核代码中的处理过程

第五周:程序和进程

  • 程序的编译、链接和可执行文件格式

  • 进程的描述和程序的装载

第六周:进程的执行和进程的切换

  • 用户态堆栈和内核态堆栈

  • 进程上下文的保存和恢复

  • 进程切换的关键代码switch_to分析

第七周:Linux内核的实质和Linux系统的一般执行过程

  • 内核执行路径的集合——中断(异常)处理过程的集合

  • Linux系统的一般执行过程

第八周:Linux系统架构和执行过程概览

  • Linux系统架构

  • Linux执行过程概览


参考资料


优秀作业:

常见问题

Q:为什么孟老师的课程视频在结束后会关闭?是饥饿营销吗?

  • A:孟老师的课程以实验实践为主,与以讲解为主的课程不同,需要做大量功课,仅仅看视频意义不大,也很难坚持到底,即使您有很好的自制力坚持独立完成实验,得不到反馈和评价效果也会大打折扣,请您耐心等待下次开课,与大家与孟老师一起学习。是不是饥饿营销取决于您是不是饥饿,呵呵。

所属微专业

所属系列课程

分享