Index général des pages de man   Index Section man 2   Table des Matières de mlock   Imprime la page de man mlock en mode Texte   Recherche dans les pages de man   Page de man en français      Fonctions du système (section 2)

mlock

 
  

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


Table des matières


Haut de page

© 1996-2000 Adaptation française "Christophe Blaess"