tianole/docs/roadmap.md

2.8 KiB
Raw Blame History

Tianole 路线图

这个文件只做路线入口,不承载详细设计。详细任务放在 docs/agents/tasks/,避免每次修改都把长期上下文塞进总路线。

当前状态

基础已具备:

  • 最小 UEFI -> bootloader -> kernel 启动链。
  • bootloader 与 kernel 拆分。
  • 独立 kernel.elf 加载。
  • 进入 kernel 前调用 ExitBootServices
  • memory map 通过 boot_info 传入 kernel。
  • kernel 能统计 memory map 描述符数量和 conventional memory 页数。
  • early log 基础通用前端、x86 backend、QEMU debug port、COM1 串口。
  • panic 基础:最小 panic() 已接入 early log 和架构 halt 路径。
  • CPU exception 基础x86_64 GDT/TSS/IDT、exception vector 0-31、统一 trap frame。
  • trap 验证invalid opcode 已能进入 trap dispatch 并最终进入 panic。
  • 物理内存基础:已从 boot memory map 建立最小物理页 allocator。
  • 物理页验证:alloc_page/free_page selftest 已接入启动检查。
  • 页表基础:已切换到内核自有 PML4并提供最小 map_page/unmap_page/virt_to_phys
  • 页表验证:页表 map/unmap/query selftest 已接入启动检查。
  • page fault 基础:已能输出 fault address、错误码、访问类型和权限来源。
  • 内核堆基础:已提供 kmalloc/kfree,并接入启动 selftest。
  • timer 基础:已接入 x86 PIC/PITtimer IRQ 能进入通用 tick 入口。
  • kernel thread 基础:已建立线程对象、内核栈和 run queue。
  • 构建系统已拆成根 Makefile、arch/x86/Makefile 和目录 Makefile。
  • scripts/check.sh 已验证启动日志、串口日志和 invalid opcode 异常路径GitHub Actions 已接入。
  • .clang-format 已用于强制当前 C 代码风格。

后续未完成:

  • 完整日志体系printk、log level、ring buffer、oops、符号化、crash dump。
  • 完整中断体系IRQ handler 注册、APIC、外部设备 IRQ、优先级和屏蔽策略。
  • 内存管理扩展长期内存区域模型、page metadata、buddy/slab、后续完整缺页策略。
  • 后续主线:调度、进程、文件系统、用户态和 shell。

当前下一步

下一步执行:

  • docs/agents/tasks/04-time-scheduler.md

目标:

  • 建立上下文切换入口和最小 round-robin 调度循环。

任务路由

按顺序推进:

  1. docs/agents/tasks/01-early-debug.md
  2. docs/agents/tasks/02-cpu-interrupts.md
  3. docs/agents/tasks/03-memory.md
  4. docs/agents/tasks/04-time-scheduler.md
  5. docs/agents/tasks/05-input-events.md
  6. docs/agents/tasks/06-storage-vfs.md
  7. docs/agents/tasks/07-user-mode.md
  8. docs/agents/tasks/08-shell-tools.md
  9. docs/agents/tasks/09-driver-expansion.md
  10. docs/agents/tasks/10-real-machine.md

Linux 级长期能力缺口和对应阶段,见:

  • docs/agents/tasks/README.md