Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Mmap15 мая 2011POSIX-совместимый системный вызов Unix, позволяющий выполнить отображение файла или устройства на память. Является методом ввода/вывода через отображение файла на память и естественным образом реализует выделение страниц по запросу, поскольку изначально содержимое файла не читается с диска и не использует физическую память вообще. Реальное считывание с диска производится в «ленивом» режиме, то есть при осуществлении доступа к определённому месту. В Linux, Mac OS X и BSD mmap может создавать несколько типов отображений. Анонимные отображения отображения пространства виртуальной памяти процесса, а не файла в пространстве файловой системы. По этой причине анонимное отображение схоже с функцией malloc и используется в некоторых реализациях malloc для определённых размещений. Следует заметить, что анонимные отображения не являются частью стандарта POSIX, хотя и реализованы почти во всех системах. Файловые отображения позволяют отобразить файл в виртуальной памяти. Доступ к этим участкам памяти приводит к чтению файла. Если отображения распределено между процессами, запись в это пространство в одном процессе окажет воздействие на другие процессы. Если используется частное отображение, то изменения не будут видны другим процессам и не будут записаны в файл. Процесс чтения или записи в связанный файл не всегда приводит к ожидаемому результату, поскольку сегменты файла копируются в оперативную память и периодически выгружаются на диск, однако синхронизация может быть форсирована с помощью системного вызова msync. mmap файлов может значительно уменьшить нагрузку на диск для приложений, осуществляющих доступ к одному файлу. Если файл отображён в памяти, приложения могут разделять участок памяти, заключающей файл, вместо загрузки файла для каждого приложения, желающего осуществить доступ к нему. К памяти, распределённой с помощью mmap, можно осуществлять доступ из дочерних процессов. mmap можно использовать для реализации межпроцессного взаимодействия. В современных операционных системах mmap обычно предпочтительней взаимодействию через распределённую память в System V. Основное различие между распределённой памятью System V и вводом-выводом с распределением памяти состоит в том, что распределённая память System V постоянна: не будучи явно удалены, данные будут храниться в памяти и оставаться доступными до тех пор, пока система не будет отключена. Память mmap не является постоянной между запусками приложения. Просмотров: 1143
|