📌 Кратко
MMU (Memory Management Unit) — аппаратный блок внутри CPU, обеспечивающий преобразование виртуальных адресов в физические и управление доступом к памяти.
🧠 Как работает
MMU действует как посредник между CPU и RAM:
- При обращении к памяти CPU выдает виртуальный адрес
- MMU преобразует его в физический через page tables
- Проверяется доступ (чтение/запись/исполнение)
- Результат отправляется в Cache и затем в RAM
Основные компоненты MMU:
Компонент | Назначение |
---|---|
TLB (Translation Lookaside Buffer) | Кэш адресных преобразований |
Page Table Walker | Поиск страницы в памяти, если нет в TLB |
Access Control | Проверка прав доступа |
Address Translation Unit | Преобразование виртуального → физического |
Exception Unit | Обработка ошибок: page fault, protection |
⚙️ Где применяется
Область | Роль MMU |
---|---|
OS | Разделение адресного пространства процессов |
Virtual Memory | Использование диска как расширения RAM |
Security | Защита от несанкционированного доступа к памяти |
Hypervisors | Множественные таблицы страниц (например, EPT) |
💻 Пример (на C с POSIX mmap)
#include <sys/mman.h>
void *addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
// MMU создаёт отображение виртуального адреса в физическую память
📐 Схема преобразования адресов
[CPU] → виртуальный адрес
↓
[MMU]
├── TLB (если промах)
└── Page Table Walker → Page Table (в RAM)
↓
Физический адрес → Cache / RAM
✅ Преимущества
-
Поддержка Virtual Memory
-
Разделение процессов по памяти (изоляция)
-
Гибкость в управлении страницами (paging, swapping)
-
Аппаратная защита от сбоев и переполнений
❌ Недостатки
-
TLB misses → увеличение задержек
-
Повышенная сложность архитектуры CPU
-
Требует поддержки со стороны OS (таблицы страниц, исключения)