飞豹客 · 课能看,资料也能带走
飞豹客移动开发 会员免费

51CTO-从零开发操作系统 :从加电自检到内核引导

很多人对"自己写操作系统"的印象,是买一本厚厚的原理书,看完前两章就放下了。这门课换了个做法:不追求把操作系统讲全,而是沿着开机这条线,一步步把控制权从主板交到自己写的代码手里。如果你只是想弄明白"电脑按下电源键之后到底发生了什么",它给的是一个能动手验证的答案。 它解决的是哪一类问题 日常写应用代

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

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

保障

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

客服

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

会员可免费下载本篇月会员、年会员、永久会员可按日额度下载(每篇扣 1 次)。

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

会员 A · 按档位折扣

永久免费可下
年免费可下
月免费可下
周免费可下

会员 B

VIP¥3.98低至
SVIP单买¥200 内可领

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

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

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

很多人对"自己写操作系统"的印象,是买一本厚厚的原理书,看完前两章就放下了。这门课换了个做法:不追求把操作系统讲全,而是沿着开机这条线,一步步把控制权从主板交到自己写的代码手里。如果你只是想弄明白"电脑按下电源键之后到底发生了什么",它给的是一个能动手验证的答案。

它解决的是哪一类问题

日常写应用代码时,内存、寄存器、地址这些概念都被语言和运行时挡在后面。这门课把它们重新翻出来:CPU 复位后第一条指令从哪来、BIOS 做了什么、为什么引导扇区偏偏是 512 字节、那个 0x7C00 的加载地址是怎么定的、段寄存器和偏移量为什么要配合使用。这些不是背下来的知识点,而是你在调试自己写的启动代码时会反复撞上的问题。学完之后,再看保护模式、分页、中断这些话题,至少知道它们各自接在启动流程的哪一环上,而不是一堆孤立名词。

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

需要你能读写 C 语言,对指针和内存布局不陌生,汇编零基础也能跟,但要有心理准备:前几节会集中补 CPU、内存、指令和段机制的基础理论。如果你完全没碰过底层,建议把第一章的基础理论部分放慢看,尤其是逻辑地址与物理地址那一节,后面所有代码都建立在它上面。

真正动手的部分从加电自检和主引导扇区开始。建议按顺序推进:先跑通第一个启动程序,确认环境没问题;再理解 BIOS 把控制权交到引导扇区的那一瞬间;然后进入从硬盘引导的连续几节,这几节是整门课密度最高的地方,会带着你把 Loader 写完,并处理 512 字节限制带来的跳转和段寻址问题。这一块不要跳,跳了后面接不上。

学完能独立做什么,资料怎么配合

比较现实的目标是:你能独立写出一段被 BIOS 识别并执行的引导代码,让它从硬盘加载自己写的 Loader,把控制权稳稳接过来,并能解释清楚每一步的地址和寄存器状态。这距离一个可用的操作系统还很远,但它是后面所有工作的地基,也是很多人卡住过不去的那道坎。

资料以讲解视频为主,配合每节的验证性编程。用法上建议一节视频对应一次动手:先照着把代码敲出来跑通,再关掉视频自己重写一遍,遇到跑不起来的地方回头查对应理论。实验总结那几节别当复习跳过去,它们往往在解释"为什么这里用 ES 而不是 DS"这类你写代码时会犯嘀咕的细节。整门课节奏偏慢,适合每天抽固定时间推进,不适合一次性刷完。

课程目录

