Quel est le but de MAP_ANONYMOUS drapeau de l'appel système mmap?
De la man
page,
MAP_ANONYMOUS
The mapping is not backed by any file; its contents are initialized to zero. The fd and offset arguments are ignored; however, some implementations require
fd to be -1 if MAP_ANONYMOUS (or MAP_ANON) is specified, and portable applications should ensure this. The use of MAP_ANONYMOUS in conjunction with
MAP_SHARED is only supported on Linux since kernel 2.4.
Quel est le but de l'utilisation de MAP_ANONYMOUS
? Un exemple serait la bonne. Aussi à Partir de là où la mémoire sera mappé?
Il est écrit sur man
page The use of MAP_ANONYMOUS in conjunction with MAP_SHARED is only supported on Linux since kernel 2.4.
Comment puis-je partager la mémoire mappée avec MAP_ANONYMOUS avec d'autres processus?
OriginalL'auteur JagsVG | 2015-12-02
Vous devez vous connecter pour publier un commentaire.
Anonyme mappages peut être représenté comme une mise à zéro de fichiers virtuel.
Anonyme mappages sont tout simplement grand, zéro rempli de blocs de mémoire prêt à l'emploi.
Ces mappages de résider à l'extérieur du tas, donc ne contribuent pas au segment de données de fragmentation.
MAP_ANONYMOUS + MAP_PRIVATE:
généralement, MMAP_THRESHOLD est de 128 ko.
MAP_ANONYMOUS + MAP_SHARED:
Sur Linux, il y a deux façons de créer anonyme mappages:
spécifier MAP_ANONYMOUS drapeau et passer de -1 pour fd
ouvrir /dev/zero et de transmettre ce qui a ouvert fd
(cette méthode est généralement utilisée sur des systèmes comme BSD, qui n'ont pas de MAP_ANONYMOUS drapeau)
Avantages de l'anonymat de la mappages:
- pas d'espace d'adressage virtuel de la fragmentation; après le détachement, la mémoire est immédiatement renvoyé dans le système
- ils sont modifiables en termes de répartition de la taille, des autorisations et ils peuvent également recevoir des conseils comme les mappages
- chaque allocation est distincte de la cartographie, séparé des tas global
Inconvénients de anonyme mappages:
- la taille de chaque cartographie est un multiple entier de système de la taille de la page, ce qui peut conduire à un gaspillage de l'espace d'adressage
- la création et le retour des mappages d'engager plus de généraux que de la pré-alloués tas
si un programme contenant une telle cartographie, les fourches d'un processus, l'enfant hérite de la cartographie.
Le programme suivant illustre ce un peu de l'héritage:
Sources:
Le Linux Interface De Programmation
Chapitre 49: Mappages De Mémoire,
Auteur: Michael Kerrisk
Linux Programmation Système (3e édition)
Chapitre 8: Gestion De La Mémoire,
Auteur: Robert Amour
crée toujours un seul tenant mappage des adresses virtuelles de sorte que vous pouvez l'utiliser comme un tableau. La physique sous-jacente, les pages n'ont pas à être contigus ou dans un ordre particulier, comme d'habitude avec de la mémoire virtuelle.
OriginalL'auteur nachiketkulk