Recommandé, 2024

Choix De L'Éditeur

Différence entre l'éditeur de liens et le chargeur

Linker et Loader sont les utilitaires qui jouent un rôle majeur dans l'exécution d'un programme. Le code source d'un programme passe par le compilateur, l'assembleur, l'éditeur de liens, le chargeur dans l'ordre respectif avant son exécution. D'une part, où l' éditeur de liens reçoit les codes d'objet générés par l'assembleur et les combine pour générer le module exécutable. D'autre part, le chargeur charge ce module exécutable dans la mémoire principale pour exécution. Laissez-nous discuter de la différence entre Linker et loader à l'aide d'un tableau de comparaison.

Tableau de comparaison

Base de comparaisonLieurChargeur
De baseIl génère le module exécutable d'un programme source.Il charge le module exécutable dans la mémoire principale.
ContributionIl prend en entrée le code objet généré par un assembleur.Il faut un module exécutable généré par un éditeur de liens.
Une fonctionIl combine tous les modules d'objet d'un code source pour générer un module exécutable.Il alloue les adresses à un module exécutable de la mémoire principale pour exécution.
Type / approcheÉditeur de liens, éditeur de liens dynamique.Chargement absolu, chargement relogeable et chargement dynamique.

Définition du lieur

L'assembleur génère le code objet d'un programme source et le transmet à l'éditeur de liens. L'éditeur de liens prend ce code objet et génère le code exécutable du programme, puis le transmet au chargeur.

Le langage de haut niveau, les programmes ont des bibliothèques intégrées et des fichiers d’en-tête . Le programme source peut contenir des fonctions de bibliothèque dont la définition est stockée dans les bibliothèques intégrées. L'éditeur de liens relie ces fonctions aux bibliothèques intégrées. Au cas où les bibliothèques intégrées ne seraient pas trouvées, il en informerait le compilateur, qui générerait alors l'erreur.

Parfois, les grands programmes sont divisés en sous-programmes appelés modules . Maintenant, lorsque ces modules sont compilés et assemblés, les modules objets du programme source sont générés. L'éditeur de liens a la responsabilité de combiner / lier tous les modules d'objet pour générer un seul fichier exécutable du programme source. Nous avons deux types de linkers.

Linkage Editor : C'est un éditeur de liens qui génère le module exécutable déplaçable.

Liaison dynamique : elle diffère / reporte la liaison de certains modules externes jusqu'à ce que le module de chargement / module exécutable soit généré. Ici, la liaison est faite pendant le temps de chargement ou d'exécution.

Définition du chargeur

Comme le programme qui doit être exécuté actuellement doit résider dans la mémoire principale de l'ordinateur. Il est de la responsabilité du chargeur, programme dans un système d'exploitation, de charger le fichier / module exécutable d'un programme, généré par l'éditeur de liens, dans la mémoire principale pour exécution. Il alloue l’espace mémoire au module exécutable en mémoire principale.

Il existe trois types d'approches de chargement:

  • Chargement absolu
  • Chargement relogeable
  • Chargement dynamique au moment de l'exécution

Chargement absolu : cette approche charge le fichier exécutable d'un programme dans le même emplacement de mémoire principale à chaque fois. Mais cela présente certains inconvénients, car un programmeur doit être conscient de la stratégie d’affectation pour le chargement des modules dans la mémoire principale. Dans le cas où le programme doit être modifié avec une certaine insertion et suppression, toutes les adresses du programme doivent être modifiées.

Chargement déplaçable: dans cette approche, le compilateur ou l'assembleur ne produit pas l'adresse réelle de la mémoire principale . Il produit les adresses relatives.

Chargement dynamique à l' exécution: dans cette approche, l'adresse absolue d'un programme est générée lorsqu'une instruction d'un module exécutable est réellement exécutée. Très flexible, le module chargeable / exécutable peut être chargé dans n’importe quelle région de la mémoire principale . Le programme en cours d'exécution peut être interrompu entre les deux. Il peut être échangé sur le disque puis dans la mémoire principale à une adresse différente.

Différences clés entre l'éditeur de liens et le chargeur

  1. La principale différence entre l'éditeur de liens et le chargeur réside dans le fait que l'éditeur de liens génère le fichier exécutable d'un programme, tandis que le chargeur charge le fichier exécutable obtenu à partir de l'éditeur de liens dans la mémoire principale pour exécution .
  2. L'éditeur de liens reçoit le module objet d'un programme généré par l'assembleur. Cependant, le chargeur reçoit le module exécutable généré par l'éditeur de liens.
  3. L'éditeur de liens associe tous les modules d'objets d'un programme pour générer des modules exécutables. Il relie également la fonction de bibliothèque du module d'objets aux bibliothèques intégrées du langage de programmation de haut niveau. D'autre part, le chargeur alloue de l'espace à un module exécutable de la mémoire principale.
  4. L'éditeur de liens peut être classé en tant qu'éditeur de liens et en tant qu'éditeur de liens dynamique, tandis que le chargeur peut être classé en tant que chargeur absolu, chargeur déplaçable et chargeur d' exécution dynamique .

Conclusion:

L'éditeur de liens extrait les modules objet d'un programme de l'assembleur et les relie pour générer un module exécutable d'un programme. Le module exécutable est ensuite chargé par le chargeur dans la mémoire principale pour exécution.

Top