Skip to content

Latest commit

 

History

History
100 lines (78 loc) · 3.34 KB

File metadata and controls

100 lines (78 loc) · 3.34 KB

操作系统教程完整章节规划

概述

本仓库是一个完整的操作系统开发教程,从 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-08章)

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-11章)

09.kernel-task-basic - 任务结构 (task_t),上下文切换 (context_switch.S)
10.kernel-sched      - 运行队列,Round-Robin 调度,idle 任务,抢占
11.kernel-sync       - 自旋锁,互斥锁(阻塞等待队列),信号量

第三阶段:用户态和驱动(12-13章)

12.kernel-userspace - TSS,Ring 0→3 切换 (iret),系统调用 (int 0x80)
13.kernel-drivers   - 键盘驱动(信号量阻塞),ATA 硬盘驱动,设备框架

第四阶段:文件系统和进程(14-16章)

14.kernel-fs      - SimpleFS 内存文件系统,VFS 层,文件描述符表
15.kernel-proc    - 进程结构,fork/exec 框架,多进程协作
16.kernel-syscall - 完整系统调用表(20个),文件/目录/进程操作

第五阶段:用户界面(17-19章)

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