人工精选中国科学技术大学软件学院Linux内核分析
如果你已经会用 Linux 敲命令、写脚本,但每次遇到内核层面的问题就只能搜报错、换配置、重启了事,这门课值得花时间。它面向的不是零基础用户,而是想从"会用"走到"看得懂"的那批人:能读内核代码、能跟踪启动流程、能自己编译一个最小系统来验证想法。学完最直接的检验标准是——给你一个内核启动异常或进程行
会员可免费下载本篇月会员可按日额度下载(每篇扣 1 次)。
开通会员 ›会员 A · 按档位折扣
会员 B
游客按标价购买,不享受上表折扣。
支付成功后自动发放网盘链接,链接失效可找客服免费补
如果你已经会用 Linux 敲命令、写脚本,但每次遇到内核层面的问题就只能搜报错、换配置、重启了事,这门课值得花时间。它面向的不是零基础用户,而是想从"会用"走到"看得懂"的那批人:能读内核代码、能跟踪启动流程、能自己编译一个最小系统来验证想法。学完最直接的检验标准是——给你一个内核启动异常或进程行为异常的场景,你能定位到相关代码路径,而不是停在日志表面。
它解决的是哪一类工作场景
日常运维和后台开发里,很多问题最终会落到内核行为上:系统启动卡在某个阶段、进程调度不符合预期、驱动或模块加载失败、性能抖动找不到来源。这些场景靠应用层的工具往往只能看到结果,看不到原因。这门课的价值就在于把观察手段下沉一层:用调试器跟踪内核启动、在源码里定位关键函数、动手裁剪和构造一个能跑起来的小系统。它不承诺让你成为内核开发者,但能让你在面对这类问题时有一套可执行的排查路径,而不是只能等别人给答案。
适合什么基础,先看哪几块
前提比较明确:熟悉 Linux 常用命令和基本操作,能看懂 C 语言,知道进程、内存、文件系统这些概念大致指什么。如果连编译内核都没做过,建议先补一遍基础流程再进来,否则跟踪调试那部分会卡住。内容按主题推进,其中跟踪调试内核启动过程、以及构造一个简单 Linux 系统这两块最值得优先看——前者教你用调试器把启动流程一步步走下来,后者让你亲手搭一个最小可运行环境,把抽象概念变成能观察的对象。这两块吃透,后面的进程管理、内存管理内容才有落脚点。
资料怎么配合练习
配套材料以讲解演示和少量参考文档为主,不要指望看完就懂,关键动作是跟着做。建议的节奏是:先看一遍跟踪调试的演示,理解调试器怎么挂到内核上、断点打在哪里;然后自己复现一遍,把启动过程中的关键调用顺序记录成自己的笔记;接着动手构造那个最小系统,遇到编译或启动失败时回头对照演示排查。参考文档用来补充概念,不要当教材通读。整个过程以"能独立跑通并解释每一步在做什么"为目标,而不是追求看完所有内容。学完能独立完成的,是搭建调试环境、跟踪并说明内核启动的主要阶段、以及构造并启动一个自定义的最小系统;再往上走,就要靠你自己在真实问题里反复练了。
课程目录
课程目录19 集
- 📁 9.跟踪调试Linux内核的启动过程 2.简单分析一下start_kernel.avi [53.8 MB] 1.使用gdb跟踪调试Linux内核的方法_3100_1793.avi [35.7 MB] Linux内核启动过程相关的参考资料.txt [1.3 KB] 📁 8.构造一个简单的Linux系统 1.构造一个简单的Linux系统MenuOS_3100_7994.avi [55.5 MB] 8.构造一个简单的Linux系统说明.zip
- [1.8 MB] 实验指导.txt [1.7 KB] 📁 7.Linux内核源代码简介 1.Linux内核源代码_3100_7139.avi [61.8 MB] 7.Linux内核源代码简介必看.png [493.5 KB] 📁 6.在mykernel基础上构造一个简单的操作系统内核 2.一个简单的操作系统内核源代码.avi [89.9 MB] 3.运行这个精简的操作系统内核_3100_3502.avi [12.5 MB] 1.C代码中嵌入汇编代码的写法_3100_6020.avi [55.9 MB] 6.在mykernel基础上构造一个简单的操作系统内核必看.png [493.5 KB] 📁 5.利用mykernel实验模拟计算机硬件平台 2.利用mykernel实验模拟计算机硬件平台.avi [37.5 MB] 1.mykernel实验背后涉及的思想.avi [26.4 MB] 5.利用mykernel实验模拟计算机硬件平台文档.zip
- [1.8 MB] mykernel实验指导_3100_1674.txt [284.0 B] 📁 4.操作系统是如何工作的? 3.参数传递与局部变量.avi [86.8 MB] 2.深入理解函数调用堆栈.avi [51.3 MB] 1.三个法宝.avi [34.2 MB] FoundationsForHackingLinux_3100_9493.pdf
- [659.0 KB] 计算机是如何工作的?(总结)——三个法宝.txt [454.0 B] 📁 3.反汇编一个简单的C程序分析其汇编指令执行过程 3.完整汇编程序执行过程分析_3100_7154.avi [116.9 MB] 2.C程序和对应的汇编指令.avi [28.5 MB] 1.反汇编一个简单的C程序_3100_4280.avi [31.8 MB] 执行过程演示.gif [706.2 KB] 3.反汇编一个简单的C程序分析其汇编指令执行过程文档.zip
- [1.8 MB] 📁 23.linux系统架构和执行过程概览 从CPU和内存的角度看linux系统的执行.wmv [8.1 MB] linux操作系统架构概览.wmv [17.9 MB] 最简单也是最复杂的操作--执行ls命令.wmv [7.6 MB] 23.linux系统架构和执行过程概览必看.zip
- [1.8 MB] LinuxArchitectureAndSystemExecution.pdf
- [256.8 KB] 📁 22.Linux系统的一般执行过程 内核与舞女.wmv [88.5 MB] linux系统的一般执行过程分析.wmv [56.6 MB] linux系统执行过程中的几个特殊情况.wmv [31.1 MB] Linux系统的一般执行过程.txt [925.0 B] 22.Linux系统的一般执行过程资料.png [493.5 KB] 📁 21.进程切换的关键代码switch_to分析 进程调度与进程调度的时机分析.wmv [66.1 MB] 进程上下文切换相关代码分析.wmv [55.9 MB] 21.进程切换的关键代码switch_to分析必看.zip
- [1.8 MB] 进程的调度时机与进程的切换.txt [3.8 KB] 📁 20.可执行程序的装载 可执行程序的装载相关关键问题分析.wmv [88.2 MB] 浅析动态链接的可执行程序的装载.wmv [78.0 MB] 可执行程序的装载与庄生梦蝶的故事.wmv [38.3 MB] 使用GDB跟踪sys_execve内核函数的处理过程.wmv [43.2 MB] sys_execve的内部处理过程.wmv [61.5 MB] 可执行程序的装载_3100_5313.txt [1.9 KB] 📁 2.X86汇编基础 5.分析几个汇编指令片段(二_3100_8891.avi [17.3 MB] 3.X86汇编指令二(push、pop、call、ret_3100_5208.avi [43.1 MB] 4.分析几个汇编指令片段(一).avi [26.7 MB] 2.X86汇编指令一(mov指令及几种内存寻址方式).avi [36.6 MB] 1.X
- 86 Registers.avi [29.6 MB] 参考资料.txt [264.0 B] 2.X86汇编基础必看.png [493.5 KB] 📁 19.可执行程序共享库和动态链接 装载时动态链接和运行时动态链接应用举例.wmv [41.9 MB] 装载可执行程序之前的工作.wmv [43.2 MB] 可执行程序共享库和动态链接.txt [2.4 KB] 📁 18.预处理编译链接和目标文件的格式 目标文件的格式ELF.wmv [31.1 MB] 静态链接的ELF可执行文件和进程的地址空间.wmv [13.8 MB] 可执行程序是怎么得来的.wmv [31.7 MB] 预处理编译和链接相关命令参考.txt [2.8 KB] 18.预处理编译链接和目标文件的格式文档.png [493.5 KB] 📁 17.进程的描述 进程描述符task_struct数据结构(二).wmv [50.7 MB] 进程描述符task_struct数据结构(一).wmv [32.1 MB] 17.进程的描述资料.zip
- [1.8 MB] 📁 16.进程的创建 理解进程创建过程复杂代码的方法.wmv [61.0 MB] 进程的创建概览及fork一个进程的用户态代码.wmv [39.8 MB] 浏览进程创建过程相关的关键代码.wmv [62.4 MB] 创建的新进程是从哪里开始执行的.wmv [25.2 MB] 使用GDB跟踪创建新进程的过程.wmv [32.1 MB] 进程的创建的创建和撤销资料参考_3100_6461.txt [1.7 KB] 📁 15.系统调用在内核代码中的处理过程 3.简单浏览system_call到iret之间的主要代码_3100_6989.mp4
- [22.4 MB] 2.简化后便于理解的system_call伪代码_3100_8977.mp4
- [39.3 MB] 1.系统调用在内核代码中的工作机制和初始化_3100_1171.mp4
- [15.3 MB] 15.系统调用在内核代码中的处理过程资料.zip
- [1.8 MB] 📁 14.使用gdb跟踪系统调用内核函数sys_time 1.使用gdb跟踪系统调用内核函数sys_time.mp4
- [42.8 MB] 14.使用gdb跟踪系统调用内核函数sys_time文档.png [493.5 KB] 📁 13.给MenuOS增加time和time-asm命令 1.给MenuOS增加time和time-asm命令.avi [32.3 MB] 📁 10.用户态、内核态和中断 1.用户态、内核态和中断_3100_5029.avi [66.4 MB] 10.用户态、内核态和中断资料.zip
- [1.8 MB] 📁 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 3.使用C代码中嵌入汇编代码触发系统调用获取系统当前时间_3100_3993.avi [19.2 MB] 2.C代码中嵌入汇编代码的写法_3100_6711.avi [55.9 MB] 1.使用库函数API获取系统当前时间.avi [10.8 MB] 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用必看.zip
- [1.8 MB] 📁 1.存储程序计算机工作模型 存储程序计算机工作模型.avi [43.4 MB] HowtheComputerWorks.pdf
- [606.0 KB] 1.存储程序计算机工作模型说明.png [493.5 KB] 📁 11.系统调用概述 1.系统调用概述.avi [57.7 MB] SystemCall_3100_6326.pdf
- [228.9 KB] 11.系统调用概述资料.png [493.5 KB] 适合人群 Linux内核爱好者 系统运维工程师 软件开发者 学习收获 理解Linux内核工作原理 掌握内核调试技巧 提升系统性能优化能力 祝您学习愉快! 学有所成,前程似锦!





