Bash-Linux.com : Le SHELL pour les nuls

  Actuellement 46 lignes de commande disponibles
login as: root
root@213.186.33.18's password:
Last login: Sun Aug 1 7:47:30 2010 from 38.107.191.101
[root@bash-linux ~] # echo "Bienvenue sur Bash-Linux.com"_
 Manuel des commandes UNIX (man) Version française

Indiquez la fonction :

Man Mlock en français

MLOCK(2) Manuel du programmeur Linux MLOCK(2)
 
NOM


mlock, munlock, mlockall, munlockall - Verouiller et deverouiller la memoire.
 
SYNOPSIS


#include int mlock(const void *addr, size_t len); int munlock(const void *addr, size_t len); int mlockall(int flags); int munlockall(void);
 
DESCRIPTION


mlockall() et mlock() verrouillent respectivement tout ou partie de l'espace memoire virtuelle du processus appelant dans la RAM, evitant que cette memoire ne soit paginee dans l'espace swap. munlockall() et munlock() effectuent l'operation inverse, deverrouillant respectivement tout ou partie de l'espace memoire virtuelle du processus appelant. Ainsi, les pages se trouvant dans l'espace memoire virtuelle specifie pourront etre swappees si le gestionnaire de memoire du noyau le juge necessaire. mlock() et munlock() mlock() verrouille les pages pour la portion de memoire debutant a l'adresse addr et continuant sur len octets. Toutes les pages qui con- tiennent une partie de l'intervalle d'adresse specifie sont garanties de resider en RAM lorsque l'appel s'acheve avec succes. Il est garanti que ces pages restent en RAM jusqu'a ce qu'elles soient deverrouillees. munlock() deverrouille les pages dans la portion de memoire debutant a l'adresse addr et continuant sur len octets. Apres cet appel, toutes les pages qui contiennent une partie de l'espace memoire specifie peu- vent a nouveau etre deplacees vers l'espace swap externe par le noyau. mlockall() et munlockall() mlockall() verrouille toutes les pages situees dans l'espace d'adresse du processus appelant. Cela inclut les pages de code et de donnees, le segment de pile, les bibliotheques partagees, les donnees noyau de l'espace utilisateur, la memoire partagee et les fichiers mappes en memoire. Toutes les pages mappees sont garanties de resider en RAM lorsque l'appel s'acheve avec succes. Il est garanti que ces pages restent en RAM jusqu'a ce qu'elles soient deverrouillees. L'argument flags est contruit par un OU bit a bit de l'une ou plusieurs des con- stantes suivantes : MCL_CURRENT verrouiller toutes les pages qui sont actuellement mappees dans l'espace d'adresse du processus. MCL_FUTURE Verrouiller toutes les pages qui seront mappees plus tard dans l'espace d'adresse du processus. Cela peut etre, par exemple, de nouvelles pages rendues necessaires par l'accroissement du tas et de la pile aussi bien que pour des fichiers mappes en memoire ou des regions de memoires partagees. Si MCL_FUTURE a ete specifiee, un appel systeme ulterieur (par exem- ple : mmap(2), sbrk(2), malloc(3)), peut echouer s'il fait que le nom- bre d'octets verrouilles excede le maximum autorise (voir plus loin). Dans les memes circonstances, un accroissement de la pile peut echouer de la meme maniere : le noyau refusera l'extension de la pile et delivrera un signal SIGSEGV au processus. munlockall() deverrouille toutes les pages mappees dans l'espace d'adresse du processus appelant.
 
NOTES


