Archivos mapeados en memoria
Notas sobre mmap(), munmap() y otras llamadas al sistema relacionadas
Jesús Torres <jmtorres@ull.es>�http://jmtorres.webs.ull.es/
Reserva de memoria en C++
Variables automáticas
Reserva dinámica
mmap()
Reserva de memoria en C++
Proceso
Código (.text)
BSS
Montón
Pila
Variables automáticas
char user[5120];
Reserva dinámica de memoria
char* user = new char[5120];
Variables globales y estáticas no inicializadas o inicializadas 0
Con mmap()
char* user = mmap(nullptr, 5120,� PROT_READ | PROT_WRITE,� MAP_PRIVATE | MAP_ANONYMOUS,� -1, 0);
Memoria anónima
¿Y si le pudiéramos pedir que se respalde sobre un archivo cualquiera?
Archivos mapeados en memoria
Proceso
Código (.text)
BSS
Montón
Pila
Archivo mapeado
Región mapeada del archivo
Archivo mapeado
length
offset
mmap(nullptr, length,� PROT_READ | PROT_WRITE, MAP_SHARED,� fd, offset);
Archivos mapeados en memoria
Archivos mapeados en memoria
new de emplazamiento
Message* message = new(addr) Message;
Desmapear un región
Mmap en Windows
Acceso concurrente
Memoria compartida