本仓库是一个完整的操作系统开发教程,从 MBR 引导到交互式 Shell,逐步构建一个教学级操作系统。
| 章节 | 主题 | 状态 | 核心新增 |
|---|---|---|---|
| 01 | MBR 引导 | 完成 | mbr.S |
| 02 | 两阶段引导 | 完成 | loader.S |
| 03 | 保护模式 | 完成 | GDT, 模式切换 |
| 04 | 虚拟内存 | 完成 | 分页机制 |
| 05 | 基础内核 | 完成 | kernel.c, VGA |
| 06 | 代码重构 | 完成 | 模块化目录结构 |
| 07 | 中断系统 | 完成 | IDT, PIC, 定时器 |
| 08 | 内存管理 | 完成 | PMM, VMM, KHeap |
| 09 | 任务基础 | 完成 | task_t, context_switch, 手动切换 |
| 10 | 调度器 | 完成 | runqueue, Round-Robin, idle 任务, 抢占 |
| 11 | 同步原语 | 完成 | spinlock, mutex(阻塞), semaphore |
| 12 | 用户空间 | 完成 | TSS, Ring 3 切换(iret), syscall(int 0x80) |
| 13 | 设备驱动 | 完成 | 键盘(信号量阻塞), ATA 硬盘, 设备框架 |
| 14 | 文件系统 | 完成 | SimpleFS(完整CRUD), VFS fd 表 |
| 15 | 进程管理 | 完成 | 进程结构, fork/exec 框架, 多进程文件操作 |
| 16 | 系统调用 | 完成 | 20个 syscall (文件/目录/进程/IO) |
| 17 | Shell | 完成 | 命令解析器, 15个内建命令, 历史记录 |
| 18 | 用户工具 | 完成 | ls/cat/cp/echo/mkdir 工具演示 |
| 19 | 启动镜像 | 完成 | 完整系统集成, 自检, 交互式 Shell |
01.hello-mbr - BIOS 启动,MBR 结构
02.hello-loader - 磁盘读取,两阶段引导
03.protected-mode - GDT,保护模式切换
04.virtual-memory - 分页机制,地址映射
05.hello-kernel - 内核入口,VGA 输出
06.refactoring - 模块化,代码组织
07.kernel-idt - 中断描述符表,异常处理,定时器
08.kernel-mm - 物理内存管理,虚拟内存,内核堆
09.kernel-task-basic - 任务结构 (task_t),上下文切换 (context_switch.S)
10.kernel-sched - 运行队列,Round-Robin 调度,idle 任务,抢占
11.kernel-sync - 自旋锁,互斥锁(阻塞等待队列),信号量
12.kernel-userspace - TSS,Ring 0→3 切换 (iret),系统调用 (int 0x80)
13.kernel-drivers - 键盘驱动(信号量阻塞),ATA 硬盘驱动,设备框架
14.kernel-fs - SimpleFS 内存文件系统,VFS 层,文件描述符表
15.kernel-proc - 进程结构,fork/exec 框架,多进程协作
16.kernel-syscall - 完整系统调用表(20个),文件/目录/进程操作
17.shell - 命令行 Shell,命令解析,15个内建命令
18.userspace-tools - 用户工具演示 (ls, cat, cp, echo, mkdir)
19.boot-image - 最终集成镜像,系统自检,交互式 Shell
# 编译某一章
cd XX.chapter-name
make clean && make all
# 运行(无图形,串口输出)
make run
# 运行(VNC 图形)
make run-vnc
# 调试
make run-vnc.debug- GCC(支持
-m32)或i386-elf-gcc交叉编译器 - NASM 汇编器
- GNU LD 链接器
- QEMU(qemu-system-i386)
- qemu-img