Dieser Kurs kann nur eine grobe Einleitung in die Problematik nebenläufiger oder tatsächlich paralleler Prozesse geben. Enthält schon die sequentielle Verarbeitung ihre Fallen, so wird die Prozess-Programmierung durch die nötige Synchronisation zum Datenaustausch zwischen Prozessen verkompliziert.
In sequentiellen Programmen wird eine Anweisung nach der anderen ausgeführt. Wird ein Unterprogramm aufgerufen, so kann mit der nächsten Anweisung nach dem Aufruf erst fortgefahren werden, sobald das Unterprogramm fertig ist.
Ada Tasking ermöglicht die Entwicklung nebenläufiger und paralleler Prozesse.
"Nebenläufig" bedeutet hier, dass Prozesse sich einen Prozessor teilen und tatsächlich sequenziell ausgeführt werden, doch ist die Reihenfolge nicht unbedingt voraussagbar; sie kann auch durch gewisse Maßnahmen partiell festgelegt werden.
"Parallel" bedeutet, dass sehr viele Prozessoren zur Verfügung stehen, auf die die Prozesse verteilt werden können. Hier ergibt sich die Gefahr, dass Prozesse mit niedriger Priorität gleichzeitig mit solchen höherer Priorität laufen, was zu Schwierigkeiten bei der Kommunikation führen kann.
Das DoD-Team, das die Anforderungen an die neu zu entwickelnde Sprache ab den frühen 1970er-Jahren erstellte, hat diese Entwicklung schon sehr früh geahnt und die Parallelverarbeitung in den Anforderungskatalogen Strawman (1975) bis Steelman (1978) als eigenes Sprachkonzept aufgenommen. 1980 wurde der Gewinner Green, entwickelt von CII Honeywell Bull unter der Leitung von Jean Ichbiah, als Ada standardisiert. Mit jeder neuen Sprachgeneration (83, 95, 2005, 2012, 2022) wurden diese Fähigkeiten erweitert und verfeinert.
Die neuesten Erweiterungen von Ada 2022 der kleinteiligen Parallelverarbeitung in "parallelen Blöcken" und "parallelen Schleifen" durch Aufspaltung eines Prozesses (einer Task) in mehrere Fäden (threads) werden allerding in diesem Kurs nicht behandelt. (Deren Implementierung lässt auf sich warten.)
© CKW Grein 2023, 2024
christ-usch.grein@t-online.de