MLOCK

Section: Manuel du programmeur Linux (2)
Updated: 19 Juillet 1997
Index Retour au Menu Principal

 

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 processus 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 verrouillage 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éterministe, et la pagination est, avec l'ordonnancement, une cause majeure de délais imprévus. Ces algorithmes basculent 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 verrouillées en mémoire vive tant qu'il y a au moins un processus ou une zone qui les verrouille.

Sur les systèmes POSIX où mlock et munlock sont disponibles, la constante symbolique _POSIX_MEMLOCK_RANGE est définie dans <unistd.h> et la valeur symbolique PAGESIZE de <limits.h> indique le nombre d'octets par page.  

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 verrouillé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.



 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
VOIR AUSSI
TRADUCTION


Time: 21:40:56 GMT, December 19, 2004