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