ax-mm
路径:
os/arceos/modules/axmm类型:库 crate 分层:ArceOS 层 / ArceOS 内核模块 版本:0.3.0-preview.3文档依据:Cargo.toml、src/lib.rs、src/aspace.rs、src/backend/mod.rs、src/backend/linear.rs、src/backend/alloc.rs
ax-mm 是 ArceOS 的虚拟内存管理模块。它把 ax-hal::paging::PageTable 提供的页表能力、ax-memory-set 提供的区间元数据管理,以及 ax-alloc 提供的物理页框分配整合成统一的地址空间抽象 AddrSpace,负责建立和维护宿主内核自己的虚拟地址空间。
架构设计
设计定位
ax-mm 的职责边界非常明确:
- 它管理的是 宿主内核地址空间,核心对象是
AddrSpace和全局KERNEL_ASPACE。 - 它不直接负责底层页表项格式、TLB 指令或地址翻译细节,这些由
ax-hal提供。 - 它也不直接承担 StarryOS 进程级复杂地址空间策略,例如 COW、文件后端和用户态高级内存语义;这些通常在 StarryOS 自己的
mm层扩展。
因此,ax-mm 更像是 ArceOS 宿主侧的“页表驱动型地址空间管理器”,而不是所有项目共享的一切内存策略中心。
模块结构
src/lib.rs:对外 API 入口。负责全局KERNEL_ASPACE、init_memory_management()、iomap()、new_user_aspace()以及MemRegionFlags到MappingFlags的转换。src/aspace.rs:核心类型AddrSpace所在文件,封装映射、取消映射、权限更新、跨地址空间读写和缺页处理逻辑。src/backend/mod.rs:定义Backend枚举,并把Linear与Alloc两类映射后端统一到ax_memory_set::MappingBackend契约上。src/backend/linear.rs:线性映射实现,适用于虚拟地址与物理地址存在固定偏移的场景。src/backend/alloc.rs:分配式映射实现,支持 eager populate 和按需缺页分配两种模式。