[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Параметры mmap(2)

addr Если не  установлен флаг  MAP_FIXED, ненулевой  виртуальный адрес
     addr используется  для указания  рекомендуемого адреса  (pa),  по
     которому  будет  размещено  отображение.  Каким  образом  система
     располагает pa  вблизи от  addr, зависит  от реализации.  Нулевое
     значение addr дает системе полную свободу в выборе pa.

len  Длина отображаемого  участка в байтах. Иными словами, отображение
     будет размещено  в диапазоне  [pa,  pa+len-1].  mmap(2)  выделяет
     память  страницами.   То  есть,  при  запросе  отображения  части
     страницы, будет  отображена вся  страница, покрывающая  указанные
     байты.

prot Параметр  prot   определяет  права  доступа  на  чтение,  запись,
     исполнение (или  их комбинаций  с  помощью  побитового  ИЛИ)  для
     отображаемых   страниц.   Символьные   константы   определены   в
     <sys/mman.h>:

     PROT_READ  страницу можно читать

     PROT_WRITE страницу можно изменять

     PROT_EXEC  страницу можно  исполнять. Динамическая  сборка - одно
                из применений  отображения памяти  с флагом PROT_EXEC.
                При  запуске   программы,  собранной   с   динамически
                разделяемыми   библиотеками,    загрузчик   отображает
                разделяемые библиотеки в память и исполняет.

     mprotect(2)    можно использовать  для изменения  защиты  доступа
                отображаемой памяти

flags     Передает  информацию   об  обработке   страниц.   Символьные
     константы для этого параметра определены в <sys/mman.h>:

     MAP_SHARED Если определен  этот флаг, обращения на запись вызовут
                изменение отображенного  объекта. Иными  словами, если
                процесс   изменяет   файл,   отображенный   с   флагом
                MAP_SHARED, эти  изменения  будут  доступны  остальным
                процессам.

     MAP_PRIVATE    При  указании   этого  флага,   первое   изменение
                отображенного объекта вызовет создание отдельной копии
                объекта и  переназначит запись  в эту копию. До первой
                операции записи эта копия не создается. Следовательно,
                процессы, отобразившие  объект  с  флагом  MAP_SHARED,
                могут делать  в нем изменения, а процесс, отобразивший
                объект с флагом MAP_PRIVATE, будет иметь доступ к этим
                изменениям до своей первой записи в данный объект. Все
                изменения объекта, отображенного с флагом MAP_PRIVATE,
                производятся не  над самим объектом, а над его копией.
                Например,  если   процесс  отобразил   файл  с  флагом
                MAP_PRIVATE и  изменил его, то изменения будут сделаны
                в личной копии. Даже если процесс вызовет msync(2) или
                munmap(2),  на   дисковом  файле  изменения  не  будут
                сделаны.

     MAP_FIXED  Сообщает системе,  что значение  pa должно  быть равно
                addr  в   точности.  Использование   этого  флага   не
                рекомендуется, так  как  может  повлечь  неэффективное
                распределение ресурсов.  Когда  этот  флаг  не  задан,
                система сама  выбирает оптимальный  путь сопоставления
                pa и addr.

     Либо MAP_SHARED,  либо MAP_PRIVATE  - но  не оба  -  должны  быть
     указаны. Тип отображения сохраняется при fork(2).

fd   Файловый дескриптор отображаемого файла/устройства.

off  Отступ от  начала файла, с которого начинается отображение. Если,
     к примеру,  off равно  нулю, а len 120, то отображена будет часть
     файла с  начала до  120-го байта. Если off равно 10, а len 20, то
     отобразятся байты с 10-го по 30-й.
                          ПАРАМЕТРЫ mmap(2)


addr      адрес отображения. Если 0, система выбирает его сама



len       длина отображения



          PROT_READ          страницу можно читать

prot      PROT_WRITE         страницу можно писать

          PROT_EXEC          страницу можно исполнять



          MAP_SHARED         разделяемые изменения

flags     MAP_PRIVATE        частные изменения

          MAP_FIXED          интерпретировать addr буквально

fd        дескриптор файла



off       отображение начинается с off байтов от начала файла