подключение SSL к поддомену [закрыто]

mmap отлично, если у вас есть несколько процессов, которые получают доступ к данным в режиме только для чтения из того же файла, что является обычным явлением в типах серверных систем, которые я пишу. mmap позволяет всем этим процессам совместно использовать одни и те же страницы физической памяти, сохраняя большую память.

mmap также позволяет операционной системе оптимизировать операции подкачки. Например, рассмотрите две программы; программа A, которая считывает файл 1 МБ в буфер, создавая с помощью malloc, и программу B, которая копирует 1 МБ-файл в память. Если операционная система должна поменять часть памяти A, она должна записать содержимое буфера для свопинга, прежде чем он сможет повторно использовать память. В случае B любые немодифицированные страницы mmap'd могут быть повторно использованы сразу, потому что ОС знает, как их восстановить из существующего файла, из которого они были mmap'd. (ОС может определить, какие страницы не модифицированы, изначально отмечая записываемые mmap'd-страницы как только для чтения и ломая seg-ошибки, аналогичные стратегии Copy on Write).

mmap также полезен для взаимодействия между процессами. Вы можете mmap файл как чтение / запись в процессах, которые должны связываться, а затем использовать примитивы sychronization в области mmap'd (для этого используется флаг MAP_HASSEMAPHORE).

Одно место mmap может быть неудобно, если вам нужно работать с очень большими файлами на 32-битной машине. Это связано с тем, что mmap должен найти непрерывный блок адресов в адресном пространстве вашего процесса, который достаточно велик, чтобы соответствовать всему диапазону отображаемого файла. Это может стать проблемой, если ваше адресное пространство будет фрагментировано, где у вас может быть свободное место на 2 ГБ адресного пространства, но ни один отдельный диапазон его не может соответствовать отображению файла 1 ГБ. В этом случае вам может понадобиться сопоставить файл меньшими фрагментами, чем вы хотели бы сделать его пригодным.

Еще одна потенциальная неловкость с mmap в качестве замены для чтения / записи заключается в том, что вы должны начать свое отображение на смещения размера страницы. Если вы просто хотите получить некоторые данные со смещением X, вам нужно будет исправить это смещение, чтобы оно совместимо с mmap.

И, наконец, чтение / запись - это единственный способ работы с некоторыми типами файлов. mmap не может использоваться на таких вещах, как трубы и ttys.

24
задан Digital site 14 September 2012 в 11:37
поделиться