Component explorer
Memory Manager
The memory manager owns frame allocation, virtual mappings, and the policies that let later phases isolate work safely.
Introduced in
Touched by
- IPC Core
- POSIX Compat
- Shell And Tools
- Memory Reclamation
- Signal Handlers
- Text Editor
- Kernel Memory Improvements
- IPC Completion
- Service Model Maturity
- Kernel Completion And Roadmap Alignment
- Kernel Structural Hardening
- Kernel Memory Modernization
- Display And Input Architecture
- Cross Compiled Toolchains
- Node.js
Responsibilities
- Allocate and reclaim physical frames.
- Manage kernel and userspace mappings.
- Provide the memory primitives later subsystems build on.
The memory manager is introduced in Memory Basics and later touched by 15 phase(s).
Key files
- kernel/src/mm/memory_map.rs — The memory-map logic lives in kernel/src/mm/memory_map.rs.
- kernel/src/mm/frame_allocator.rs — The frame allocator lives in kernel/src/mm/frame_allocator.rs.
- kernel/src/mm/paging.rs — The page-table helpers live in kernel/src/mm/paging.rs.
- kernel/src/mm/heap.rs — The heap setup lives in kernel/src/mm/heap.rs.
- kernel/src/mm/debug.rs — The debug helpers live in kernel/src/mm/debug.rs, and the smoke-test allocations
- kernel/src/mm/user_mem.rs — kernel/src/mm/user_mem.rs) to transfer bytes through the caller's page
- kernel/src/mm/elf.rs — kernel/src/mm/elf.rs — setup_abi_stack_with_envp (envp support)
- kernel/src/mm/mod.rs — Update free_process_page_table() in kernel/src/mm/mod.rs to walk all four
- kernel-core/src/buddy.rs — Implements a binary buddy system for physical frame allocation. Free lists are
- kernel-core/src/slab.rs — allocator is host-testable via kernel-core.
- kernel/src/mm/slab.rs — New: kernel slab cache instances
- kernel/src/mm/magazine.rs — A fixed-size array of physical frame addresses per CPU, accessed via smp::per_core(). Cooperative scheduling removes kernel task migration during the fast path, but IRQ re-entrancy still exists, so local mutations occur with interrupts masked or an equivalent local non-reentrancy guard. The per-CPU cache sits between callers and the global BuddyAllocator, absorbing the vast majority of single-page allocations while coordinated reclaim drains caches via owner-CPU self-drain or equivalent synchronized handoff.
- kernel/src/mm/* — :position()-based free-block removal with an O(1)-removable per-order representation while preserving kernel-core as a pure, host-testable data structure. If page-body metadata is used, keep it in the kernel-side wrapper rather than baking physical-page assumptions into kernel-core.