Интернет магазин китайских планшетных компьютеров



Компьютеры - Mmap

15 мая 2011





POSIX-совместимый системный вызов Unix, позволяющий выполнить отображение файла или устройства на память. Является методом ввода/вывода через отображение файла на память и естественным образом реализует выделение страниц по запросу, поскольку изначально содержимое файла не читается с диска и не использует физическую память вообще. Реальное считывание с диска производится в «ленивом» режиме, то есть при осуществлении доступа к определённому месту.

В Linux, Mac OS X и BSD mmap может создавать несколько типов отображений.

Анонимные отображения — отображения пространства виртуальной памяти процесса, а не файла в пространстве файловой системы. По этой причине анонимное отображение схоже с функцией malloc и используется в некоторых реализациях malloc для определённых размещений. Следует заметить, что анонимные отображения не являются частью стандарта POSIX, хотя и реализованы почти во всех системах.

Файловые отображения позволяют отобразить файл в виртуальной памяти. Доступ к этим участкам памяти приводит к чтению файла. Если отображения распределено между процессами, запись в это пространство в одном процессе окажет воздействие на другие процессы. Если используется частное отображение, то изменения не будут видны другим процессам и не будут записаны в файл.

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

mmap файлов может значительно уменьшить нагрузку на диск для приложений, осуществляющих доступ к одному файлу. Если файл отображён в памяти, приложения могут разделять участок памяти, заключающей файл, вместо загрузки файла для каждого приложения, желающего осуществить доступ к нему.

К памяти, распределённой с помощью mmap, можно осуществлять доступ из дочерних процессов.

mmap можно использовать для реализации межпроцессного взаимодействия. В современных операционных системах mmap обычно предпочтительней взаимодействию через распределённую память в System V.

Основное различие между распределённой памятью System V и вводом-выводом с распределением памяти состоит в том, что распределённая память System V постоянна: не будучи явно удалены, данные будут храниться в памяти и оставаться доступными до тех пор, пока система не будет отключена. Память mmap не является постоянной между запусками приложения.



Просмотров: 677


<<< LIFO (информатика)