# Bibliotheken

## Gemeinsame Bibliotheken
- In jedem modernen System vorhanden
  - bspw. I/O-, Grafikbibliotheken
- Statt an jedes Programm statisch binden
  - _shared libraries_

- Bsp.:
  - normales Programm benutzt 20-50MB an Grafik- und Benutzungsschnittstellenfunktionen
  - hunderte solcher Programme
    - viel Speicher, RAM verschwendet
  - BS hat keine Möglichkeit um zu schauen, ob eine gemeinsame Nutzung infrage käme

- Falls Programm mit gemeinsamen Bibliotheken verbunden
  - **Binder (_Linker_)** schließt _Stub-Routine_ ein
    - statt aktueller Funktionsaufrufe
- Gemeinsame Bibliotheken gleichzeitig wie Programm / beim ersten Aufruf ihrer Funktion laden
  - abhängig vom System
  - Falls durch anderes Programm bereits geladen
    - Muss nicht nochmal! :)
  - Wird nicht auf einmal in den Speicher eingelesen
    - Bei Bedarf Seite für Seite
    - Keine Funktionen im RAM, die nicht gebraucht werden
- Ausführbare Dateien bleiben klein
- Falls Fehler in Bibliothek
  - Beheben
  - Nicht alle Programme neu übersetzen