Il y a deux domaines principaux d'applications au verrouillage de pages : les algorithmes en temps reel, et le traitement de donnees con- fidentielles. Les applications temps reel reclament un comportement temporel deterministe, et la pagination est, avec l'ordonnancement, une cause majeure de delais imprevus. Ces algorithmes basculent habituellement sur un ordonnancement temps reel avec sched_setsched- uler(2). Les logiciels de cryptographie manipulent souvent quelques octets hautement confidentiels, comme des mots de passe ou des cles privees. cause de la pagination, ces donnees secretes risquent d'etre transferees sur un support physique ou elles pourraient etre lues par un ennemi longtemps apres que le logiciel se soit termine. (Soyez toutefois conscient que le mode suspendu sur les portables et certains ordinateurs de bureau sauvegarde une copie de la memoire sur le disque, quelques soient les verrouillages). Les processus temps reel qui utilisent mlockall() pour s'affranchir des delais sur les fautes de pages devraient reserver suffisamment de pages de pile avant d'entrer dans la partie critique, ainsi, aucune faute de page ne serait provoquee par ces appels. Cela peut etre fait en appelant une fonction qui alloue, de maniere automatique, une grande variable de type tableau et qui ecrit dans la memoire occupee par ce tableau afin de toucher (Ndt : to touch) ces pages de pile. De cette maniere, il y aura suffisamment de pages mappees pour la pile ver- rouillee en RAM. Cette ecriture apparement inutile, permet de garantir qu'aucune faute de page (meme due au mecanisme de copie-a-l'ecriture) ne se produira dans la section critique. Les verrouillages memoire ne sont pas herites par un fils cree avec fork(2) et sont automatiquement retires (deverrouillage) lors d'un execve(2) ou lorsque le processus s'acheve. Le verrouillage memoire sur un espace d'adresse est automatiquement retire si l'espace d'adresse est demappe avec munmap(2). Il n'y a pas d'empilement des verrouillages memoire, ce qui signifie qu'une page verrouillee plusieurs fois par mlock() ou mlockall() sera liberee en un seul appel a munlock() pour la zone memoire correspon- dante ou par un appel a munlockall(). Les pages qui sont verrouillees par plusieurs zones, ou par plusieurs processus restent verrouillees en memoire vive tant qu'il y a au moins un processus ou une zone qui les verrouille.
 
NOTES LINUX


Sous Linux, mlock() et munlock() arrondissent par defaut automatique- ment a la frontiere de page la plus proche. Toutefois, POSIX.1-2001 permet a l'implementation d'imposer que addr soit alignee sur une fron- tiere de page. Les programmes portables en prendront soin. Limites et permissions Dans Linux 2.6.8 et precedents, un processus devait etre privilegie (CAP_IPC_LOCK) afin de verrouiller la memoire et la limite de ressources logicielles RLIMIT_MEMLOCK definissait une limite sur la taille de la memoire que le processus pouvait verrouiller. Depuis Linux 2.6.9, aucun limite n'existe sur la taille de memoire que le processus privilegie peut verrouiller et la limite de ressources logicielles RLIMIT_MEMLOCK definit une limite sur la taille de la memoire qu'un processus non privilegie peut verrouiller.
 
VALEUR RENVOYEE


S'ils reussissent, ces appels renvoient 0 ; s'ils echouent, ils ren- voient -1 et errno contient le code d'erreur.
 
ERREURS


ENOMEM (Linux 2.6.9 et suivants) L'appelant a une limite de ressources logicielles RLIMIT_MEMLOCK non nulle mais a essaye de ver- rouiller plus de memoire que la limite ne lui permettait. Cette limite ne s'applique pas si le processus est privilegie (CAP_IPC_LOCK). ENOMEM (Linux 2.4 et precedents) Le processus appelant a essaye de ver- ouille plus de la moitie de la RAM. EPERM (Linux 2.6.9 et suivants) Le processus appelant n'est pas privi- legie (CAP_IPC_LOCK) et sa limite des ressources logicielles RLIMIT_MEMLOCK est nulle. EPERM (Linux 2.6.8 precedents) Le processus appelant n'a pas les priv- ileges suffisants pour appeler munlockall(). Sous Linux, la capacite CAP_IPC_LOCK est necessaire. Pour mlock() et munlock() : EINVAL len est negatif. EINVAL (Pas sous Linux) addr n'est pas un multiple de la taille de page. ENOMEM Une partie des adresses incluses dans la zone desiree ne corre- spond pas a une page de l'espace d'adressage accessible du pro- cessus. Pour mlockall() : EINVAL Les flags specifies sont inconnus. Pour munlockall() : EPERM (Linux 2.6.8 et precedents) L'appelant n'est pas privilegie (CAP_IPC_LOCK).
 
BOGUES


Dans les noyaux de la serie 2.4 jusqu'au 2.4.17 y compris, un bogue faisait que l'attribut MCL_FUTURE de mlockall() n'etait pas herite a travers fork(2). Cela a ete corrige dans le noyau 2.4.18. Depuis le noyau 2.6.9, si un processus privilegie appelle mlock- all(MCL_FUTURE) et par la suite se debarrasse de ses privileges (perd la capacite CAP_IPC_LOCK en configurant, par exemple, son UID effectif a une valeur non nulle), les allocations memoires suivantes (par exem- ple, mmap(2), brk(2)) echoueront si la limite de ressources RLIMIT_MEM- LOCK est rencontree.
 
DISPONIBILITE


Sur les systemes POSIX sur lesquels mlock() et munlock() sont disponibles, _POSIX_MEMLOCK_RANGE est definie dans et le nombre d'octets par page peut etre determinee par la constante PAGESIZE (si elle est definie) de ou par un appel a sysconf(_SC_PAGE- SIZE). Sur les systemes POSIX sur lesquels mlockall() et munlockall() sont disponibles, _POSIX_MEMLOCK est definie dans a une valeur superieure a 0. (Voir aussi sysconf(3).)
 
CONFORMITE


POSIX.1-2001, SVr4.
 
VOIR AUSSI


mmap(2), shmctl(2), setrlimit(2), sysconf(3), capabilities(7)
 
TRADUCTION


Ce document est une traduction realisee par Christophe Blaess le 11 octobre 1996, mise a jour par Alain Portal le 30 mai 2006 et revisee le 14 aot 2006. L'equipe de traduction a fait le maximum pour realiser une adaptation francaise de qualite. La version anglaise la plus a jour de ce document est toujours consultable via la commande : LANG=C man 2 mlock . N'hesitez pas a signaler a l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. Linux 2.6.15 4 fevrier 2006 MLOCK(2)


 Dernières recherches
Man  en anglais Man mlock en anglaisMan  en français Man mlock en français
Man  en anglais Man standards en anglaisMan  en français Man standards en français
Man  en anglais Man clearenv en anglaisMan  en français Man clearenv en français
Man  en anglais Man catan en anglaisMan  en français Man catan en français
Man  en anglais Man tkill en anglaisMan  en français Man tkill en français
Man  en anglais Man closelog en anglaisMan  en français Man closelog en français
Man  en anglais Man getrusage en anglaisMan  en français Man getrusage en français
Man  en anglais Man send en anglaisMan  en français Man send en français
Man  en anglais Man mknod en anglaisMan  en français Man mknod en français
Man  en anglais Man execl en anglaisMan  en français Man execl en français
Man  en anglais Man pathconf en anglaisMan  en français Man pathconf en français
Man  en anglais Man logger en anglaisMan  en français Man logger en français
Man  en anglais Man inet_ntop en anglaisMan  en français Man inet_ntop en français
Man  en anglais Man strptime en anglaisMan  en français Man strptime en français
Man  en anglais Man dd en anglaisMan  en français Man dd en français

 Recherche

Dans ce moteur de recherche, vous pouvez taper directement votre besoin, en une phrase normale, humaine.
Exemple : vous cherchez comment remplacer un mot par un autre dans tous les fichiers d'un certain dossier. Vous pouvez écrire "Comment remplacer un mot par un autre dans tous les fichiers d'un dossier". Le moteur vous ramenera les résultats en fonction de leur pertinence.
Vous pouvez bien sûr ne chercher qu'un seul mot-clé, par exemple "find".
 Toutes les lignes de code
Par popularité
Par fonction
Recherche avancée
 Les logiciels SHELL/SSH
Putty
Astuces Bash
Faire du SHELL avec PHP!
 La doc officielle
Les man Linux en français
Les man Linux en anglais
 Proposer vos bash
Partagez vos lignes!
 Les requêtes
Déposer une requête
Voir/répondre à une requête
 Quelques sites interessants
Bons sites pour apprendre
 Rechercher