课程目录61 集
  • 51CTO-从零开发操作系统:从加电自检到内核引导(1) ├── 1-1 从零开发操作系统课程介绍.mp4
  • ├── 1-2 开发环境配置与第一个启动程序.mp4
  • ├── 1-3 操作系统的基础知识:CPU、内存和指令(基础理论).mp4
  • ├── 1-4 CS,DS寄存器:代码段,数据段究竟是什么?.mp4
  • ├── 1-5 逻辑地址与物理地址:为什么是段+偏移(分段机制详解).mp4
  • ├── 2-1 加电自检与计算机的启动过程.mp4
  • ├── 2-10 从硬盘引导(四):Loader编码完成.mp4
  • ├── 2-11 从硬盘引导(五):突破512字节与寄存器段寻址再认识.mp4
  • ├── 2-2 7C00解析和主引导扇区魔数.mp4
  • ├── 2-3 验证性编程:引导区与BIOS下实模式编程.mp4
  • ├── 2-4 实验总结:为什么可以用附加段寄存器ES不用DS数据段寄存器.mp4
  • ├── 2-5 CPU寄存器梳理:CSDSES究竟是什么用途.mp4
  • ├── 2-6 CPU的寻址基础知识与栈段寄存器初解.mp4
  • ├── 2-7 从硬盘引导(一):硬盘原理介绍.mp4
  • ├── 2-8 从硬盘引导(二):MBR与loader分块.mp4
  • ├── 2-9 从硬盘引导(三):MBR编码完成.mp4
  • ├── 3-1 保护模式入门:内核态与用户态的由来.mp4
  • ├── 3-10 TSS解析:特权级切换实战(一).mp4
  • ├── 3-11 CPL、DPL、RPL与门的概念:特权级切换实战(二).mp4
  • ├── 3-12 调用门与权限切换:特权级切换实战(三).mp4
  • ├── 3-13 从ring0到ring3:特权级切换实战(四).mp4
  • ├── 3-14 时钟中断:进程时间片轮转的基础.mp4
  • ├── 3-15 保护模式下的中断编程实战(8259A).mp4
  • ├── 3-16 时钟中断编程与本章小结.mp4
  • ├── 3-2 保护模式(一):线性地址、逻辑地址、物理地址.mp4
  • ├── 3-3 保护模式(二):IA32架构、线性地址、逻辑地址、物理地址.mp4
  • ├── 3-4 保护模式(三):全局描述符GDT和线性地址.mp4
  • ├── 3-5 实验环境搭建:保护模式实战(一).mp4
  • ├── 3-6 jmp $再认识,GDT、选择子与寄存器匹配:保护模式实战.mp4
  • ├── 3-7 突破1M的寻址:保护模式实战(三).mp4
  • ├── 3-8 多任务的由来:LDT(局部描述符表)理论与实战.mp4
  • ├── 3-9 ring0和ring3的由来:内核态与用户态切换入门.mp4
  • ├── 4-1 操作系统是用C写的.mp4
  • ├── 4-10 用C写内核(五):用C改写占位Kernel.mp4
  • ├── 4-2 C库与操作系统:C库是建立在操作系统之上的.mp4
  • ├── 4-3 内核是常驻内存的(一):kenel的内存规划由来.mp4
  • ├── 4-4 图示kenel与loader的内存分布关系.mp4
  • ├── 4-5 从mbr加载loader再到loader加载kernel.mp4
  • ├── 4-6 用C写内核(一):elf文件格式透视.mp4
  • ├── 4-7 用C写内核(二):用elf生成占位Kernel.mp4
  • ├── 4-8 用C写内核(三):bochs调试出错的Kernel.mp4
  • ├── 4-9 用C写内核(四):C和汇编的联合编程.mp4
  • ├── 5-1 自己的操作系统系统:Tiny OS的演示.mp4
  • ├── 5-10 shell提示符与内建命令help的实现.mp4
  • ├── 5-11 关机命令poweroff的实现.mp4
  • ├── 5-12 时间命令time的实现——兼论rn.mp4
  • ├── 5-13 独立内核的操作系统完成.mp4
  • ├── 5-2 Tiny OS的编码文件划分:C库、kernel与汇编.mp4
  • ├── 5-3 C库中输入输出系统的实现:liba.asm.mp4
  • ├── 5-4 C库中字符串的实现(上):print.mp4
  • ├── 5-5 C库中字符串的实现(下):readtoBuf.mp4
  • ├── 5-6 C扩充内核的实现:libc.c.mp4
  • ├── 5-7 启动内核入口的实现osKernel.asm.mp4
  • ├── 5-8 交互实验完成.mp4
  • ├── 5-9 清屏函数与内建命令clear的实现.mp4
  • ├── 6-1 从实模式内核到保护模式加载.mp4
  • ├── 6-2 从清屏命令再认识保护模式下的访问控制.mp4
  • ├── 6-3 从cmos时间获取认识保护模式下的时钟中断.mp4
  • ├── 6-4 保护模式下多任务的形式浅析.mp4
  • ├── 6-5 从加电自检到保护模式加载全部完成.mp4
  • ├── 6-6 课程结束与展望.mp4
  • └── 资料代码.exe