mmap
mmap – wywołanie systemowe w systemach uniksowych i uniksopodobnych, nakazujące systemowi operacyjnemu odwzorowanie danej części wybranego pliku w przestrzeni adresowej procesu. Operacja ta powoduje, że do obszaru pliku można odnosić się jak do zwykłej tablicy bajtów w pamięci, eliminując potrzebę korzystania z dodatkowych wywołań systemowych typu read lub write. Z tego powodu często używa się tej operacji do przyspieszenia działania na dużych plikach.
Prototyp funkcji w języku C ma następującą postać:
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
Znaczenie poszczególnych parametrów:
start
– określa adres, w którym chcemy widzieć odwzorowanie pliku. Nie jest wymagane i nie zawsze jest przestrzegane przez system operacyjny.length
– liczba bajtów jaką chcemy odwzorować w pamięci.prot
– flagi określające uprawnienia jakie chcemy nadać obszarowi pamięci, np. tylko do odczytu, etc.flags
– dodatkowe flagi określające sposób działania wywołaniammap
.fd
– deskryptor pliku, który chcemy odwzorować w pamięci.offset
– liczba określająca od którego miejsca w pliku chcemy rozpocząć odwzorowywanie.
W celu użycia funkcji mmap
należy włączyć plik nagłówkowy <sys/mman.h>
.
W celu zlikwidowania odwzorowania należy użyć wywołania munmap.