这门课解决什么,适合谁学

很多程序员学了多年应用开发,面对计算机底层依然是一头雾水:进程是怎么切换的?内存保护是如何实现的?程序崩溃时为什么能看到栈回溯?「从零开发操作系统」这门课,核心解决的不是“如何写一个能用的 OS”,而是“如何通过写 OS,彻底理解计算机的工作原理”。

它适合两类人群:一类是计算机基础薄弱、想补全系统知识的在校生或转行者;另一类是工作多年的后端、嵌入式工程师,希望打通从应用层到硬件层的知识任督二脉。不要求你有汇编基础,但要求你愿意啃硬骨头,接受从位操作开始构建复杂系统的过程。如果你追求的是“快速上手某门语言搞钱”,这门课不适合你;如果你想知道代码最终是如何在硅片上跑起来的,它是极佳的入口。

建议先看哪几块,怎么配合资料练习

课程的前几节是基石,务必细品。首先是「开发环境配置与第一个启动程序」,这是你亲手让屏幕亮起的第一步,不要跳过。接着必须深挖「CPU、内存和指令」以及「CS、DS 寄存器」这两讲,理解了段寄存器和代码段、数据段的本质,后续的分段机制才不会成为天书。启动过程中的「加电自检」与「主引导扇区」也是关键节点,弄懂了 7C00h 这个地址和 55AA 魔数,你就明白了计算机开机那一刻发生了什么。

资料包中的视频是主要学习材料,建议采取“看一讲,练一练”的节奏。遇到「逻辑地址与物理地址」这种抽象概念,不要只看讲解,要尝试在脑海中或纸上画出分段后的地址转换图。后续的 Bootloader 编码环节,资料中提供了关键的代码片段引导,你需要自己动手搭建编译器环境(如 GCC for x86)、编写 Makefile、用 QEMU 运行你的内核。遇到报错是常态,这正是系统编程的魅力所在——通过调试理解机器行为的真正含义。

学完能独立做什么

完成本课程后,你将具备独立编写一个极简操作系统内核的能力,包括实模式到保护模式的切换、中断控制器的初始化、简单的内存管理以及命令行解释器的实现。更重要的是,你将获得一种“向下兼容”的思维视角:当你在应用层遇到段错误、内存泄漏或性能瓶颈时,你能从 CPU 寄存器、内存布局和指令周期的角度去排查问题。这种能力是区分普通 CRUD 工程师与系统级工程师的分水岭,也为后续深入学习 Linux 内核、嵌入式开发或高性能计算打下不可动摇的基础。

课程目录

系统.png (298.

82 KB,  ) 2023-12-6 19:

