Получают ли регулярные чтения преимущества от mmap?

Если я использую mmap для некоторого файлового дескриптора fd, будут ли регулярные вызовы read () быть «осведомленными» о том, что есть отображение памяти в файл и чтение из памяти напрямую?

Что делать, если mlock () используется после mmap (). Правильно ли утверждать, что никакое последующее чтение () в файле никогда не понадобится для доступа к диску?

One Solution collect form web for “Получают ли регулярные чтения преимущества от mmap?”

Я думаю, это зависит от того, что вы подразумеваете под «осознанием».

Поскольку системный вызов read() является запросом к ядру, чтобы скопировать содержимое файла, начиная с текущей позиции, в указанный буфер памяти программы, read() в обычном файле выполнит эту задачу так же, как или не существует одновременно сопоставление памяти файла. Нет «осознания».

Теперь это файл как mmap() ed, так и read() , может быть достигнута оптимизация производительности. Например, если файл сначала read() , то разделы файла, которые были прочитаны, вероятно, уже находятся в кеше страницы, и впоследствии доступ к карте памяти не будет иметь к ним доступ снова с диска. Или, наоборот, если есть отображение памяти, которое уже было выгружено, последующее read() больше не нужно будет возвращать на диск. Таким образом, в этом смысле вы можете в некотором смысле рассмотреть mmap() и read() «осознавать» друг друга.

  • Поведение памяти mmap'd на давление памяти
  • proc / sys / vm / flush_mmap_pages отсутствует в ядре 3.9, как его получить?
  • Как найти часть кода, который создает анонимную приватную память
  • Режим объекта Grsecurity x
  • mmap / dev / random
  • Та же программа, которая использует «mmap», ведет себя по-разному на разных машинах
  • Если я mmap файл из tmpfs, будет ли он удвоить использование памяти?
  • Как работает mmap'ing / dev / mem, несмотря на то, что он находится в непривилегированном режиме?
  • Использование общей памяти через tmpfs и NUMA на x86_64 / Linux
  • Linux и Unix - лучшая ОС в мире.