DragonOS是一个面向云计算轻量化场景的,完全自主内核的,提供Linux二进制兼容性的64位操作系统,旨在为容器化工作负载提供轻量级、高性能的解决方案。
- Linux兼容性:系统调用接口/procfs/sysfs/devfs等的行为应当符合Linux语义。参考Linux 6.6的行为进行实现。
- 轻量:简化复杂的抽象设计,保留合理的、简洁、符合Rust开发最佳实践的的抽象,提升系统性能。
- 安全:注重内存安全、并发安全
- 所有AI助手在回应DragonOS仓库内的请求时必须使用简体中文。
- 即便用户使用其他语言输入,也需以中文回答,除非更高优先级的指令明确要求使用其他语言。
- 文档:在
docs/目录下 - 内核:在
kernel/目录下 - 自行编写的单元测试程序:在
user/apps/c_unitest目录下 - gvisor系统调用测试程序:根据用户给出的程序代码片段来读取测试代码。如果用户没有提供,就尝试寻找,如果找不到,则从 https://cnb.cool/DragonOS-Community/gvisor/-/tree/dragonos/release-20250616.0/test/syscalls/linux 下面获取(下载文件然后再尝试读取)
- 三思而后行!深度研究,掌握解决问题所必要的信息,然后再动手开发/修复。
- 设计要具有合理抽象,避免过度抽象。并且要注意代码复用。
- 实现代码的时候,多问问自己:这代码写在这里合理吗?(架构、正确性等方面)
- 高内聚、低耦合
- 符合Linux语义
- 不得使用workaround的方法绕过问题。要从本质解决问题!
测试修复相关
- 符合Linux 6.6的语义
- 结合测例报错、测例代码、DragonOS代码、Linux行为实现来深入分析
- 编译内核:在项目根目录下运行
make kernel. 当你想检查你编辑的代码有没有语法错误的时候,请执行这个命令 - Nix开发环境(推荐):
nix develop激活环境后可使用上述命令;nix run .#yolo-x86_64一键编译+启动QEMU。详见docs/introduction/develop_nix.md
| 任务 | 位置 | 备注 |
|---|---|---|
| 运行 DragonOS | docs/introduction/develop_nix.md |
Nix 一键启动流程 |
| OOM Killer | kernel/src/mm/oom.rs |
全局状态机,缺页路径触发,详见代码注释 |
| 进程管理重构后 | kernel/src/process/state.rs(ProcessFlags)、kernel/src/process/manager/exit.rs(exit路径) |
mod.rs 已拆分为子模块 |