MMU
Блок процессора, который при каждом обращении к памяти переводит виртуальные адреса в физические.
Без MMU каждая программа видела бы реальную память и могла бы писать куда угодно. С ним у каждого процесса своё адресное пространство, и один и тот же виртуальный адрес в двух программах указывает на разную физическую память. Трансляция происходит аппаратно при каждом чтении и записи: картой служат таблицы страниц в памяти, а кэшем недавних поисков — TLB.
MMU также обеспечивает защиту. У каждой страницы есть флаги чтения, записи и исполнения, а их нарушение вызывает ошибку, которую перехватывает ядро, — это и есть segmentation fault. Бит NX, запрещающий исполнение страниц с данными, — вклад MMU в защиту от переполнения буфера. В простых микроконтроллерах MMU нет вовсе, поэтому операционные системы на них работают без защиты процессов.