Ответ 1
mmap
можно использовать для нескольких вещей. Во-первых, сопоставление файлов. Вместо того, чтобы выделять память с помощью malloc
и считывать файл, вы отображаете весь файл в память, не просматривая его явно. Теперь, когда вы читаете (или записываете) эту область памяти, операции действуют на файл прозрачно. Зачем вам это делать? Это позволяет вам легко обрабатывать файлы, которые больше, чем доступная память, используя механизм подкачки, предоставляемый ОС. Даже для небольших файлов mmapping уменьшает количество копий памяти.
mmap
также может использоваться для анонимного сопоставления. Это сопоставление не поддерживается файлом и в основном является запросом на кусок памяти. Если это похоже на malloc
, вы правы. Фактически, большинство реализаций malloc
будут использовать анонимный mmap
для обеспечения большой области памяти.
Другим распространенным вариантом использования является то, что несколько процессов сопоставляют один и тот же файл с общим сопоставлением для получения области разделяемой памяти. Файл не должен быть фактически записан на диск. shm_open
- это удобный способ сделать это.