mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
hola ... Estoy tratando de averiguar el significado del código anterior ...?¿Qué hace mmap?
mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
hola ... Estoy tratando de averiguar el significado del código anterior ...?¿Qué hace mmap?
man mmap
te ayudarán aquí.
Crea una asignación de memoria en el espacio de direcciones virtuales del proceso. Se está creando una asignación anónima, que es más bien como usar malloc
para asignar n
bytes de memoria.
Los parámetros son:
NULL
- el núcleo elegirá una dirección para el mapeon
- longitud de la asignación (en bytes)PROT_WRITE
- páginas pueden ser escritosMAP_ANON | MAP_PRIVATE
- la asignación no está respaldada por un archivo, y las actualizaciones escritas en la asignación son privadas para el proceso-1
- el descriptor de archivo; no se utiliza debido a que la asignación no está respaldado por un archivo0
- desplazamiento dentro del archivo en el que se inicia el mapeo - de nuevo, no se utiliza, ya que la asignación no está respaldado por un archivoSe solicita una mapeo anónimo privado, escribible de n
bytes de memoria.
fork()
el niño y el padre tendrán asignaciones independientes);En este caso, se está solicitando esencialmente un bloque de n
bytes de memoria, por lo menos equivalente a malloc(n)
(aunque debe ser liberado con munmap()
en lugar de free()
). También solicita que la memoria sea escribible pero no legible, pero dicha solicitud generalmente no es compatible con el hardware subyacente.
O 'man 2 mmap'. –