开发路线图¶
本文档描述 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/readopen/closeexitgetpid
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
技术债务¶
需要重构的部分¶
- 中断管理:当前中断处理较简单,需要更完善的框架
- 调度器:当前为简单 FIFO,需实现优先级调度
- VFS 层:部分功能未完全实现
需要添加的测试¶
- 单元测试框架:为关键模块添加测试
- 压力测试:内存分配器压力测试
- 回归测试:确保功能正确性
贡献指南¶
如何贡献¶
- Fork 项目
- 创建功能分支
- 实现功能并添加文档
- 提交 Pull Request
代码审查标准¶
- 遵循编码规范
- 添加必要注释
- 不引入编译警告
- 保持向后兼容
版本规划¶
| 版本 | 目标 | 状态 |
|---|---|---|
| v0.1 | 基础内核 | 已完成 |
| v0.2 | 用户态支持 | 进行中 |
| v0.3 | 进程间通信 | 计划中 |
| v0.4 | 文件系统增强 | 计划中 |
| v0.5 | 网络支持 | 计划中 |
| v1.0 | 完整操作系统 | 长期目标 |
参考资源¶
学习资料¶
参考项目¶
联系方式¶
如有问题或建议,请提交 Issue 或 Pull Request。