На самом деле я не понимаю, какие файлы отображены в памяти и почему мы их используем, а также в каком разделе операционной системы они подходят. Пожалуйста, объясните на простом примере.
Спасибо
На самом деле я не понимаю, какие файлы отображены в памяти и почему мы их используем, а также в каком разделе операционной системы они подходят. Пожалуйста, объясните на простом примере.
Спасибо
«Отображение в память» - это не тип файла, а способ доступа к нему. Файл того же типа может нормально считываться программой A, но отображаться в памяти программой B.
Обычно (в большинстве языков программирования) каждый доступ к файлу требует отдельного вызова:
open
файл (получаете "дескриптор файла"),seek
к желаемой позиции (при необходимости),read
определенное количество байтов (которое копирует их из файла в оперативную память),seek
, read
, read
, seek
, write
, read
и так далее.Таким образом, если вы работаете, например, с файлом базы данных, в нем задействовано немало системных вызовов, не говоря уже о всех данных, скопированных в и из. (Обычно есть удобные вызовы search +read и seek +write, например pread
и pwrite
в Linux, но они мало помогают.)
Тем временем отображение памяти позволяет программе обращаться к файлу, как если бы он был ОЗУ. После open
файла программе требуется всего один вызов mmap
для настройки области памяти, после чего она может немедленно получить доступ к содержимому файла через это "окно" - используя переменную, считывающую из файла, изменяя запись переменной в файл ,
Это может значительно упростить код, а также ускорить загрузку и сохранение файлов, так как программа знает, что данные будут там, но ОС фактически не должна загружать их, пока они действительно не понадобятся.