Что такое виртуальная память? Где физически код, стек, куча?
Суть
Каждый процесс видит собственное виртуальное адресное пространство — непрерывный диапазон адресов, не связанный с физической RAM напрямую. Трансляцию виртуальных адресов в физические делает MMU по таблицам страниц, которые ведёт ядро (XNU). Страница на arm64 iOS — 16 КБ.
Зачем: изоляция процессов (чужую память не прочитать), защита (страницы кода read-only + execute, данные — no-execute), ленивое выделение (адрес «зарезервирован», физическая память даётся при первом касании) и разделение одной физической копии библиотек между процессами.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep