飞豹客 · 课能看,资料也能带走
飞豹客测试运维 会员免费

科学技术大学软件学院Linux内核分析

这门课来自中国科学技术大学软件学院,主题是 Linux 内核分析。它不教你装系统、配服务、写脚本,而是回答一个更底层的问题:当你在终端敲下一条命令、启动一个程序、创建一个进程时,内核里到底发生了什么。对做测试运维的人来说,这类知识平时不一定天天用得上,但一旦遇到进程卡死、程序启动异常、系统调用返回奇

单课价¥29.90新品 上架
会员价 会员免费开通会员后本篇可直接下载套餐详情
88 人关注 更新于 2026-06-03 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

会员可免费下载本篇月会员可免费领取。

开通会员 ›
购买本课销量 0 · 永久有效
会员价 · 单课标价 ¥29.90

会员 · 按档位

永久免费可领
年免费可领
月免费可领

游客按标价购买,不享受上表折扣。

支付成功后自动发放网盘链接,链接失效可找客服免费补

正版保障 极速发货 售后无忧

这门课来自中国科学技术大学软件学院,主题是 Linux 内核分析。它不教你装系统、配服务、写脚本,而是回答一个更底层的问题:当你在终端敲下一条命令、启动一个程序、创建一个进程时,内核里到底发生了什么。对做测试运维的人来说,这类知识平时不一定天天用得上,但一旦遇到进程卡死、程序启动异常、系统调用返回奇怪错误码,能不能看懂内核行为,决定了你是只能重启了事,还是能定位到真正的原因。

它解决的是哪类工作场景

日常运维里有一批问题处在应用层工具够不着的位置。比如一个二进制程序启动就崩,strace 只看到 execve 之后就没了下文;比如 fork 出来的子进程行为和预期不符,怀疑是写时复制或调度的问题;比如你想确认某个动态链接库到底在什么时机被加载、地址被映射到哪里。这些问题往下追,都会落到进程创建、可执行程序装载、系统调用处理这几块内核机制上。这门课的价值就在于把这些机制讲清楚,让你面对这类现象时有分析思路,而不是靠猜。

需要说明的是,它不是一本内核源码的通读手册,也不承诺学完就能改内核、写驱动。它的定位更接近「内核行为分析」:借助 GDB 跟踪、结合关键数据结构,把几个核心流程走一遍,让你能读懂内核在做什么。

适合什么基础,先看哪几块

进入这门课之前,最好已经能满足几个前提:熟练使用 Linux 命令行,写过 C 语言程序,理解进程、内存、文件描述符这些基本概念,知道系统调用是什么。如果只是刚学会 ls 和 cd,直接看会非常吃力,建议先把 C 和操作系统基础补一补。反过来,如果你已经在做运维或后端开发,平时和进程、内存打交道,那这门课的门槛是合适的。

资料里有两块内容值得优先看。一块是进程的创建,它对应 fork、写时复制、进程描述符这些最常被问到的机制,是理解后续内容的地基。另一块是可执行程序的装载,从 sys_execve 的处理过程讲起,覆盖静态与动态链接程序的装载差异,还配了 GDB 跟踪的实操演示。这两块吃透,你对「一个程序从被调用到跑起来」的完整链路就有把握了。建议按这个顺序看,不要跳着先啃动态链接部分。

怎么配合练习,学完能做什么

光看视频不够。每看完一个流程,建议自己在虚拟机里动手复现一遍:写一个简单的 C 程序,用 GDB 挂到内核函数上跟一遍调用栈,观察关键结构体的字段变化;或者用 strace、ltrace 对照着看用户态和内核态的衔接点。资料里的跟踪演示可以当作操作参照,但一定要自己在环境里跑通,否则很容易停留在「看懂了」的错觉上。

学完之后,你应该能独立完成这些事:判断一个程序启动失败大致卡在装载的哪个环节;解释 fork 之后父子进程的内存关系以及写时复制在什么时候真正触发;读懂一段内核跟踪输出,知道当前执行到哪个处理阶段;在排查进程异常时,知道该往哪个方向取证,而不是只能重启。这些能力不会让你立刻变成内核开发者,但足以让你在处理系统级故障时多一层底气。

最后提醒一句:这门课偏原理,节奏不快,适合愿意花时间啃的人。如果你的工作完全不涉及 Linux 底层,只是想快速上手某个运维工具,那它可能不是当下最优先的选择。

课程目录

