ща поправлю %)Сообщение от elf/2
представь себе такую ситуацию. приложение лежит в верхней странице и не имеет в общем случае права соваться в нижнюю память. оно имеет возможность резервировать куски памяти в его странице и обращаться к ним напрямую- тут ничего никуда перекидывать не надо. но в локальной странице особо не разбежишься- 64 сектора в лучшем случае. а достучаться до верхних страниц возможно только из нижней памяти. и тут есть три подхода.
первый. запрашивать систему на предоставление доступа к этой верхней памяти. система выделяет в нижней памяти буфер, _копирует_ туда кусок верхней памяти. приложение работает с буфером, через который происходит проекция (периодически буфер обновляется по мере изменения адресов).
второй. для операций последовательного просмотра вышеуказанный метод не очень подходит. поэтому система обязана предоставить некоторый стандартный набор функций для работы с верхней памятью, например копирование, очистка, пересылка. при этом она может использовать хоть дма, приложения это не касается.
третий. полулегальный %). в нижней памяти регистрируется библиотека или модуль, который может напрямую переключать страницы (с санкций системы, естесно) и работать с памятью. применимо для специфических функций, не реализованных системно.
так как довольно большая часть приложений не нуждается в расширенной памяти, копирование происходит не так часто как кажется