-1

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

Спасибо

1 ответ1

2

«Отображение в память» - это не тип файла, а способ доступа к нему. Файл того же типа может нормально считываться программой A, но отображаться в памяти программой B.

Обычно (в большинстве языков программирования) каждый доступ к файлу требует отдельного вызова:

  • вы сначала open файл (получаете "дескриптор файла"),
  • seek к желаемой позиции (при необходимости),
  • read определенное количество байтов (которое копирует их из файла в оперативную память),
  • seek , read , read , seek , write , read и так далее.

Таким образом, если вы работаете, например, с файлом базы данных, в нем задействовано немало системных вызовов, не говоря уже о всех данных, скопированных в и из. (Обычно есть удобные вызовы search +read и seek +write, например pread и pwrite в Linux, но они мало помогают.)

Тем временем отображение памяти позволяет программе обращаться к файлу, как если бы он был ОЗУ. После open файла программе требуется всего один вызов mmap для настройки области памяти, после чего она может немедленно получить доступ к содержимому файла через это "окно" - используя переменную, считывающую из файла, изменяя запись переменной в файл ,

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .