Files
2025-02-25 01:14:52 +00:00

55 lines
2.7 KiB
Markdown

# x86_64 Virtual Memory Layout
┌─────────────────────┐ 0xFFFFFFFF_FFFFFFFF
│ Higher Half │
├─────────────────────┤ 0xFFFFFFFF_FF600000
│ Recursive │ (Optional: for page table manipulation)
│ Page Mapping │
├─────────────────────┤ 0xFFFFFFFF_C0000000
│ Kernel Stacks │ (Multiple 16KB or 32KB stacks, guard pages between)
├─────────────────────┤
│ Kernel Heap │ (Dynamic allocation for kernel)
├─────────────────────┤ 0xFFFFFFFF_80000000
│ Kernel Code │ (Loaded by bootloader)
├─────────────────────┤ 0x00007FFF_FFFFFFFF
│ Guard │ (Prevent user->kernel pointer errors)
├─────────────────────┤ 0x00007FFF_00000000
│ User Stacks │ (Grows down)
├─────────────────────┤
│ ... │ (Available for mmap, shared libraries, etc.)
├─────────────────────┤
│ User Heap │ (Grows up)
├─────────────────────┤
│ Program .bss │ (Uninitialized data)
│ Program .data │ (Initialized data)
│ Program .rodata │ (Read-only data)
│ Program .text │ (Code)
├─────────────────────┤ 0x0000000000400000
│ Guard │ (Catch null pointer dereference)
└─────────────────────┘ 0x0000000000000000
## Memory Regions Explanation
### Kernel Space (Higher Half)
- **Kernel Code**: Fixed location at -2GB
- **Kernel Heap**: Dynamic memory for kernel operations
- **Kernel Stacks**: Multiple stacks for different CPU modes/tasks
- **Recursive Mapping**: Optional region for page table manipulation
### User Space (Lower Half)
- **Guard Pages**: Protect against null pointer dereference (0-4MB)
- **Program Sections**: Start at 0x400000
- .text: Program code
- .rodata: Read-only data
- .data: Initialized data
- .bss: Uninitialized data
- **User Heap**: Grows upward from end of program sections
- **Dynamic Region**: Space for mmap allocations, shared libraries
- **User Stacks**: Grows downward from 0x00007FFF_00000000
### Key Features
- Full 48-bit addressing support (256TB virtual address space)
- Clear separation between user and kernel space
- Protected null pointer dereference
- Room for stack/heap growth
- Space for dynamic libraries and mappings