编程与开发 · 第 7 期

自己写个操作系统,从一行汇编开始

引导与中断 · boot & interrupt

操作系统不是黑魔法,从一行汇编开始:通电→BIOS→MBR→bootloader→kernel→init。引导扇区就 512 字节,中断向量表 256 项。理解引导和中断这两件事,操作系统就不神秘了——剩下的都是在它们上面加功能。
⏱ 约 11 分钟 🎯 想懂操作系统怎么跑起来的人 📦 源:build-your-own-x §9

01一个反共识:操作系统从 512 字节开始

很多人觉得"写操作系统"是天文数字的工程。其实启动阶段,CPU 只读 512 字节——这就是引导扇区。

通电后 BIOS/UEFI 把磁盘第一个扇区(512 字节)读进内存固定地址,跳过去执行。这 512 字节叫 MBR(主引导记录),它的任务是把真正的 bootloader 从磁盘读到内存,再跳过去。bootloader 再加载内核。层层接力,每层都比上一层大、能干更多事。操作系统不是一开始就全在内存,是一级一级加载上来的。

操作系统从 512 字节开始,
不是天文数字。
灏天文库 · 编程与开发 P.21

02引导过程动画:逐步看开机

点"下一步",看从通电到登录界面,操作系统怎么一级一级加载上来。

⚡ 引导过程动画
逐步看开机到登录的 6 个阶段。
← 点下一步开始

03中断:操作系统的"事件响应系统"

引导把内核加载进内存后,操作系统怎么响应事件(按键、时钟、磁盘完成)?靠中断。

所以"操作系统响应事件"的本质是:中断向量表 + 一堆处理函数。你写操作系统,就是填这张表、写这些函数。引导把表建好,中断让事件能进来,剩下的(进程、内存、文件)都是在处理函数里加逻辑。

引导建表,
中断响应事件。
灏天文库 · 编程与开发 P.22

04带走这套清单

✅ 从零写 OS 6 条可执行规则

  1. 从 512 字节引导扇区开始:写一个 MBR 把下一段加载进内存,先跑通接力。
  2. bootloader 加载内核:从 real mode 切到 protected/long mode,再加载内核。
  3. 建中断向量表:256 项,填好硬件中断和系统调用的处理函数地址。
  4. 先实现时钟和键盘中断:能响应事件,OS 才"活"起来。
  5. 对照真实 OS:每加一块看 Linux/OSDev wiki 怎么做,理解取舍。
  6. 不追求能日用:目标是理解引导+中断,不是替代 Linux。
引导 + 中断,
操作系统的地基。
灏天文库 · 编程与开发 P.23