这门课到底解决什么工作场景

多数人想学操作系统,是被「面试要问」或「想搞懂底层」推着来的,但真打开教材又容易停在进程、线程、页表这些名词上。这门手写操作系统实战课的价值在于:它不要求你先啃完一本理论书再动手,而是把内存管理、进程调度、文件系统、IO 这几块拆成可运行的代码片段,让你在一个能跑起来的小内核里看到每个机制实际长什么样。学完之后,你至少能读懂一段内核代码在做什么,面试里被追问「缺页中断怎么处理」「进程切换时保存了哪些寄存器」时,心里有具体的执行路径,而不是背下来的定义。

学完你能独立做什么

这是判断一门体系课值不值得投入的关键。按课程覆盖的范围,学完之后你应当能独立完成这几件事:

  • 用 C 语言加一点汇编,搭出一个能引导、能打印、能响应中断的最小系统;
  • 实现一套简单的物理内存和虚拟内存管理,能说清页表映射和地址转换的每一步;
  • 写一个基于时间片或优先级的调度器,并观察进程在就绪、运行、阻塞之间的迁移;
  • 理解并实现一个简化版文件系统,知道 inode、目录项、块分配各自负责什么;
  • 把上面这些串成一个能加载并运行用户程序的小内核。

注意,这里的「操作系统」是教学用的简化内核,不是能替代 Linux 的东西。它的作用是让抽象概念落地,而不是让你去做发行版。带着这个预期学,收获会更实在。

课程对内存管理讲得比较细

从目录结构看,光页面置换就铺了最优算法、先进先出、最近最久未使用、时钟置换、最不常用,再到工作集置换、缺页率置换,最后收在抖动和负载控制上。这条线不是随便排的:先讲单页怎么换,再讲整个系统怎么避免频繁换页,最后落到负载这个真实系统里绕不开的问题。如果你之前死在「各种置换算法记混了」这一步,按这个顺序走一遍,会比刷题背结论清楚得多。其他几块——进程、文件、IO——也是同样的思路,先给机制,再给取舍。

资料适合什么基础

这门课不适合完全没写过 C 的人。涉及指针、结构体、内存布局的地方很多,汇编部分虽然量不大,但至少要能看懂寄存器操作和栈的变化。如果你写过几百行 C、了解基本的计算机组成(知道 CPU、内存、总线大概怎么协作),跟起来会比较顺。反过来,如果你已经做过内核相关的项目,这门课的大部分内容会显得偏基础,更适合当参考而不是主线。

怎么用这套资料

别把它当刷剧。视频一集不长,但真正花时间的是自己把代码敲一遍、跑一遍、改坏再修好。建议按模块推进:内存、进程、文件、IO 各成一段,每段结束后合上视频,自己从空白文件复现一遍关键逻辑。卡住的地方再回去看对应章节,比顺着看一遍效果好得多。如果你时间有限,优先吃透内存管理和进程管理这两块,面试和日常排查问题用到的频率最高。

课程目录

