Я читал об управлении памятью, защите, пейджинге и т. д., и хотя я понимаю суть виртуальной памяти, есть две вещи, о которых я все еще немного не уверен.
Теперь, когда запускается процесс пользовательского пространства, ядро настраивает для него память и таблицу подкачки (насколько я понимаю). Теперь после запуска программы, как именно работает доступ к памяти? Каждое ли отдельное действие, которое требует чтения/записи памяти (по сути, почти все), должно проходить через ядро для преобразования адресов, или процесс может «напрямую» обращаться к памяти. Имеется в виду компонент (в основном mmu), который выполняет перевод «на лету» без необходимости переключения на ядро. для перевода.
tl;dr есть ли физический компонент, который выполняет сопоставление виртуальных-> физических адресов, или все это обрабатывается ядром.
p.s. если это имеет значение, я говорю о процессоре x86 и Linux.