2016-08-16 1 views
-1

mentionnant Wikipedia en ce qui concerne la chargement dynamiquedifférence entre la liaison dynamique et le chargement dynamique

chargement dynamique est un mécanisme par lequel un programme d'ordinateur peut, au moment de l'exécution, charger une bibliothèque dans la mémoire, la différence de la liaison statique et Liaison dynamique, chargement dynamique permet à un programme d'ordinateur de démarrer en l'absence de ces bibliothèques.

Alors, corrigez-moi si je me trompe, mais en Le chargement dynamique, les bibliothèques sont chargées explicitement via une fonction de charge bibliothèque.

Alors que dans dynamique reliant, le chargement et reliant les bibliothèques partagées par un exécutable est reportée jusqu'à l'exécution, le OS est responsable de la copie du contenu des bibliothèques de stockage persistant à la RAM.

Pourriez-vous toujours expliquer les différences entre la liaison dynamique et le chargement dynamique en mots simples? Je suis encore confus.

Merci à l'avance!

+2

Copie possible de [différence entre chargement dynamique et liaison dynamique?] (Http://stackoverflow.com/questions/10052464/difference-between-dynamic-loading-and-dynamic-linking) – bolov

Répondre

1

Vous semblez être accroché à la terminologie. Le terme «lien dynamique» est un terme impropre quant à ce qui se passe réellement.

Linkers traitent généralement trois types de fichiers:

  1. objet Fichiers
  2. bibliothèques d'objets
  3. bibliothèques partagées

Une bibliothèque d'objets est un fichier qui contient d'autres fichiers objets qui peuvent être extrait de celui-ci, donc je vais ignorer cette alternative.

Un fichier objet contient une table de symboles globaux définis par le fichier et une table de symboles globaux référencés par le fichier. L'éditeur de liens "lie" les références dans le fichier aux définitions d'un autre fichier. Il ajoute le code et le contenu des données du fichier lié à l'exécutable (ou à la bibliothèque partagée).

Une bibliothèque partagée contient une table de symboles universels définis et des symboles universels référencés par la bibliothèque. Un éditeur de liens "lie" les références de symboles globaux dans les fichiers objet au fichier de bibliothèque partagé. A la fin de la liaison, l'exécutable (ou la bibliothèque partagée) sait quel fichier de bibliothèque partagé contient le symbole mais ne sait pas où se trouve le symbole.

Parfois, le processus de liaison de telles bibliothèques partagées est appelé "liaison dynamique". L'exécutable dispose d'une table de références globales de symboles qui ont été mappées à des bibliothèques partagées de symboles universels.

Lorsque vous exécutez l'exécutable, le chargeur de programme examine les bibliothèques exécutables avant référencées. Il faudra alors (1) charger la librairie partagée; (2) lire la table des symboles universels de la bibliothèque et chercher l'adresse des symboles référencés; (3) corriger les références à ces symboles dans l'exécutable.Parce que les bibliothèques partagées peuvent référencer d'autres bibliothèques partagées, il s'agit d'un processus récursif.

Parfois, ce processus de chargement d'un programme faisant référence à des bibliothèques partagées lors de l'exécution est appelé "liaison dynamique". (Maintenant nous avons deux définitions du même terme.)

De nombreux systèmes d'exploitation font les mêmes services système utilisés pour charger des bibliothèques partagées et trouver des adresses de symboles universels dans des bibliothèques partagées disponibles pour les applications. Au moment de l'exécution (après le chargement de l'application), l'application peut accéder dynamiquement à une fonction ou à un autre symbole universel en (1) chargeant la bibliothèque partagée et (2) en localisant le symbole souhaité. C'est ce que vous appelez "chargement dynamique".