Все, что вы на карте, потенциально копируются во внутренний баран. Поэтому, если вы получаете доступ к некоторому адресу вашего prog-файла с SD-карты или что-то еще, копия данных загружается во внутренний ram. Насколько большой диапазон действительно, известен только os. Даже если вы зарезервируете место для полного файла, при необходимости будет прочитана только небольшая часть. Если процессор имеет mmu, его можно просто реализовать с ошибками страницы, что приводит к перезагрузке.
Доступ выполняется только быстрее, если вы не храните непосредственно основное физическое устройство. Таким образом, изменения будут выполняться только в ram, что быстро и будет написано позже на более медленные устройства, такие как серийная вспышка или что-то еще.
Синхронизация измененного виртуального виртуального барабана с базовым файлом может быть выполнена с помощью msync http://man7.org/linux/man-pages/man2/msync.2.html
Если вам нужна какая-то базовая информация о том, как (виртуальный) ram адресуется и как mmap сопоставляет виртуальный барабан, вы можете прочитать это: https://www.xml.com/ldd/chapter/book/ch13.html