📌 Кратко

MMU (Memory Management Unit) — аппаратный блок внутри CPU, обеспечивающий преобразование виртуальных адресов в физические и управление доступом к памяти.

🧠 Как работает

MMU действует как посредник между CPU и RAM:

  1. При обращении к памяти CPU выдает виртуальный адрес
  2. MMU преобразует его в физический через page tables
  3. Проверяется доступ (чтение/запись/исполнение)
  4. Результат отправляется в 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 (таблицы страниц, исключения)