bionic (2) mlock.2.gz

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)