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

NOMBRE

       mlockall - desactiva la paginación para el proceso invocador

SINOPSIS

       #include <sys/mman.h>

       int mlockall(int flags);

DESCRIPCIÓN

       mlockall  desactiva  la  paginación  para  todas  las  páginas asociadas en el espacio de direcciones del
       proceso que hace la llamada. Esto incluye las páginas del código, de los datos y del  segmento  de  pila,
       así  como  las  bibliotecas  compartidas,  datos  de  núcleo  en espacio de usuario, memoria compartida y
       ficheros asociados a memoria. Se garantiza que todas las páginas  asociadas  estarán  en  RAM  cuando  la
       llamada  al  sistema  mlockall  regrese  con  éxito, y se garantiza que permanecerán en RAM hasta que las
       páginas se desbloqueen de nuevo mediante munlock o munlockall o hasta que el proceso  termine  o  empiece
       otro  programa debido a la llamada exec.  Los procesos hijos no heredan bloqueos de página a través de un
       fork.

       El bloqueo de memoria tiene dos aplicaciones principales: algoritmos de tiempo real  y  procesamiento  de
       datos  de  alta  seguridad.  Las  aplicaciones en tiempo real requieren tiempos deterministas, y, como la
       planificación, la paginación es una de las principales causas de retrasos inesperados en la ejecución  de
       programas. Las aplicaciones de tiempo real normalmente también cambiarán a un planificador de tiempo real
       con  sched_setscheduler.   Los programas de seguridad criptográficos a menudo manejan bytes críticos como
       contraseñas o claves secretas como estructuras de datos. Como resultado de  la  paginación,  estos  datos
       secretos  pueden transferirse a un medio de almacenamiento permanente como resultado del trasiego (swap),
       donde podrían ser accesibles al enemigo bastante tiempo después de que el programa de  seguridad  hubiera
       terminado  y  borrado  los  datos  secretos  de  la  RAM. Para aplicaciones de seguridad, sólo tienen que
       bloquearse partes pequeñas de la memoria, para lo cual se dispone de mlock.

       El parámetro flags puede construirse aplicando el operador  lógico  de  bits  O  (OR)  a  las  siguientes
       constantes:

       MCL_CURRENT Bloquea  todas  las  páginas que están asociadas actualmente en el espacio de direcciones del
                   proceso.

       MCL_FUTURE  Bloquea todas las páginas que en el futuro se asociarán en  el  espacio  de  direcciones  del
                   proceso.  Éstas  podrían  ser,  por  ejemplo, páginas nuevas requeridas por una pila y montón
                   crecientes así como nuevos ficheros asociados a memoria o regiones de memoria compartida.

       Si se ha especifiado MCL_FUTURE y el número de páginas  bloqueadas  excede  el  límite  superior  de  las
       páginas  bloqueadas  permitidas,  entonces  la  llamada  al  sistema que haya causado la nueva asociación
       fallará con ENOMEM.  Si estas nuevas páginas han sido asociadas por la pila creciente, entonces el núcleo
       denegará la expansión de la pila y mandará una señal SIGSEGV.

       Los procesos en tiempo real deberían reservar bastantes páginas bloqueadas antes de entrar en la  sección
       crítica  de  tiempo, de forma que ninguna llamada a función pueda provocar un fallo de página. Esto puede
       lograrse llamando a una función que tenga una variable automática suficientemente grande y que escriba en
       la memoria ocupada por este vector grande, para tocar estas  páginas  de  la  pila.  De  esta  forma,  se
       asociarán bastantes páginas para la pila y se pueden bloquear en la RAM. Las escrituras falsas asegurarán
       que ni siquiera ocurran fallos de página de copia-en-escritura en la sección crítica.

       Los  bloqueos  de  memoria  no  se  apilan;  esto  es, las páginas que hayan sido bloqueadas varias veces
       mediante llamadas a mlockall o a mlock se desbloquearán con una simple llamada a munlockall.  Las páginas
       que estén asociadas a varias localizaciones o por varios procesos permanecen bloqueadas en  RAM  mientras
       que estén bloqueadas al menos en una localización o al menos por un proceso.

       En  sistemas  POSIX  en  los  cuales estén disponibles mlockall y munlockall, se define _POSIX_MEMLOCK en
       <unistd.h>.

VALOR DEVUELTO

       En caso de éxito, mlockall devuelve cero. En caso de error, se devuelve -1 y se pone un  valor  apropiado
       en errno.

ERRORES

       ENOMEM El proceso intentó excederse en el número máximo de páginas bloqueadas permitido.

       EPERM  El  proceso  que  hace  la  llamada no tiene los privilegios apropiados. Sólo los procesos de root
              tienen permiso para bloquear páginas.

       EINVAL Se han especificado flags desconocidos.

CONFORME A

       POSIX.1b, SVr4.   SVr4 documenta un código de error adicional, EAGAIN.

VÉASE TAMBIÉN

       munlockall(2), mlock(2), munlock(2)

Linux 1.3.43                                    26 noviembre 1995                                    MLOCKALL(2)