В чем разница между записью в файл и отображаемой памятью?

У меня есть следующие вопросы, связанные с обработкой файлов и их отображением ( mmap ):

  1. Мы знаем, что если мы создадим файл и запишем в этот файл, то в любом случае мы записываем в память. Тогда зачем отображать этот файл в память с помощью mmap , а затем писать?
  2. Если это из-за защиты, которую мы достигаем с помощью mmap - PROT_NONE , PROT_READ , PROT_WRITE , то такой же уровень защиты может быть достигнут с использованием файлов. O_RDONLY , O_RDWR и т. Д. Тогда почему mmap ?
  3. Есть ли какие-то особые преимущества при отображении файлов в памяти и последующем ее использовании? Вместо того, чтобы просто создать файл и записать в него?
  4. Наконец, предположим, что мы mmap файл в память, если мы записываем в эту ячейку памяти, возвращенную mmap, будет ли он одновременно записывать в этот файл как хорошо?

Правка: совместное использование файлов между потоками

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

Но мы знаем, что использование файла означает, что он наверняка находится в основной памяти, тогда зачем снова нужно отображать потоки?

19
задан halfer 22 October 2019 в 21:31
поделиться