la compréhension pmap de sortie
J'essayais de voir la carte mémoire d'un processus sous Linux x86-64) à l'aide de pmap -x
de commande. Je suis confus en regardant la sortie de la pmap. En particulier pour les entrées de mappage des bibliothèques dynamiques. Il y a plusieurs entrées pour eux (en fait 4 pour la plupart tous d'entre eux, certains ayant 3 entrées). Voici un exemple
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
La deuxième rangée pour chaque bibliothèque a toujours une taille de 2 mo alors qu'il n'a pas de page de l'autorisation. Dans toutes les bibliothèques il semble que ses flux RSS est TOUJOURS à zéro. Deux dernières lignes ont la même taille (ce qui est la base de la taille de page) et même des autorisations (une poignée bibliothèques n'ont pas de rw mapping).
Quelqu'un a une explication pour cela? Je suis une sorte de sentiment que peut-être le mapping avec la protection en lecture seule est effectué par le loader pour lire les métadonnées de la bibliothèque tandis que la partie avec le fichier exécutable de l'autorisation en fait le code de la bibliothèque. J'ai peut-être mal.
Mais je n'ai aucune idée à ce sujet sur la ligne du milieu. Pas de permission et aucune usages? Quelqu'un a des paroles de sagesse ici?
J'ai aussi vu quelques pages rapporté que le mémoire anonyme et ne pas avoir de mode ensemble de bits. Que faire de ces représenter?
- Double Possible de /proc/$pid/cartes montre des pages sans rwx autorisations sur linux x86_64
- essayé de corriger la faute de frappe: partie avec l'exécutable de l'autorisation en fait le code de la bibliothèque ... semble que le "est" est absent, mais ne peut pas être sûr à 100%; pouvez-vous l'aider?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord , il peut être le cas présent, qu'un même processus peut utiliser plus d'une utilisation de la mémoire de l'instance. Je ne sais pas si c'est ce que vous voulez savoir. J'ai vu que , lors de l'utilisation d'un navigateur sous Linux, avec un seul onglet ouvert, et à l'aide de la commande top, il montre comme plus de 4 utilisation de la mémoire utilisation de la liste, couvrant plus de 10 mo de mémoire. Je pense que c'est ok parce que de plus le nombre de threads en cours d'exécution par le même processus.
Ce lien peut être utile, car, dans l'exemple d'utilisation elle-même, si vous les observez, la cartographie de l'-x commande afficher plus un nombre d'utilisations.
http://www.cyberciti.biz/tips/howto-find-memory-used-by-program.html
Protégé "----" les pages sont des pages de garde pour empêcher les pointeurs à partir de l'indexation entre le code et les segments de données de la bibliothèque. Ils n'existent que dans l'espace virtuel du processus et existent à cause d'une panne si un pointeur de marche après la fin du segment.
Si cela n'a pas été abordé dans une bibliothèque partagée fichier, je dirais qu'ils étaient en service comme un tampon pour l'expansion des allocations par ex. malloc ou de la croissance de la pile. Par exemple glibc demandes de grandes portions de l'espace d'adressage du noyau pour l'allocation des threads locaux arènes consomme alors lentement pour malloc avais allocations. Dans une beaucoup plus grande pmap à partir d'une JVM je suis à la recherche d'il y a quelques dizaines de ces, les uns à la suite d'un RW page ou le remplissage de l'espace entre les deux grandes RW attributions et les limites qui les séparent quart de la RW pages de l'expansion. Sur X86_64 pages de garde de ce genre peut utiliser le PROCESSEUR de la mémoire du système de protection pour attraper les mauvais pointeur déréférence.