Qu'est-ce que Bibliothèque partagée ?

Bibliothèque chargée à l'exécution par édition de liens dynamique : .so sous Linux, .dll sous Windows. Compilée en code indépendant de la position, ses pages de code peuvent être partagées par de nombreux processus.

Nom japonais: 共有ライブラリ

« Bibliothèque partagée » apparaît dans 7 questions d'entraînement réparties sur 1 thèmes, dont Éditeurs de liens, chargeurs et exécutables.

Domaine: Éditeurs de liens, chargeurs et exécutables

S'entraîner : questions sur Bibliothèque partagée

Lorsque 100 processus utilisent la même bibliothèque partagée, quelle est l'utilisation correcte de la mémoire physique ?

  1. ALes pages de code non modifiées sont partagées en une seule copie, et chaque processus possède ses propres pages de données modifiables
  2. BLe code comme les données sont dupliqués en 100 copies, une par processus
  3. CToutes les pages, données comprises, sont partagées en une seule copie, et les valeurs sont visibles entre processus
Afficher la réponse et l'explication

Réponse : A. Les pages de code non modifiées sont partagées en une seule copie, et chaque processus possède ses propres pages de données modifiables

L'OS projette la bibliothèque partagée dans l'espace d'adressage virtuel de chaque processus, en faisant pointer les pages de code et de constantes non modifiées vers les mêmes pages physiques. Les pages de données modifiables, comme les variables, sont rendues distinctes pour chaque processus, par exemple en créant une copie au moment de l'écriture (copy-on-write). Ainsi, même pour 100 processus, la mémoire correspondant au code de la bibliothèque n'existe qu'en un exemplaire.

Lors de la création d'une bibliothèque partagée, quel est l'avantage de n'exporter que les fonctions utilisées de l'extérieur et de régler la visibilité des symboles des fonctions internes sur « hidden » ?

  1. ALes fonctions internes sont chiffrées et deviennent impossibles à analyser
  2. BLe nombre de symboles traités par l'éditeur de liens dynamique diminue, ce qui accélère le chargement, et les appels internes n'ont plus besoin de passer par la PLT
  3. CLa bibliothèque devient exécutable sur tous les OS
Afficher la réponse et l'explication

Réponse : B. Le nombre de symboles traités par l'éditeur de liens dynamique diminue, ce qui accélère le chargement, et les appels internes n'ont plus besoin de passer par la PLT

Un symbole exporté d'une bibliothèque partagée pouvant être remplacé par une définition de même nom dans un autre module, même les appels internes doivent passer par la PLT ou la GOT. En le rendant hidden, il devient invisible de l'extérieur, le nombre de symboles examinés par l'éditeur de liens dynamique diminue, et les appels internes peuvent être effectués directement en relatif au PC. Les conflits de noms avec d'autres bibliothèques sont aussi évités, et l'ABI exportée reste réduite.

« Bibliothèque partagée » dans les explications

Questions mentionnant « Bibliothèque partagée » (7)

  1. Lorsque 100 processus utilisent la même bibliothèque partagée, quelle est l'utilisation correcte de la mémoire physique ?
  2. Lors de la création d'une bibliothèque partagée, quel est l'avantage de n'exporter que les fonctions utilisées de l'extérieur et de régler la visibilité des symboles des fonctions internes sur « hidden » ?
  3. Que contient la section .text d'un exécutable ?
  4. Quel est l'avantage de l'édition de liens dynamique (bibliothèques partagées) ?
  5. Quelle description du code indépendant de la position (PIC) est correcte ?
  6. Sous Linux, dans quel cas incrémente-t-on généralement le numéro de version du soname, comme le « .1 » de libfoo.so.1 ?
  7. Que permet de savoir la commande ldd appliquée à un exécutable sous Linux ?

Comparatifs incluant ce terme

Termes associés

GOT (table globale des décalages) Éditeur de liens dynamique Copie sur écriture (copy-on-write) PLT (Procedure Linkage Table) ABI (interface binaire d'application) Édition de liens dynamique Code indépendant de la position Via Attention ASLR

Retour au glossaire