«Современные архитектуры» имеют MMU , но небольшие контроллеры, например, Arduino , не имеют.Если вы посмотрите на исходные коды ядра Linux, у него есть реализации для архитектур MMU и no-MMU .
Существует код, специально предназначенный для настройки таблиц страниц и устранения ошибок страниц, возникающих изстраницы находятся в области подкачки.Этот код нельзя выгружать, и IIRC Linux в любом случае никогда не выгружается, поэтому его собственная память всегда остается в таблицах страниц, что позволяет пространству ядра работать и в виртуальной памяти.