MLOCK(2) Manuel du programmeur Linux MLOCK(2)
NOM
mlock - Désactiver la pagination pour certaines parties de
la mémoire.
SYNOPSIS
#include <sys/mman.h>
int mlock(const void *addr, size_t len);
DESCRIPTION
mlock désactive la pagination (paging) pour la portion de
mémoire débutant à l'adresse addr avec une longueur de len
octets. Quand l'appel système mlock réussit, on a
l'assurance que toutes les pages contenant une partie de
la zone mémoire spécifiée résident en mémoire vive (RAM)
et y resteront jusqu'à un déverrouillage par la fonction
munlock ou munlockall, ou encore jusqu'à ce que le proces
sus se termine ou démarre un programme avec exec.
Les processus fils n'héritent pas du verrouillage des
pages à travers un fork.
Il y a deux domaines principaux d'applications au ver
rouillage de pages : les algorithmes en temps réel, et le
traitement de données confidentielles. Les applications
temps réel réclament un comportement temporel détermin
iste, et la pagination est, avec l'ordonnancement, une
cause majeure de délais imprévus. Ces algorithmes bascu
lent habituellement sur un comportement d'ordonnancement
temps réel avec sched_setscheduler.
Les logiciels de cryptographie manipulent souvent quelques
octets hautement confidentiels, comme des mots de passe ou
des clés privées. A cause de la pagination ces données
secrètes risquent d'être transférées sur un support
physique où elles pourraient être lues par un ennemi
longtemps après que le logiciel se soit terminé.
Il n'y a pas d'empilement des verrouillages mémoire, ce
qui signifie qu'une page verrouillée plusieurs fois par
mlock ou mlockall sera libérée en un seul appel à munlock
pour la zone mémoire correspondante ou par un appel à
munlockall.
Les pages qui sont verrouillées par plusieurs zones, ou
par plusieurs processus restent vérrouillées en mémoire
vive tant qu'il y a au moins un processus ou une zone qui
les verrouille.
Sur les systemes POSIX où mlock et munlock sont
disponibles, la constante symbolique _POSIX_MEMLOCK_RANGE
est définie dans <unistd.h> et la valeur symbolique PAGE
SIZE de <limits.h> indique le nombre d'octets par page.
Linux 19 Juillet 1997 1
MLOCK(2) Manuel du programmeur Linux MLOCK(2)
VALEUR RENVOYÉE
mlock renvoie 0 si il réussit, ou -1 s'il échoue, auquel
cas errno contient le code d'erreur.
ERREURS
ENOMEM Une partie des adresses incluses dans la zone
désirée ne correspond pas à une page de l'espace
d'adressage accessible, ou le processus a essayé
de dépasser le nombre maximal de pages ver
rouillées.
EPERM L'appelant n'a pas les privilèges appropriés, seul
le Super-User peut verrouiller des pages.
EINVAL len n'est pas un nombre positif.
CONFORMITÉ
POSIX.1b, SVr4. SVr4 documente un code d'erreur EAGAIN
supplémentaire.
VOIR AUSSI
munlock(2), mlockall(2), munlockall(2).
TRADUCTION
Christophe Blaess, 1997.
Linux 19 Juillet 1997 2