底层系统的工程化拆解 开发操作系统并非单纯阅读内核源码,而是一次对计算机体系结构的完整逆向工程。本课程聚焦于从零构建一个可运行的 OS 雏形,核心解决的是开发者在「应用层」与「硬件层」之间的认知断层。很多后端开发者能熟练处理高并发与分布式架构,但一旦涉及寄存器操作、内存分段或中断向量表,便显得无从下手。本课程的独特价值在于它不提供虚拟机中的仿真环境,而是要…
开发操作系统并非单纯阅读内核源码,而是一次对计算机体系结构的完整逆向工程。本课程聚焦于从零构建一个可运行的 OS 雏形,核心解决的是开发者在「应用层」与「硬件层」之间的认知断层。很多后端开发者能熟练处理高并发与分布式架构,但一旦涉及寄存器操作、内存分段或中断向量表,便显得无从下手。本课程的独特价值在于它不提供虚拟机中的仿真环境,而是要求学习者直接在真实的 x86 实模式环境下,通过手写汇编和 C 语言,打通从加电自检到内核启动的完整链路。这种工程视角的切换,是理解 Linux 内核、嵌入式开发乃至高性能计算的基础。
本课程的门槛并不在于数学功底,而在于对计算机组成原理的已有认知。适合具备一定 C 语言基础,且对指针、内存管理有直观理解的开发者。如果你从未接触过汇编语言,建议先补齐 x86 汇编的基础语法,重点理解 `mov`、`push`、`pop` 以及栈帧的概念。课程的前半部分是筑基阶段,务必扎实掌握「CPU 寄存器」、「逻辑地址与物理地址的转换」以及「段式内存管理」这三块理论。只有理解了 CS、DS 等段寄存器如何在 16 位模式下寻址,后续的引导加载程序编写才不会变成黑盒调试。进入第二阶段后,建议重点对照视频编写 Bootloader,特别是突破 512 字节限制的扇区加载技术,这是操作系统能否脱离软盘/模拟器独立运行的关键节点。
这门课的本质是代码实验室,而非观影课程。资料包中提供的视频是对关键步骤的必要演示,但真正的知识内化发生在你面对黑屏报错、调试引导扇区魔数(0xAA55)失败的那几个小时里。建议采用「抄写-修改-破坏-修复」的四步法:先完整复现博主的引导程序,确保 BIOS 能成功加载你的第一个 Hello World;接着尝试修改内存布局,观察段重叠导致的崩溃;最后自行设计一个简单的中断处理逻辑。学完本课程后,你将具备独立编写 Bootloader、解析 ELF 文件格式雏形以及设计基础内存管理器的能力,这套经验可直接复用到后续的 UEFI 开发或内核驱动编写中。请务必准备好 QEMU 或 VirtualBox 等调试环境,因为只有在真实的运行报错中,你才能体会到操作系统是如何在比特流之上建立秩序。
系统.png (298.82 KB, 下载次数: 0) 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 验证性
系统.png (298.82 KB, 下载次数: 0) 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