Éditeurs de liens, chargeurs et exécutables

Quel est l'agencement mémoire correct d'un processus typique sous Linux notamment, des adresses basses aux adresses hautes ?

  1. ATexte → données → BSS → tas → (espace libre) → pile
  2. BPile → texte → tas → données → BSS
  3. CTas → pile → BSS → données → texte
Afficher la réponse et l'explication

Réponse : A. Texte → données → BSS → tas → (espace libre) → pile

Dans l'agencement typique, on trouve des adresses basses vers les hautes le texte (langage machine), les données initialisées et le BSS initialisé à 0, au-dessus desquels le tas croît vers les adresses hautes. La pile croît des adresses hautes vers les basses, et le vaste espace libre entre les deux accueille les bibliothèques partagées et les zones mmap. Les adresses réelles sont décalées à chaque exécution par l'ASLR pour des raisons de sécurité.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Quel est l'avantage de l'agencement qui fait croître le tas et la pile d'un processus en sens opposés, avec un vaste espace libre entre eux ?
  2. Quelle description de l'édition de liens statique est correcte ?
  3. Quel est l'avantage de l'édition de liens dynamique (bibliothèques partagées) ?
  4. Un programme utilisant l'édition de liens dynamique, copié sur un autre ordinateur, ne démarre pas. Quelle est la cause la plus probable ?
  5. Lors de l'édition de liens avec une bibliothèque statique (fichier .a), qu'est-ce que l'éditeur de liens intègre dans l'exécutable ?

Comparatifs sur ce thème