Éditeurs de liens, chargeurs et exécutables

Quelle description de la relocalisation effectuée par l'éditeur de liens est correcte ?

  1. AUne fois les adresses définitives du code et des données fixées, réécrire les adresses dans les instructions et les données avec les valeurs correctes
  2. BTransférer un programme en cours d'exécution vers un autre ordinateur pour y poursuivre son exécution
  3. CÉvincer des pages vers le stockage lorsque la mémoire manque
Afficher la réponse et l'explication

Réponse : A. Une fois les adresses définitives du code et des données fixées, réécrire les adresses dans les instructions et les données avec les valeurs correctes

Le compilateur produit chaque fichier comme s'il commençait à l'adresse 0, et enregistre comme informations de relocalisation les emplacements utilisant l'adresse de fonctions d'autres fichiers ou de ses propres variables. Après avoir disposé tous les fichiers et fixé les adresses réelles, l'éditeur de liens calcule pour chaque emplacement enregistré l'adresse correcte (ou la distance au PC) et l'inscrit dans l'instruction. En édition de liens dynamique, une partie de ces réécritures est effectuée à l'exécution par l'éditeur de liens dynamique.

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

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

  1. Lors de l'édition de liens d'un programme C, l'erreur « undefined reference to `foo' » (référence non définie à foo) apparaît. Quelle est la cause la plus probable ?
  2. La même fonction globale void init(void), sans static, est définie à la fois dans a.c et b.c, puis on effectue l'édition de liens. Que se passe-t-il ?
  3. Quel est l'effet de la définition d'une fonction avec static en C (par exemple static int helper(void)) ?
  4. Que signifie l'écriture « extern int count; » en C ?
  5. Quelle affirmation concernant les fichiers au format ELF, courant sous Linux notamment, est correcte ?

Comparatifs sur ce thème