Overlay (Programmierung)
Als Overlay bezeichnet man einen Teil eines Computerprogramms, das in einen Bereich des Arbeitsspeichers, der wechselweise von mehreren mehreren Programmteilen (Overlays) gemeinsam genutzt wird, geladen und dort ausgeführt wird.
Problemstellung
Über viele Jahre reichte der verfügbare RAM-Speicher in Computern nicht aus, um komplexe ausführbare Programme im Ganzen zu laden. Beispielsweise verfügten Mikrocomputer mit den 8-Bit-Mikroprozessoren Intel 8080 und Zilog Z80 unter dem Betriebssystem CP/M-80 lediglich über höchstens 64 Kilobyte Arbeitsspeicher. Die IBM-PC mit dem 16-Bit-Prozessor 8088 von Intel konnten unter dem Betriebssystem MS-DOS nicht mehr als 640 Kilobyte an RAM nutzen. Damit war die Größe eines ausführbaren Programms einschließlich der notwendigen Datenbereiche auf diese maximale Größe des verfügbaren Arbeitsspeichers begrenzt.
Overlay
Quasi als Notlösung aus solchen Problemstellungen entschied man sich daher in besonderen Fällen, Computerprogramme zu modularisieren und in Teile zu splitten, die nicht gleichzeitig ausgeführt werden mussten. Diese wurden als separate Programm-Dateien realisiert. Um sie einzeln zu nutzen, wurde der dafür maximal erforderliche Speicherbereich im RAM reserviert. So konnte ein solches Modul temporär als Overlay geladen und ausgeführt sowie bei Bedarf dynamisch durch ein anderes Modul, das dorthin nachgeladen werden musste, ersetzt werden. Overlay-Dateien wurden meist durch die Dateiendung OVR oder OVL gekennzeichnet, verbindliche Konventionen gab es aber nicht.
Software
Um die Aufteilung in Overlays sowie anfänglich auch das Nachladen musste sich der Programmierer selbst kümmern, also diese Funktionalität programmieren. Teilweise wurden Overlays auch durch Programmiersysteme, beispielsweise durch spätere Versionen von Turbo Pascal, unterstützt. Die Modularisierung in Programm-Dateien nach Anweisung des Programmierers wie auch die Speicherverwaltung und das Nachladen erfolgte hier durch das Laufzeitsystem.
Ein Programm in Turbo Pascal 3.0 könnte man sich sinngemäß etwa in folgender Form vorstellen:
program meinprojekt; overlay procedure kundenverwaltung; ... overlay procedure warenverwaltung; ... { Hauptprogramm } begin while input <> "ende" do begin case input of "kunden": kundenverwaltung; "waren": warenverwaltung; end; end; end.
Ab Turbo Pascal Version 5.0 gibt es auf Unit-Ebene den Begriff Overlay.
Professionelle Nutzung

Insbesondere professionelle Software war aufgrund ihres notwendigen Funktionsumfangs zu Zeiten begrenzter Hardware von dem Problem der Speicherknappheit betroffen. Eines der seinerzeit für die Modularisierung in Overlays bekannten Programme ist die Textverarbeitungssoftware WordStar mit dem Hauptprogramm WS.COM und den Overlay-Modulen WSMSGS.OVR, WSOVLY1.OVR, MAILMERGE.OVR und SPELSTAR.OVR. Auch das Datenbankprogramm dBASE war entsprechend modularisiert.[1] Selbst die Space Shuttle-Software Primary Avionics System Software (PASS) verwendet Overlays.[2]
Aktuelle Bedeutung
Durch die weitere Entwicklung im Bereich Hard- und Software haben Overlays allgemein nur noch geringe Bedeutung. Allenfalls in kleinen, relativ einfachen Systemen wie eingebetteten Systemen sind Overlays noch sinnvoll.
Moderne Computersysteme mit hinreichendem Arbeitsspeicher und linearer Adressierung sowie Betriebssystemen mit leistungsfähiger Speicherverwaltung machen Overlays überflüssig bzw. lassen sie nicht mehr zu. Eine den Overlays ähnliche Funktionalität kann bei Bedarf mit dynamischen Linkbibliotheken (DLLs) und Laden zur Laufzeit realisiert werden.
Quellen
- Hans-Georg Eßer, Hochschule München: Speicherverwaltung und Dateisysteme. Abgerufen am 13. Februar 2014.
- Turbo Pascal 7.0, Rudolf Herschel,Ernst-Wolfgang Dieterich, 2. Auflage 2000, Seite 249, Verlag Oldenbourg, ISBN 3-486-25499-5
- Getting started with WordStar, MailMerge + SpellStar, Alan Mabbett, 1985, Cambridge University Press, englisch, ISBN 0-521-31805-X
Einzelnachweise
- ↑ Fa. Ashton Tate: Ankündigung dBASE IV, Version 1.1. 31. Juli 1990, abgerufen am 13. Februar 2014.
- ↑ An Assessment of Space Shuttle Flight Software Development Processes (englisch). The National Acaddemies Press, abgerufen am 13. Februar 2014.