Provided by: manpages-es_1.55-10_all bug

NOMBRE

       mlock - desactiva la paginación para algunas zonas de memoria

SINOPSIS

       #include <sys/mman.h>

       int mlock(const void *addr, size_t len);

DESCRIPCIÓN

       mlock  desactiva  la  paginación  para la memoria en el grupo de direcciones que comienza en la dirección
       addr con longitud len bytes. Se garantiza que todas las páginas que contienen algunas de esas direcciones
       estarán residentes en RAM cuando la llamada al sistema mlock termine sin  error  y  permanecerán  en  RAM
       hasta  que  dichas  páginas  sean  desbloquedadas  con  munlock  o munlockall, hasta que las páginas sean
       desalojadas vía munmap, o hasta que termine el proceso o comience otro programa con exec.   Los  procesos
       hijos creados mediante fork no heredan los bloqueos de páginas.

       El  bloqueo  de  memoria  tiene  dos aplicaciones fundamentales: algoritmos en tiempo real y procesado de
       datos de alta seguridad. Las aplicaciones en tiempo real requieren una temporización determinista,  y  la
       paginación  es  una de las causas principales de retardos inesperados en la ejecución de programas, junto
       con la planificación (scheduling). Las aplicaciones en tiempo real suelen conmutar a un  planificador  en
       tiempo  real  con  sched_setscheduler.  El software de seguridad criptográfico a menudo trabaja con bytes
       críticos tales como contraseñas o claves secretas. Como resultado de la paginación, estos secretos pueden
       ser transferidos a un medio de almacenamiento de intercambio persistente, donde podría ser leído  por  el
       enemigo mucho después de que el programa de seguridad haya borrado los secretos de la RAM y terminado.

       Los  bloqueos  de  memoria  no  son  acumulativos,  es decir, si una página ha sido bloqueda varias veces
       mediante llamadas a mlock o mlockall será desbloqueada con una simple llamada a  munlock  para  el  rango
       correspondiente  o  con  munlockall.   Las  páginas  que son asociadas a varias zonas o a varios procesos
       permanecen bloqueadas en RAM mientras lo estén por alguna zona o proceso.

       En los sistemas POSIX con mlock y munlock disponibles, se define _POSIX_MEMLOCK_RANGE en <unistd.h> y  el
       valor de PAGESIZE de <limits.h> indica el número de bytes por página.

OBSERVACIONES

       Con  la  llamada  al  sistema  de  Linux, addr se redondea hacia abajo automáticamente hacia el límite de
       página más cercano.  Sin embargo, POSIX 1003.1-2001 permite una implementación que requiere que addr esté
       en situado un límite de página, por lo que las aplicaciones deberían asegurar este requisito.

VALOR DEVUELTO

       En caso de éxito, mlock devuelve cero. Si hay error, se devuelve -1, errno se activa  convenientemente  y
       no se realiza ningún cambio en ningún bloqueo en el espacio de direcciones del proceso.

ERRORES

       ENOMEM Alguna  parte  del  rango  de  direcciones  no  corresponde  a  páginas asociadas en el espacio de
              direcciones del proceso o el proceso intentó  exceder  el  número  máximo  de  páginas  bloqueadas
              permitido.

       EPERM  El  proceso  invocador no tiene los privilegios necesarios. Sólo se permite bloquear páginas a los
              procesos del superusuario.

       EINVAL len no era un número positivo.

CONFORME A

       POSIX.1b, SVr4.  SVr4 añade un código de error adicional (EAGAIN).

VÉASE TAMBIÉN

       mlockall(2), munlock(2), munlockall(2), munmap(2), setrlimit(2)

Linux 1.3.43                                    26 noviembre 1995                                       MLOCK(2)