# Module os::mm

source · [−]
Expand description

Memory management implementation

SV39 page-based virtual-memory architecture for RV64 systems, and everything about memory management, like frame allocator, page table, map area and memory set, is implemented here.

Every task or process has a memory_set to control its virtual memory.

## Re-exports

`pub use address::PhysAddr;`
`pub use address::PhysPageNum;`
`pub use address::VirtAddr;`
`pub use address::VirtPageNum;`
`pub use frame_allocator::frame_alloc;`
`pub use frame_allocator::FrameTracker;`
`pub use memory_set::remap_test;`
`pub use memory_set::MapPermission;`
`pub use memory_set::MemorySet;`
`pub use memory_set::KERNEL_SPACE;`
`pub use memory_set::KERNEL_SPACE;`
`pub use page_table::translated_byte_buffer;`
`pub use page_table::PageTableEntry;`

## Modules

address 🔒

Implementation of physical and virtual address and page number.

frame_allocator 🔒

Implementation of `FrameAllocator` which controls all the frames in the operating system.

heap_allocator 🔒

The global allocator

memory_set 🔒

Implementation of `MapArea` and `MemorySet`.

page_table 🔒

Implementation of `PageTableEntry` and `PageTable`.

## Functions

init

initiate heap allocator, frame allocator and kernel space