Dynamische Bibliotheken
Dynamische Bibliotheken weisen einige Vorteile gegenueber statischen Bibliotheken auf:
- 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.
- Diese Einsparung am Speicher bringt natuerlich auch Geschwindigkeitsvorteile mit sich,
da dadurch weniger Paging (Ein- und Auslagern von Speicherseiten) stattfinden.
- 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.
- 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:
- 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.
- 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