ВУЗ:
Составители:
8
MAP_SHARED Означает, что данные, измененные в памяти будут
немедленно записаны в файл на диске. Такое отображение
называется разделяемым;
MAP_FIXED Указывает системе на использование точного адреса,
передаваемого в ADDRESS и возвращать ошибку, если
выполнить это невозможно;
MAP_ANONYMOUS
MAP_ANON
Создает анонимное отображение, не соединенное ни с каким
файлом. Анонимные отображения используются на
некоторых системах для расширения размера области памяти,
используемой для динамических переменных, могут
использоваться также для передачи данных между
приложениями без создания файла. В Linux функция
выделения динамической памяти автоматически использует
mmap.
Флаги MAP_PRIVATE и MAP_SHARED не могут использоваться
одновременно.
Функция возвращает адрес буфера отображения в случае успешного
выполнения и –1 в случае ошибки. Переменная errno может принимать следующие
значения:
EINVAL Либо ADDRESS не может быть использован либо заданы
недопустимые значения FLAGS;
EACCES Файл FILEDES не был открыт для доступа, заданного в PROTECT;
ENOMEM Недостаточно памяти для выполнения операции или процесс имеет
недостаточно памяти;
ENODEV Файл имеет тип, не поддерживающий отображения;
ENOEXEC Файл расположен в файловой системе, не поддерживающей
отображения.
int munmap (void *ADDR, size_t LENGTH)
Функция удаляет все отображения, расположенные в участках памяти от ADDR
до (ADDR+LENGTH). Аргумент LENGTH должен в точности соответствовать длине
буфера отображения.
Безопасным является удаление нескольких отображений одной командой,
включение в область памяти, не являющейся отображением или удаление только части
отображения. Тем не менее, удалены будут только целые страницы памяти.
В случае успешного выполнения функция возвращает 0, а в случае ошибки
возвращается –1. Возможен единственный код ошибки:
EINVAL Заданная область памяти не является отображением или не
выровнена на страницу.
int msync (void *ADDRESS, size_t LENGTH, int FLAGS)
При использовании разделяемых отображений, ядро операционной системы
может записать в файл в любой момент. Чтобы удостоверится в том, что данные в
памяти соответствуют данным на диске, используется эта функция. Она работает с
областью памяти, задаваемой адресами ADDRESS и (ADDRESS+LENGTH). Функция
может использоваться с одиночным отображением или с множественными
отображениями. Участок памяти, не относящийся к отображению в этом случае задать
нельзя.
Аргумент FLAGS может принимать следующие значения:
MS_SYNC Говорит о необходимости удостовериться в том, что данные в
памяти соответствуют данным на диске;
MS_ASYNC Говорит о необходимости начать процесс синхронизации, однако не
MAP_SHARED Означает, что данные, измененные в памяти будут
немедленно записаны в файл на диске. Такое отображение
называется разделяемым;
MAP_FIXED Указывает системе на использование точного адреса,
передаваемого в ADDRESS и возвращать ошибку, если
выполнить это невозможно;
MAP_ANONYMOUS Создает анонимное отображение, не соединенное ни с каким
MAP_ANON файлом. Анонимные отображения используются на
некоторых системах для расширения размера области памяти,
используемой для динамических переменных, могут
использоваться также для передачи данных между
приложениями без создания файла. В Linux функция
выделения динамической памяти автоматически использует
mmap.
Флаги MAP_PRIVATE и MAP_SHARED не могут использоваться
одновременно.
Функция возвращает адрес буфера отображения в случае успешного
выполнения и –1 в случае ошибки. Переменная errno может принимать следующие
значения:
EINVAL Либо ADDRESS не может быть использован либо заданы
недопустимые значения FLAGS;
EACCES Файл FILEDES не был открыт для доступа, заданного в PROTECT;
ENOMEM Недостаточно памяти для выполнения операции или процесс имеет
недостаточно памяти;
ENODEV Файл имеет тип, не поддерживающий отображения;
ENOEXEC Файл расположен в файловой системе, не поддерживающей
отображения.
int munmap (void *ADDR, size_t LENGTH)
Функция удаляет все отображения, расположенные в участках памяти от ADDR
до (ADDR+LENGTH). Аргумент LENGTH должен в точности соответствовать длине
буфера отображения.
Безопасным является удаление нескольких отображений одной командой,
включение в область памяти, не являющейся отображением или удаление только части
отображения. Тем не менее, удалены будут только целые страницы памяти.
В случае успешного выполнения функция возвращает 0, а в случае ошибки
возвращается –1. Возможен единственный код ошибки:
EINVAL Заданная область памяти не является отображением или не
выровнена на страницу.
int msync (void *ADDRESS, size_t LENGTH, int FLAGS)
При использовании разделяемых отображений, ядро операционной системы
может записать в файл в любой момент. Чтобы удостоверится в том, что данные в
памяти соответствуют данным на диске, используется эта функция. Она работает с
областью памяти, задаваемой адресами ADDRESS и (ADDRESS+LENGTH). Функция
может использоваться с одиночным отображением или с множественными
отображениями. Участок памяти, не относящийся к отображению в этом случае задать
нельзя.
Аргумент FLAGS может принимать следующие значения:
MS_SYNC Говорит о необходимости удостовериться в том, что данные в
памяти соответствуют данным на диске;
MS_ASYNC Говорит о необходимости начать процесс синхронизации, однако не
8
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »
