Dynamische Bibliotheken


Dynamische Bibliotheken weisen einige Vorteile gegenueber statischen Bibliotheken auf:
  1. Der ausfuehrbare Code einer dynamischen Bibliothek wird von System nur einmal in den Speicher geladen, so dass alle Prozesse, die diese dynamische Bibliothek benutzen, den gleichen Code benutzen. Deswegen sollte man Code, der von mehreren Programmen benutzt werden kann, in eine dynamische Bibliothek packe. Das spart viel Speicher beim gleichzeitigen Ablauf dieser Programme.
  2. Diese Einsparung am Speicher bringt natuerlich auch Geschwindigkeitsvorteile mit sich, da dadurch weniger Paging (Ein- und Auslagern von Speicherseiten) stattfinden.
  3. Da der Code einer dynamischen Bibliothek beim Linken nicht in das entsprechende Programm eingefuegt wird, sind die aus dem Linken resultierenden Programme kleiner als solche, die mit statischen Bibliotheken gelinkt werden. Das spart zum einen Speicherplatz auf der Festplatte, zum anderen fuerht es auch zu schnelleren Programmen, da das Laden von kleineren Programmen in den Arbeitsspeicher natuerlich auch weniger Zeit beansprucht.
  4. Werden Fehler in einer dynamischen Bibliothek behoben oder eben nur erforderliche Aenderungen (wie z. B. Code-Optimierungen) an ihr vorgenommen, so erfordert dies keine neue Generierung der Programme, die diese Bibliothek benutzen. Bei statischen Bibliotheken dagegen muesste man alle Programme, die diese Bibliothek nutzen, neu kompilieren und linken.
Wie ueberall gibt es auch die Kehrseite der Medaille; die Nachteile der dynamischen Bibliotheken gegenueber statischen Bibliotheken sind IMO folgende:
  1. Ein mit dynamischen Bibliotheken gelinktes Programm ist fuer sich allein nicht ablauffaehig, da es immer die zugehoerigen dynamischen Bibliotheken benoetigt. Das bedeutet, dass bei der Auslieferung dieses Programms niemals vergessen werden darf, die zugehoerigen dynamischen Bibliotheken mitzuliefern, da das Programm sonst nicht laeuft. Es sei denn, es handelt sich um dynamische Bibliotheken, die allgemein vom jeweiligen System angeboten werden.
  2. Da die von einem Programm benutzten dynamischen Bibliotheken beim Programmstart erst gesucht und geladen werden muessen, kann dies beim ersten Laden einer solchen Bibliothek zu einem zusaetzlichen Zeitaufwand fuehren, den statische Bibliotheken nicht benoetigen. Dieser Nachteil gilt jedoch nur fuer das erstmalige Laden! Da jedoch meist die entsprechenden dynamischen Bibliotheken schon fuer einen anderen Prozess in den Hauptspeicher geladen wurden, trifft diese auf den Grossteil von Programmen nicht mehr zu.

Hinweis:
Mit dem heute auf nahezu allen Linux-/Unix-Systemen verfuegbaren Binaerformat ELF (Executable and Linking Format) ist das Erzeugen und benutzen von dynamischen Bibliotheken weitgehen standardisiert worden.

Zurueck || Index || Vor