Ce qu'il me pose probleme c'est que la mémoire est sensé etre contiguë pour le developpeur.
Tout dépend de la mémoire dont on cause. Dans votre cas, il s'agit de l'adressage d'un processus (Process address space), il est virtuel et indépendant de celui des autres processus.
La structure mm_struct vous donnent en donne les détails, vu du noyau.
On y retrouve certaines des partitions ELF que vous mentionnez dans le sujet,
start_code
start_data
start_brk
start_stack
arg_start
Le schémas que vous donnez est trop simple, par exemple il existera une pile allouée par thread, des segments (region) alloués selon les besoins ( VMA, bibliothèques, mapping divers ) ...
Or à un moment le tas va arriver vers la mémoire de la pile et il va y avoir un saut de 8Mo (taille de la pile) pour pouvoir recréer de la mémoire dans le tas
Gardez à l'esprit que ce schéma est une représentation virtuelle de la mémoire vu d' un unique processus. Il ne correspond en rien ce qui se passe dans la mémoire physique et n'est pas partagé avec les autres processus. Il est plus probable que vous allez choper un Out of Memory avant que les deux pointeurs ne se rejoignent.
[^] # Re: derniere chose
Posté par David Marec . En réponse au message question sur la structure du code que fait le compilateur (.text, .bss, .heap ...). Évalué à 4.
Tout dépend de la mémoire dont on cause. Dans votre cas, il s'agit de l'adressage d'un processus (Process address space), il est virtuel et indépendant de celui des autres processus.
La structure mm_struct vous donnent en donne les détails, vu du noyau.
On y retrouve certaines des partitions ELF que vous mentionnez dans le sujet,
Le schémas que vous donnez est trop simple, par exemple il existera une pile allouée par thread, des segments (region) alloués selon les besoins ( VMA, bibliothèques, mapping divers ) ...
Gardez à l'esprit que ce schéma est une représentation virtuelle de la mémoire vu d' un unique processus. Il ne correspond en rien ce qui se passe dans la mémoire physique et n'est pas partagé avec les autres processus. Il est plus probable que vous allez choper un Out of Memory avant que les deux pointeurs ne se rejoignent.