Allokation (Informatik)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Unter Allokation versteht man in der Informatik die Reservierung von Hauptspeicher oder anderer Betriebsmittel durch ein Computerprogramm.

Hintergrund[Bearbeiten]

Bei der Entwicklung eingebetteter Systeme ist Allokation neben der Partitionierung und dem Scheduling eine Teilaufgabe bei der Strukturierung von Software unter Berücksichtigung von nicht-funktionalen Anforderungen. Die Allokation ordnet Softwareeinheiten bestimmte Rechnerressourcen zu. Ziele einer Allokation sind unter anderem die Minimierung der Gesamtkosten der Anwendung und der Kommunikation zwischen den Prozessen. Allokationsprobleme kann man mit Flussproblem-Algorithmen oder mit heuristischen Ansätzen lösen.

Im Kontext verteilter Datenbanken bezeichnet man als Allokation die Zuordnung von Datenfragmenten zu einem oder mehreren Rechnersystemen (Datenbankknoten).

Zeitpunkt der Allokation[Bearbeiten]

Ein wesentliches Merkmal ist der Zeitpunkt der Allokation, da in den seltensten Fällen der Adressbereich des allozierten Speichers von dem Programmteil bestimmt werden kann, der ihn benutzt, und so die Zugriffsadressen entsprechend angepasst werden müssen. Man unterscheidet hier drei grundsätzliche Fälle:

  • Kompilierzeit: hier werden schon während eines Kompilierens (genauer: Linkens) des Programms Adressen zugewiesen. Dies ist heute nur noch bei ECUs üblich und möglich, da hier ein Betriebssystem mit allen Programmteilen und Treibern auf einmal kompiliert wird, und zur Laufzeit in der Regel keine Teile des Arbeitsspeichers zur nachträglichen Allokation zur Verfügung stehen.
  • Ladezeit: Nach dem Kompilieren und Linken ist eine ausführbare Datei entstanden, die direkt von einem Betriebssystem geladen werden kann (also kein Skript). Diese Datei enthält außer dem Maschinencode des Programms auch Informationen über dessen Speicherbedarf, den das Betriebssystem beim Laden alloziert und dessen Adressen es in das Programm schreibt.[1]
  • Laufzeit: Ein Programm kann während seiner Laufzeit über die Betriebssystemschnittstelle Speicher allozieren. Der Zugriff des Programms muss dann über die Adresse erfolgen, die das Betriebssystem ihm beim allozieren mitteilt.

Grundsätzlich ist es auch möglich, eine Adressfestlegung mit der Variablendeklaration im Programmcode vorzunehmen, also ein händisches Allozieren zu Programmierzeit. Von der Möglichkeit wird heute allerdings kaum noch Gebrauch gemacht, da für sämtliche Programmteile, die auf einem Rechenknoten (PC, ECU, …) ausgeführt werden (und also auf den gleichen Speicher zugreifen), Überschneidungen ausgeschlossen werden müssen, anstatt diese Aufgabe Linkern bzw. Betriebssystemen zu überlassen.

Sprachliches[Bearbeiten]

Das zugehörige Verb lautet allozieren. In der Informatik wird zunehmend häufiger auch das Verb allokieren verwendet, das direkt vom englischen „allocate“ abgeleitet wurde. Der Rechtschreibduden enthält diese letztere Schreibweise nicht.

Das Gegenteil von Allokation, also das Freigeben von Ressourcen, ist die Deallokation bzw. das Deallozieren.

Einzelnachweise[Bearbeiten]

  1.  Andrew S. Tanenbaum, James R. Goodman: Kapitel 7.4: Linking and Loading. In: Structured Computer Organization. 4. Auflage. Prentice Hall of India, New Delhi 2001, ISBN 81-203-1553-7, S. 506ff.

Weblinks[Bearbeiten]

 Wiktionary: allokieren – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen