Skip to content

开发路线图

本文档描述 NoobKernel 的开发规划和未来方向。

当前状态

已完成功能

  • [x] 内核启动流程
  • [x] 物理内存管理
  • [x] Buddy 分配器
  • [x] Slab 分配器
  • [x] 内核虚拟内存(Sv39 页表)
  • [x] VMA 管理
  • [x] 缓冲区缓存
  • [x] PLIC 中断控制器
  • [x] 定时器中断
  • [x] 内核态中断处理
  • [x] 进程结构和调度
  • [x] 内核线程
  • [x] 自旋锁和原子操作
  • [x] VFS 框架
  • [x] ramfs 文件系统
  • [x] 文件描述符表

待完善功能

  • [ ] 多核支持(SMP)
  • [ ] 用户态进程
  • [ ] 系统调用接口
  • [ ] 进程间通信

开发路线图

第一阶段:完善基础设施

目标:完善内核基础功能,提升稳定性。

1.1 用户态支持

  • [ ] 用户态进程创建
  • [ ] 用户态内存布局
  • [ ] 用户态中断处理(usertrap)
  • [ ] trampoline 页映射

1.2 系统调用

  • [ ] 系统调用框架
  • [ ] 基础系统调用实现:
  • write / read
  • open / close
  • exit
  • getpid

1.3 进程管理增强

  • [ ] fork 系统调用
  • [ ] exec 系统调用
  • [ ] wait 系统调用
  • [ ] 进程退出和资源回收

第二阶段:进程间通信

目标:实现进程间通信机制。

2.1 管道

  • [ ] 匿名管道
  • [ ] 管道读写缓冲
  • [ ] 管道系统调用

2.2 信号

  • [ ] 信号框架
  • [ ] 信号发送和处理
  • [ ] kill / signal 系统调用

2.3 共享内存

  • [ ] 共享内存机制
  • [ ] shmget / shmat 系统调用

第三阶段:文件系统增强

目标:支持持久化存储和更多文件系统。

3.1 块设备持久化

  • [ ] 磁盘镜像创建
  • [ ] 块设备分区

3.2 简单文件系统

  • [ ] ext2 文件系统(只读)
  • [ ] 或 FAT32 文件系统

3.3 文件系统特性

  • [ ] 目录遍历
  • [ ] 符号链接
  • [ ] 文件权限检查

第四阶段:网络支持

目标:实现基础网络功能。

4.1 网络驱动

  • [ ] VirtIO 网络驱动
  • [ ] 网络包收发

4.2 网络协议栈

  • [ ] 以太网层
  • [ ] IP 层
  • [ ] UDP/TCP(简化版)

4.3 Socket 接口

  • [ ] Socket 抽象
  • [ ] socket / bind / listen 系统调用

第五阶段:多核支持

目标:支持多核处理器。

5.1 SMP 启动

  • [ ] 多核启动流程
  • [ ] 核间中断(IPI)

5.2 并发增强

  • [ ] Per-CPU 变量
  • [ ] RCU(Read-Copy-Update)
  • [ ] 睡眠锁

5.3 负载均衡

  • [ ] 多核调度
  • [ ] 进程迁移

第六阶段:用户态生态

目标:构建用户态程序生态。

6.1 C 库

  • [ ] 简化的 libc 实现
  • [ ] 系统调用封装

6.2 Shell

  • [ ] 命令行 Shell
  • [ ] 命令解析
  • [ ] 管道和重定向

6.3 基础工具

  • [ ] ls / cat / echo
  • [ ] mkdir / rm
  • [ ] cp / mv

技术债务

需要重构的部分

  1. 中断管理:当前中断处理较简单,需要更完善的框架
  2. 调度器:当前为简单 FIFO,需实现优先级调度
  3. VFS 层:部分功能未完全实现

需要添加的测试

  1. 单元测试框架:为关键模块添加测试
  2. 压力测试:内存分配器压力测试
  3. 回归测试:确保功能正确性

贡献指南

如何贡献

  1. Fork 项目
  2. 创建功能分支
  3. 实现功能并添加文档
  4. 提交 Pull Request

代码审查标准

  1. 遵循编码规范
  2. 添加必要注释
  3. 不引入编译警告
  4. 保持向后兼容

版本规划

版本 目标 状态
v0.1 基础内核 已完成
v0.2 用户态支持 进行中
v0.3 进程间通信 计划中
v0.4 文件系统增强 计划中
v0.5 网络支持 计划中
v1.0 完整操作系统 长期目标

参考资源

学习资料

参考项目

联系方式

如有问题或建议,请提交 Issue 或 Pull Request。