课程目录10 集
  • 📁 20.可执行程序的装载 可执行程序的装载.txt [1.9 KB] 使用GDB跟踪sys_execve内核函数的处理过程.wmv [43.2 MB] 可执行程序的装载与庄生梦蝶的故事.wmv [38.3 MB] 浅析动态链接的可执行程序的装载.wmv [78.0 MB] sys_execve的内部处理过程.wmv [61.5 MB] 可执行程序的装载相关关键问题分析.wmv [88.2 MB] 📁 16.进程的创建 进程的创建的创建和撤销资料参考.txt [1.7 KB] 理解进程创建过程复杂代码的方法.wmv [61.0 MB] 进程的创建概览及fork一个进程的用户态代码.wmv [39.8 MB] 浏览进程创建过程相关的关键代码.wmv [62.4 MB] 创建的新进程是从哪里开始执行的.wmv [25.2 MB] 使用GDB跟踪创建新进程的过程.wmv [32.1 MB] 📁 15.系统调用在内核代码中的处理过程 3.简单浏览system_call到iret之间的主要代码.mp4
  • [22.4 MB] 2.简化后便于理解的system_call伪代码.mp4
  • [39.3 MB] 1.系统调用在内核代码中的工作机制和初始化.mp4
  • [15.3 MB] 📁 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 2.C代码中嵌入汇编代码的写法.avi [55.9 MB] 3.使用C代码中嵌入汇编代码触发系统调用获取系统当前时间.avi [19.2 MB] 1.使用库函数API获取系统当前时间.avi [10.8 MB] 📁 11.系统调用概述 SystemCall.pdf
  • [228.9 KB] 1.系统调用概述.avi [57.7 MB] 📁 10.用户态、内核态和中断 1.用户态、内核态和中断.avi [66.4 MB] 📁 9.跟踪调试Linux内核的启动过程 1.使用gdb跟踪调试Linux内核的方法.avi [35.7 MB] Linux内核启动过程相关的参考资料.txt [1.3 KB] 2.简单分析一下start_kernel.avi [53.8 MB] 📁 8.构造一个简单的Linux系统 1.构造一个简单的Linux系统MenuOS.avi [55.5 MB] 实验指导.txt [1.7 KB] 📁 7.Linux内核源代码简介 1.Linux内核源代码.avi [61.8 MB] 📁 6.在mykernel基础上构造一个简单的操作系统内核 3.运行这个精简的操作系统内核.avi [12.5 MB] 1.C代码中嵌入汇编代码的写法.avi [55.9 MB] 2.一个简单的操作系统内核源代码.avi [89.9 MB] 📁 5.利用mykernel实验模拟计算机硬件平台 mykernel实验指导.txt [284.0 B] 2.利用mykernel实验模拟计算机硬件平台.avi [37.5 MB] 1.mykernel实验背后涉及的思想.avi [26.4 MB] 📁 4.操作系统是如何工作的? FoundationsForHackingLinux.pdf
  • [659.0 KB] 2.深入理解函数调用堆栈.avi [51.3 MB] 3.参数传递与局部变量.avi [86.8 MB] 1.三个法宝.avi [34.2 MB] 计算机是如何工作的?(总结)——三个法宝.txt [454.0 B] 📁 3.反汇编一个简单的C程序分析其汇编指令执行过程 3.完整汇编程序执行过程分析.avi [116.9 MB] 1.反汇编一个简单的C程序.avi [31.8 MB] 执行过程演示.gif [706.2 KB] 2.C程序和对应的汇编指令.avi [28.5 MB] 📁 2.X86汇编基础 3.X86汇编指令二(push、pop、call、ret.avi [43.1 MB] 5.分析几个汇编指令片段(二.avi [17.3 MB] 2.X86汇编指令一(mov指令及几种内存寻址方式).avi [36.6 MB] 4.分析几个汇编指令片段(一).avi [26.7 MB] 1.X
  • 86 Registers.avi [29.6 MB] 参考资料.txt [264.0 B] 📁 23.linux系统架构和执行过程概览 最简单也是最复杂的操作--执行ls命令.wmv [7.6 MB] linux操作系统架构概览.wmv [17.9 MB] LinuxArchitectureAndSystemExecution.pdf
  • [256.8 KB] 从CPU和内存的角度看linux系统的执行.wmv [8.1 MB] 📁 17.进程的描述 进程描述符task_struct数据结构(一).wmv [32.1 MB] 进程描述符task_struct数据结构(二).wmv [50.7 MB] 📁 22.Linux系统的一般执行过程 linux系统执行过程中的几个特殊情况.wmv [31.1 MB] 内核与舞女.wmv [88.5 MB] linux系统的一般执行过程分析.wmv [56.6 MB] Linux系统的一般执行过程.txt [925.0 B] 📁 13.给MenuOS增加time和time-asm命令 1.给MenuOS增加time和time-asm命令.avi [32.3 MB] 📁 19.可执行程序共享库和动态链接 可执行程序共享库和动态链接.txt [2.4 KB] 装载时动态链接和运行时动态链接应用举例.wmv [41.9 MB] 装载可执行程序之前的工作.wmv [43.2 MB] 📁 21.进程切换的关键代码switch_to分析 进程调度与进程调度的时机分析.wmv [66.1 MB] 进程的调度时机与进程的切换.txt [3.8 KB] 进程上下文切换相关代码分析.wmv [55.9 MB] 📁 1.存储程序计算机工作模型 存储程序计算机工作模型.avi [43.4 MB] HowtheComputerWorks.pdf
  • [606.0 KB] 📁 18.预处理编译链接和目标文件的格式 静态链接的ELF可执行文件和进程的地址空间.wmv [13.8 MB] 预处理编译和链接相关命令参考.txt [2.8 KB] 可执行程序是怎么得来的.wmv [31.7 MB] 目标文件的格式ELF.wmv [31.1 MB] 📁 14.使用gdb跟踪系统调用内核函数sys_time 1.使用gdb跟踪系统调用内核函数sys_time.mp4
  • [42.8 MB] 适合人群 Linux内核爱好者 系统运维工程师 软件开发者 学习收获 掌握Linux内核分析技巧 深入理解Linux内核工作原理 提升系统性能优化能力 祝您学习愉快! 学有所成,前程似锦!