课程目录100 集
  • 9.5 工作集置换算法_72662_6820.mp4
  • [117.2 MB] 9.6 缺页率置换算法_72662_5725.mp4
  • [59.5 MB] 9.7 抖动和负载控制_72662_2078.mp4
  • [34.6 MB] 9.3 时钟置换算法和最不常用算法_72662_7433.mp4
  • [154.8 MB] 9.2 最优算法、先进先出算法和最近最久未使用算法_72662_1141.mp4
  • [167.2 MB] 9.4 Belady现象和局部置换算法比较_72662_6863.mp4
  • [97.5 MB] 8.6 缺页异常_72662_5760.mp4
  • [69.2 MB] 9.1 页面置换算法的概念_72662_6413.mp4
  • [66.4 MB] 8.5 虚拟页式存储_72662_7671.mp4
  • [98.7 MB] 8.4 虚拟存储概念_72662_7867.mp4
  • [38.7 MB] 8.3 局部性原理_72662_4057.mp4
  • [71.1 MB] 8.2 覆盖和交换_72662_9269.mp4
  • [88.0 MB] 7.5 演示lab2实验环节_72662_9786.mp4
  • [113.2 MB] 8.1 虚拟存储的需求背景_72662_6606.mp4
  • [71.6 MB] 7.4 了解ucore建立段_页表_72662_2402.mp4
  • [103.1 MB] 7.3 了解段_页表_72662_7256.mp4
  • [66.6 MB] 7.2 了解特权级切换过程_72662_4939.mp4
  • [134.4 MB] 7.1 了解x86保护模式中的特权级_72662_3623.mp4
  • [96.7 MB] 学堂在线-手写操作系统实战课程文档.png [493.5 KB] 6.7 段页式存储管理_72662_3119.mp4
  • [40.1 MB] 6.6 反置页表_72662_2562.mp4
  • [60.2 MB] 6.5 快表和多级页表_72662_9880.mp4
  • [52.2 MB] 6.4 页表概述_72662_2681.mp4
  • [62.1 MB] 6.3 页式存储管理_72662_2042.mp4
  • [59.4 MB] 6.2 段式存储管理_72662_7471.mp4
  • [42.5 MB] 6.1 非连续内存分配的需求背景_72662_4074.mp4
  • [62.8 MB] 5.5 伙伴系统_72662_3383.mp4
  • [80.1 MB] 5.3 连续内存分配_72662_2391.mp4
  • [109.5 MB] 5.2 地址空间和地址生成_72662_1501.mp4
  • [110.2 MB] 5.4 碎片整理_72662_5454.mp4
  • [50.5 MB] 5.1 计算机体系结构和内存层次_72662_9919.mp4
  • [92.9 MB] 4.9 练习六_72662_1998.mp4
  • [42.5 MB] 4.8 练习四 练习五_72662_3416.mp4
  • [20.6 MB] 4.7 练习三_72662_7371.mp4
  • [16.2 MB] 4.6 练习二_72662_1431.mp4
  • [17.5 MB] 4.5 练习一_72662_8565.mp4
  • [26.5 MB] 4.4 X86中断处理过程_72662_7462.mp4
  • [75.0 MB] 4.3 GCC内联汇编_72662_1289.mp4
  • [28.8 MB] 4.1 启动顺序_72662_8341.mp4
  • [104.7 MB] 4.2 C函数调用的实现_72662_5598.mp4
  • [29.8 MB] 3.6 ucore+系统调用代码_72662_6654.mp4
  • [17.6 MB] 3.5 系统调用示例_72662_3834.mp4
  • [29.1 MB] 3.3 中断、异常和系统调用比较_72662_7949.mp4
  • [63.3 MB] 3.4 系统调用_72662_8697.mp4
  • [39.1 MB] 3.2 系统启动流程_72662_8621.mp4
  • [60.1 MB] 23.4 磁盘调度_72662_1907.mp4
  • [104.1 MB] 23.5 磁盘缓存_72662_5178.mp4
  • [64.9 MB] 3.1 BIOS_72662_2247.mp4
  • [32.4 MB] 23.1 IO特点_72662_5565.mp4
  • [68.2 MB] 23.3 IO数据传输_72662_8399.mp4
  • [61.6 MB] 23.2 IO结构_72662_2595.mp4
  • [63.8 MB] 22.4 Virtual File System分析_72662_9653.mp4
  • [47.4 MB] 22.6 执行流程分析_72662_5634.mp4
  • [59.3 MB] 22.5 IO设备接口分析_72662_6622.mp4
  • [44.4 MB] 22.1 总体介绍_72662_4215.mp4
  • [86.2 MB] 22.2 ucore 文件系统架构_72662_1527.mp4
  • [70.0 MB] 22.3 Simple File System分析_72662_7613.mp4
  • [67.9 MB] 21.6 文件分配_72662_7163.mp4
  • [115.4 MB] 21.7 空闲空间管理和冗余磁盘阵列RAID_72662_1520.mp4
  • [113.3 MB] 21.5 文件缓存和打开文件_72662_6699.mp4
  • [77.4 MB] 21.3 目录、文件别名和文件系统种类_72662_5307.mp4
  • [109.0 MB] 21.2 文件描述符_72662_4613.mp4
  • [104.1 MB] 21.4 虚拟文件系统_72662_9592.mp4
  • [48.8 MB] 21.1 文件系统和文件_72662_9514.mp4
  • [52.1 MB] 20.6 信号和管道_72662_9916.mp4
  • [65.1 MB] 20.7 消息队列和共享内存_72662_4107.mp4
  • [55.0 MB] 20.4 死锁检测_72662_7369.mp4
  • [73.6 MB] 20.3 银行家算法_72662_8039.mp4
  • [80.6 MB] 20.5 进程通信概念_72662_7230.mp4
  • [64.5 MB] 2.7 演示实验操作过程_72662_8113.mp4
  • [32.0 MB] 20.1 死锁概念_72662_7562.mp4
  • [86.4 MB] 20.2 死锁处理方法_72662_1544.mp4
  • [100.8 MB] 2.6 ucore部分编程技巧_72662_4587.mp4
  • [38.2 MB] 2.5 x86-32硬件介绍_72662_3638.mp4
  • [36.5 MB] 2.4 实验环境搭建_72662_2605.mp4
  • [82.1 MB] 2.3 8个OS实验概述_72662_7445.mp4
  • [32.8 MB] 2.1 前言和国内外现状_72662_7513.mp4
  • [63.3 MB] 2.2 OS实验目标_72662_2759.mp4
  • [32.2 MB] 19.4 管程和条件变量设计实现_72662_4117.mp4
  • [186.6 MB] 19.3 信号量设计实现_72662_4326.mp4
  • [70.5 MB] 19.5 哲学家就餐问题_72662_3062.mp4
  • [34.9 MB] 19.2 底层支撑_72662_7242.mp4
  • [69.9 MB] 18.5 读者-写者问题_72662_2763.mp4
  • [88.4 MB] 19.1 总体介绍_72662_8670.mp4
  • [37.2 MB] 18.4 哲学家就餐问题_72662_4914.mp4
  • [95.9 MB] 18.2 信号量使用_72662_4570.mp4
  • [151.8 MB] 18.3 管程_72662_1719.mp4
  • [52.3 MB] 18.1 信号量_72662_9903.mp4
  • [96.5 MB] 17.5 高级抽象的同步方法_72662_2465.mp4
  • [99.6 MB] 17.3 临界区和禁用硬件中断同步方法_72662_9074.mp4
  • [121.5 MB] 17.4 基于软件的同步方法_72662_3139.mp4
  • [71.7 MB] 17.2 现实生活中的同步问题_72662_7853.mp4
  • [104.4 MB] 17.1 背景_72662_9236.mp4
  • [93.9 MB] 16.4 Stride调度算法_72662_2791.mp4
  • [89.3 MB] 16.3 时间片轮转调度算法_72662_1298.mp4
  • [45.0 MB] 16.2 调度算法支撑框架_72662_1749.mp4
  • [65.7 MB] 15.5 实时调度和多处理器调度_72662_7544.mp4
  • [80.5 MB] 16.1 总体介绍和调度过程_72662_6685.mp4
  • [83.2 MB] 15.6 优先级反置_72662_1403.mp4
  • [51.1 MB] 15.3 先来先服务、短进程优先和最高响应比优先调度算法_72662_3842.mp4
  • [116.9 MB] 适合人群 计算机专业学生 操作系统爱好者 有志于学习内核开发的开发者 学习收获 掌握操作系统原理 学会内核开发 提升系统设计能力 祝您学习愉快! 学有所成,前程似锦!