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.

Modules

address 🔒

Implementation of physical and virtual address and page number.

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

The global allocator

memory_set 🔒

Implementation of MapArea and MemorySet.

page_table 🔒

Implementation of PageTableEntry and PageTable.

Structs

manage a frame which has the same lifecycle as the tracker

a memory set instance through lazy_static! managing kernel space

map permission corresponding to that in pte: R W X U

memory set structure, controls virtual-memory space

page table entry structure

physical address

physical page number

virtual address

virtual page number

Functions

allocate a frame

initiate heap allocator, frame allocator and kernel space

Check PageTable running correctly

translate a pointer to a mutable u8 Vec through page table

translate a generic through page table and return a mutable reference

translate a pointer to a mutable u8 Vec end with \0 through page table to a String