ax-alloc
路径:
os/arceos/modules/axalloc类型:库 crate 分层:ArceOS 层 / 内存分配运行时基础件 版本:0.3.0-preview.3文档依据:Cargo.toml、README.md、src/lib.rs、src/default_impl.rs、src/axvisor_impl.rs、src/page.rs、src/tracking.rs
ax-alloc 是 ArceOS 的全局分配入口。它把 ax-allocator 提供的字节分配器和页分配器包装成可直接挂到 #[global_allocator] 的 GlobalAllocator,并额外提供页级接口、使用量统计和可选的分配跟踪能力。它属于运行时叶子基础件:负责“分配”,但不负责页表建立、地址空间管理或物理内存发现,这些职责分别由 ax-mm、ax-hal 和 ax-runtime 承担。
架构设计
设计定位
ax-alloc 在启动链和运行期之间扮演的是“统一分配服务”角色:
- 向下,它复用
ax-allocator或buddy-slab-allocator,而不是自行实现完整分配算法。 - 向上,它向
ax-runtime、ax-mm、ax-hal::paging、ax-driver、ax-dma、ax-api等模块暴露统一的堆/页分配接口。 - 横向,它通过
UsageKind/Usages给页表、DMA、页缓存等不同用途打标签,方便上层做统计与诊断。
因此,ax-alloc 不是“内存管理本体”,而是“内存分配入口”。把它写成虚拟内存系统、页表系统或用户地址空间管理器,都会高估它的职责。