Самьюэл Алекс
Шрифт:
Флаг
5.2.4. Отладка семафоров
С помощью команды
5.3. Отображение файлов в памяти
Благодаря механизму отображаемой памяти процессы получают возможность общаться друг с другом посредством совместно используемого файла. Схематически это можно представить как совместный доступ к именованному сегменту памяти, хотя технически оба механизма реализованы по-разному.
При отображении файла в памяти формируется связь между файлом и памятью процесса. ОС Linux разбивает файл на страничные блоки и копирует их в страницы виртуальной памяти, чтобы они стали доступны в адресном пространстве процесса. Таким образом, процесс сможет обращаться к содержимому файла как к обычной памяти. При записи данных в соответствующую область памяти содержимое файла будет меняться. Это ускоряет доступ к файлам.
Отображаемую память можно представить как буфер, в который загружается все содержимое файла. Если данные, находящиеся в буфере, модифицируются, они записываются обратно в файл. Операции чтения и записи ОС Linux обрабатывает самостоятельно.
Файлы, отображаемые в памяти, можно использовать не только для организации взаимодействия процессов. О других применениях таких файлов пойдет речь в разделе 5.3.5. "Другие применения функции mmap".
5.3.1. Отображение в памяти обычного файла
Для отображения обычного файла в памяти процесса предназначена функция
Ниже перечислены дополнительные флаги, задаваемые в четвертом аргументе.
■
■
■
При успешном завершении функция возвращает указатель на начало области памяти. В противном случае возвращается флаг
По окончании работы с отображаемым файлом его необходимо освободить с помощью функции