Mmap
From Wikipedia, the free encyclopedia
- The correct title of this article is mmap. The initial letter is shown capitalized due to technical restrictions.
In computing, mmap is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I/O.
In Linux, mmap can create several types of mappings.
Anonymous mappings are mappings of physical RAM to virtual memory. This is similar to malloc, and is used in some malloc implementations for certain allocations.
File-backed mappings are mappings of files to virtual memory. Access to those areas of memory causes the file to be changed. If the mapping is shared, changes to that area in one process will affect other processes with that area mapped in immediately; otherwise, the changes will be asynchronous, and processes will not always have consistent views of that area (the segment of the file mapped in is copied to RAM and periodically flushed to disk). mmaping files can significantly reduce memory overhead for applications accessing the same file. If the file is mmaped the applications can then share the memory area the file encompasses, instead of loading the file for each application that wants access to it.
Memory shared by mmap is kept visible across a fork.
mmap is sometimes used for Interprocess Communication (IPC). On modern operating systems mmap is typically preferred to the System V IPC Shared Memory facility.
- Digital Equipment Corporation. Shared Memory. Guide to Realtime Programming. Retrieved on August 23, 2005.
- Brian "Beej" Hall. Memory Mapped Files. Beej's Guide to Unix Interprocess Communication. Retrieved on August 23, 2005.
- Description from POSIX standard
- : map pages of memory – Linux man page on die.net
- Differences: