Files
火花andlongjin 124b2279a6 fix(mm/oom): staged OOM killer fixes — victim marking, direct reclaim, observability (#1995)
fix(mm/oom): align OOM killer victim lifecycle semantics

Rework OOM victim tracking to match Linux-like lifetime semantics more closely:
record victim metadata on the shared signal state, commit inflight victim state
before SIGKILL delivery, and only clear inflight after the victim mm has really
finished teardown.

Also:
- gate OOM victim reserve access on fatal/exiting state
- avoid clearing inflight based only on "no task references this mm"
- remove partial-reclaim wakeups from mmu_gather OOM progress handling
- align oom_score/oom_score_adj procfs behavior and oom_kill vmstat accounting
- add OOM fault-inject coverage in c_unitest and dunitest
- keep related Nix/dev docs and generated version formatting tidy

---------

Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
Signed-off-by: longjin <longjin@dragonos.org>
Co-authored-by: longjin <longjin@dragonos.org>
2026-07-10 01:31:37 +08:00

2.6 KiB
Raw Permalink Blame History

README for AI Agents

项目简介

DragonOS是一个面向云计算轻量化场景的,完全自主内核的,提供Linux二进制兼容性的64位操作系统,旨在为容器化工作负载提供轻量级、高性能的解决方案。

设计思想

  • Linux兼容性:系统调用接口/procfs/sysfs/devfs等的行为应当符合Linux语义。参考Linux 6.6的行为进行实现。
  • 轻量:简化复杂的抽象设计,保留合理的、简洁、符合Rust开发最佳实践的的抽象,提升系统性能。
  • 安全:注重内存安全、并发安全

开发准则

交互语言规范

  • 所有AI助手在回应DragonOS仓库内的请求时必须使用简体中文。
  • 即便用户使用其他语言输入,也需以中文回答,除非更高优先级的指令明确要求使用其他语言。

项目目录结构:

开发最佳实践

  • 三思而后行!深度研究,掌握解决问题所必要的信息,然后再动手开发/修复。
  • 设计要具有合理抽象,避免过度抽象。并且要注意代码复用。
  • 实现代码的时候,多问问自己:这代码写在这里合理吗?(架构、正确性等方面)
  • 高内聚、低耦合
  • 符合Linux语义
  • 不得使用workaround的方法绕过问题。要从本质解决问题!

测试修复相关

  • 符合Linux 6.6的语义
  • 结合测例报错、测例代码、DragonOS代码、Linux行为实现来深入分析

开发时的一些常见命令

  • 编译内核:在项目根目录下运行make kernel. 当你想检查你编辑的代码有没有语法错误的时候,请执行这个命令
  • Nix开发环境(推荐):nix develop激活环境后可使用上述命令;nix run .#yolo-x86_64一键编译+启动QEMU。详见docs/introduction/develop_nix.md

WHERE TO LOOK

任务 位置 备注
运行 DragonOS docs/introduction/develop_nix.md Nix 一键启动流程
OOM Killer kernel/src/mm/oom.rs 全局状态机,缺页路径触发,详见代码注释
进程管理重构后 kernel/src/process/state.rsProcessFlags)、kernel/src/process/manager/exit.rsexit路径) mod.rs 已拆分为子模块