20 上传 ├──1-1 从零开发操作系统课程介绍.mp4
 33.63M ├──1-2 开发环境配置与第一个启动程序.mp4
 34.81M ├──1-3 操作系统的基础知识:CPU、内存和指令(基础理论).mp4
 35.40M ├──1-4 CS,DS寄存器:代码段,数据段究竟是什么?.mp4
 24.27M ├──1-5 逻辑地址与物理地址:为什么是段+偏移(分段机制详解).mp4
 24.13M ├──2-1 加电自检与计算机的启动过程.mp4
 14.49M ├──2-10 从硬盘引导(四):Loader编码完成.mp4
 4.73M ├──2-11 从硬盘引导(五):突破512字节与寄存器段寻址再认识.mp4
 27.49M ├──2-2 7C00解析和主引导扇区魔数.mp4
 34.06M ├──2-3 验证性编程:引导区与BIOS下实模式编程.mp4
 71.70M ├──2-4 实验总结:为什么可以用附加段寄存器ES不用DS数据段寄存器.mp4
 28.39M ├──2-5 CPU寄存器梳理:CSDSES究竟是什么用途.mp4
 18.68M ├──2-6 CPU的寻址基础知识与栈段寄存器初解.mp4
 25.23M ├──2-7 从硬盘引导(一):硬盘原理介绍.mp4
 27.22M ├──2-8 从硬盘引导(二):MBR与loader分块.mp4
 36.72M ├──2-9 从硬盘引导(三):MBR编码完成.mp4
 29.10M ├──3-1 保护模式入门:内核态与用户态的由来.mp4
 26.88M ├──3-10 TSS解析:特权级切换实战(一).mp4
 24.23M ├──3-11 CPL、DPL、RPL与门的概念:特权级切换实战(二).mp4
 18.36M ├──3-12 调用门与权限切换:特权级切换实战(三).mp4
 53.98M ├──3-13 从ring0到ring3:特权级切换实战(四).mp4
 85.46M ├──3-14 时钟中断:进程时间片轮转的基础.mp4
 34.65M ├──3-15 保护模式下的中断编程实战(8259A).mp4
 61.18M ├──3-16 时钟中断编程与本章小结.mp4
 29.92M ├──3-2 保护模式(一):线性地址、逻辑地址、物理地址.mp4
 18.61M ├──3-3 保护模式(二):IA32架构、线性地址、逻辑地址、物理地址.mp4
 51.67M ├──3-4 保护模式(三):全局描述符GDT和线性地址.mp4
 103.66M ├──3-5 实验环境搭建:保护模式实战(一).mp4
 18.50M ├──3-6 jmp $再认识,GDT、选择子与寄存器匹配:保护模式实战.mp4
 165.87M ├──3-7 突破1M的寻址:保护模式实战(三).mp4
 13.10M ├──3-8 多任务的由来:LDT(局部描述符表)理论与实战.mp4
 90.61M ├──3-9 ring0和ring3的由来:内核态与用户态切换入门.mp4
 38.17M ├──4-1 操作系统是用C写的.mp4
 11.05M ├──4-10 用C写内核(五):用C改写占位Kernel.mp4
 36.41M ├──4-2 C库与操作系统:C库是建立在操作系统之上的.mp4
 22.54M ├──4-3 内核是常驻内存的(一):kenel的内存规划由来.mp4
 8.90M ├──4-4 图示kenel与loader的内存分布关系.mp4
 19.52M ├──4-5 从mbr加载loader再到loader加载kernel.mp4
 44.95M ├──4-6 用C写内核(一):elf文件格式透视.mp4
 23.91M ├──4-7 用C写内核(二):用elf生成占位Kernel.mp4
 37.01M ├──4-8 用C写内核(三):bochs调试出错的Kernel.mp4
 75.77M ├──4-9 用C写内核(四):C和汇编的联合编程.mp4
 47.01M ├──5-1 自己的操作系统系统:Tiny OS的演示.mp4
 12.41M ├──5-10 shell提示符与内建命令help的实现.mp4
 35.48M ├──5-11 关机命令poweroff的实现.mp4
 22.55M ├──5-12 时间命令time的实现——兼论rn.mp4
 69.26M ├──5-13 独立内核的操作系统完成.mp4
 48.62M ├──5-2 Tiny OS的编码文件划分:C库、kernel与汇编.mp4
 13.92M ├──5-3 C库中输入输出系统的实现:liba.asm.mp4
 45.11M ├──5-4 C库中字符串的实现(上):print.mp4
 26.99M ├──5-5 C库中字符串的实现(下):readtoBuf.mp4
 43.07M ├──5-6 C扩充内核的实现:libc.c.mp4
 32.84M ├──5-7 启动内核入口的实现osKernel.asm.mp4
 7.23M ├──5-8 交互实验完成.mp4
 63.10M ├──5-9 清屏函数与内建命令clear的实现.mp4
 36.64M ├──6-1 从实模式内核到保护模式加载.mp4
 71.56M ├──6-2 从清屏命令再认识保护模式下的访问控制.mp4
 35.80M ├──6-3 从cmos时间获取认识保护模式下的时钟中断.mp4
 23.97M ├──6-4 保护模式下多任务的形式浅析.mp4
 13.24M ├──6-5 从加电自检到保护模式加载全部完成.mp4
 34.26M ├──6-6 课程结束与展望.mp4
 11.81M ├──nasm2.zip
 255.04kb ├──第二章代码.zip
 1.67kb ├──第三章代码.zip
 17.15kb ├──第四章代码.zip
 20.96kb ├──第五章代码.zip
 58.14kb ├──第一章代码.zip
 0.78kb └──工具.zip
 16.12M