1487 字
4 分钟
从零开始的操作系统系列导读
我写操作系统内核的起因很简单:用了好几年 Linux,某天突然意识到自己压根不知道按下电源键之后机器到底干了什么。printf 怎么把字打到屏幕上?malloc 的内存从哪来?进程切换时 CPU 在做什么?这些问题靠看概念书是回答不了的,得自己动手写一遍。
市面上操作系统教材不少,但大多从概念出发,先讲进程调度、内存管理这些高层抽象,再回头补底层实现。这种路径能建立宏观认知,可对想搞清楚”从上电到运行程序整条链路”的人来说,总觉得少了点什么。我选择反过来,从按下电源键那一刻开始,逐行代码走完从硬件到软件的全链路。
这个系列做什么
- 从 512 字节的 MBR 引导程序开始,一路写到能输入命令的 Shell,最终得到一个在 QEMU 和真实硬件上都能跑的操作系统
- 每一章都产出可运行的代码,不是模拟也不是伪代码,是真实的引导程序、内核和用户态程序
- 覆盖 x86 保护模式、分页机制、中断系统、内存管理、进程调度、文件系统、系统调用、Shell 这些核心机制
- 本系列不是 Linux 内核源码分析,也不是生产级操作系统的设计文档,它是一条从零到一的实践路径
需要什么前置知识
- x86 汇编语言基础:常用寄存器(
EAX/EBX/ECX/EDX/ESP/EBP/ESI/EDI)、内存寻址方式、mov/jmp/call/ret/push/pop/int等常用指令,本系列使用 NASM 语法 - x86 CPU 工作模式:实模式(16 位,1 MB 寻址)和保护模式(32 位,4 GB 寻址)的区别,段地址 × 16 + 偏移地址的计算方式
- C 语言编程:指针与内存操作、结构体与位域、链接器的基本概念(段、符号表、重定位)
- 计算机组成原理:内存层次结构(寄存器 → Cache → 内存 → 磁盘)、中断机制、I/O 端口与内存映射 I/O
推荐书目和教程
- OSDev Wiki - 操作系统开发的百科全书,几乎所有问题都能在这里找到线索
- Intel 64 and IA-32 Architectures Software Developer’s Manual - x86 架构权威参考手册,Vol.3A 中保护模式和分页的描述是必读内容
- 南京大学:操作系统设计与实现 - jyy 老师的操作系统课程,理论与实践结合
- The little book about OS development - 简洁的操作系统开发入门小书
- os-tutorial by cfenollosa - 从零创建操作系统的步骤化教程
- 《操作系统真象还原》郑钢著 - 中文著作中实践性很强的操作系统开发书,从零实现一个简易 OS
章节目录
- 第 1 章:从系统加电到 Shell - BIOS/UEFI 启动流程,引导加载器工作原理,内核初始化,第一个用户进程
- 第 2 章:手写 MBR 引导程序 - 实模式内存布局,BIOS 磁盘读写 INT 13h,MBR 与 Loader 的结构设计
- 第 3 章:开启保护模式与分页 - GDT 描述符表,CR0 切换保护模式,页目录/页表结构,开启分页
- 第 4 章:虚拟内存深入 - MMU 地址转换,多级页表结构,TLB 加速与大页,缺页处理
- 第 5 章:正式加载内核 - ELF 格式解析,内核进入,跳转到 C 代码
- 第 6 章:代码重构:模块化架构设计 - 基础类型定义、VGA 驱动封装、格式化输出、端口 I/O 抽象
- 第 7 章:中断系统:IDT、PIC 与定时器 - IDT 构建、PIC 编程、时钟中断、键盘中断
- 第 8 章:内存管理:PMM、VMM 与内核堆 - 物理内存管理器、虚拟内存管理器、kheap 分配器
- 第 9 章:任务调度系统:task_t 与上下文切换 - task_t 结构体、上下文保存与恢复、协作式调度
- 第 10 章:调度器:运行队列与 Round-Robin - 运行队列、RR 调度算法、定时器驱动的抢占式调度
- 第 11 章:同步原语:自旋锁、互斥锁与信号量 - 自旋锁、互斥锁、信号量的实现与使用
- 第 12 章:用户空间:TSS 与 Ring 3 切换 - TSS 结构、Ring 0 → Ring 3 切换、用户态栈与内核态栈
- 第 13 章:设备驱动:键盘与 ATA 硬盘 - 键盘驱动、ATA PIO 硬盘读写、中断驱动的 I/O
- 第 14 章:文件系统:VFS 与 SimpleFS - VFS 抽象层、SimpleFS 磁盘布局、文件读写操作
- 第 15 章:进程管理:fork 与 exec - fork 进程复制、exec 程序加载、进程生命周期管理
- 第 16 章:系统调用:20 个 POSIX 接口 - int 0x80 系统调用、POSIX 兼容接口实现
- 第 17 章:Shell:命令解析与执行 - 命令行解析、管道与重定向、内置命令
- 第 18 章:用户工具:ls、cat、cp 等命令 - 用户态工具实现、文件操作命令
- 第 19 章:启动镜像:系统集成与自检 - 完整系统镜像构建、启动自检、集成验证
每个章节的代码在 souloss/os-learning 对应目录下,可直接运行。
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
从零开始的操作系统系列导读
https://blog.souloss.cn/posts/os/os-series-guide/ 部分信息可能已经过时
相关文章 智能推荐
1
从系统加电到 Shell
操作系统 以系统加电为起点,梳理 BIOS/UEFI 固件初始化、GRUB 引导加载、Linux 内核启动、init 进程启动的完整调用链,理清从硬件上电到用户进入 Shell 的每一层。
2
系统调用:20 个 POSIX 接口
操作系统 完善系统调用框架,实现 20 个 POSIX 风格接口,涵盖文件操作、进程控制、I/O 操作与系统信息查询,为 Shell 和用户工具提供完整基础服务。
3
手写 Loader:开启保护模式与分页虚拟内存
操作系统 手写 Loader 程序,构建 GDT 段描述符表,通过 CR0 切换到 32 位保护模式,搭建二级页表并开启分页机制,最终跳入内核的完整流程与代码实现。
4
启动镜像:系统集成与自检
操作系统 将所有组件整合为可启动的 VHD 磁盘镜像,实现自定义引导链、系统初始化序列与自检机制,完成操作系统的最终集成与发布。
5
文件系统:VFS 与 SimpleFS
操作系统 构建虚拟文件系统(VFS)层与基于内存的 SimpleFS 文件系统,实现文件存储抽象、路径解析与核心文件操作接口。






