10. Parallele Prozesse
 
zurück
10.2 Parallelität


Ein Prozeßobjekt ist in Ada eine Programmeinheit, die nach ihrer Aktivierung abläuft. Werden mehrere Prozesse aktiviert, so sollen sie parallel ablaufen. Die Ausstattung des Zielrechners mit einem oder mehr Prozessoren und die Eigenschaften des Übersetzers mit seinem Laufzeitsystem entscheiden darüber, ob, falls ein Ada-Programm aus mehr als
einem Prozeß besteht, diese auch tatsächlich parallel ausgeführt werden oder nicht.

Besteht das Ada-Programm aus zwei Prozessen und enthält der Zielrechner nur einen Prozessor, so können beide Prozesse nur scheinbar parallel ausgeführt werden. In diesem Fall bietet die Laufzeitumgebung z. B. ein Zeitscheibenverfahren an, das jedem Prozeß nacheinander für ein bestimmtes Zeitintervall die Prozessorkapazität zuordnet. Nur wenn der Zielrechner (mindestens) zwei Prozessoren enthält, können beide Prozesse auch tatsächlich parallel ausgeführt werden.

Nicht jeder Ada-Übersetzer muß ein preemptives Multitasking (Zeitscheibenverfahren) zur Verfügung stellen. Ohne preemptives Multitasking wird ein Prozeß so lange ausgeführt, bis er freiwillig den Prozessor abgibt. Dies erfolgt z. B. durch Aktivierung und Beendigung von Prozessen, durch Rendezvous und durch die Verzögerungsanweisung.

Minimalvoraussetzungen:

Ada wird als preemptiv ("preemption" heißt im Englischen Vorrang(-sunterbrechung)) bezeichnet, d. h. über eine Anforderung, daß ein Prozeß aktiv werden soll, wird entschieden.

In Ada ist in jedem Fall ein kooperatives Multitasking definiert, d. h. ein Prozeß muß den Prozessor freiwillig wieder abgeben, damit andere Prozesse berücksichtigt werden können. Ein solches Prozeßverwaltungsverfahren heißt nicht-preemptiv, d. h. ein unkooperativer Prozeß kann nicht durch einen vorrangigeren unterbrochen werden. Die Folge ist, daß andere, vielleicht sogar höher priorisierte Prozesse "verhungern".

Als Alternative bieten einige Ada-Übersetzer ein unterbrechendes Prozeßverwaltungsverfahren (preemptives Multitasking, Vorrangsunterbrechung) an, bei dem jedem aktiven Prozeß eine Zeitscheibe zugeordnet wird. Nach Ablauf dieser definierten Zeitspanne wird der Prozeß gewaltsam von außen unterbrochen, die Prozeßverwaltung entzieht ihm den Prozessor und gibt ihn an den nächsten wartenden bereiten Prozeß ab (round-robin-Verfahren, ...). Hierfür ist der Begriff Zeitscheibenverfahren (time slicing) eingeführt. Zur Unterbrechung können Interrupts verwendet werden, z. B. von einem Timer beim Ablauf einer Zeitscheibe oder von externen Geräten, die auf diese Art auf ein dringende Situation aufmerksam machen.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.