Simulatoren und andere Werkzeuge im Technologie-CAD liegen zumeist als eigenständige exekutierbare Dateien vor. Eine wesentliche Aufgabe der VISTA-TCAD-Shell ist der Aufruf und die Überwachung der Simulatoren. Realisiert ist dies in Form von Subprozessen - ein Mehrprozeßbetriebssystem wie UNIX oder VMS wird vorausgesetzt - indem der Shell-Prozeß in einem Aufruf einer Betriebssystemfunktion (,,system call``) einen Subprozeß kreiert, welcher die gewünschte Datei exekutiert. Die Subprozeßverwaltung wird durch folgende Forderungen zu einer komplexen Aufgabe:
Abbildung: Schematisches Zeitdiagramm der Subprozeßbehandlung in der
VISTA-TCAD-Shell am Beispiel von zwei gleichzeitig aktiven
Subprozessen.
In Abb. 3.3 ist ein schematisches Zeitdiagramm der Subprozeßbehandlung am Beispiel von zwei gleichzeitig aktiven, als Subprozeß exekutierten Simulatorläufen dargestellt. Die Auswertung eines Ausdrucks mit einem Systemaufruf, ausgelöst etwa vom Drücken des OK-Knopfs eines Paneels der graphischen Benutzeroberfläche, stößt die Ausführung des ersten Simulatorlaufs an. Sodann wird die Statusanzeige der aktiven Prozesse aktualisiert. Dazu führt der Shell-Interpreter die in der Callback-Liste Starthook stehenden Callback-Funktionen mit der Prozeßidentifikationsnummer (PID) des eben begonnen Subprozesses als erstem Parameter (caller_identifier) aus. Danach ist der Shell-Interpreter frei für die Bearbeitung von beliebigen anderen Ereignissen.
Optional können Daten zwischen Haupt- und Subprozeß mittels Pipes ausgetauscht werden. Schreibt ein Subprozeß in seine Pipe, wird dies vom Shell-Interpreter asynchron, nämlich wenn er das nächste Mal in den Zustand ,,Warten auf Eingabe`` (read) kommt, durch Ausführung der zugeordneten Callback-Funktion beantwortet.
Die Beendigung eines Subprozesses wird dem Shell-Interpreter über Signale mitgeteilt. Sobald der Interpreter frei ist, werden die Callback-Funktionen der Callback-Liste Endhook ausgeführt. Eine dieser Funktionen löscht den eben terminierten Prozeß von der Prozeßstatusanzeige. Eine andere veranlaßt den Start des nächsten Subprozesses, soferne eine solche Anforderung in der Systemqueue auf ihre Bearbeitung wartet. Die abschließende Aktion besteht in der Ausführung der für das Ereignis ,,Beendigung dieses Subprozesses`` registrierten Callback-Funktion. Dieser Termination-Callback ist die einzige Methode, den Rücksprung in eine logische Programmsequenz nach Beendigung des Systemaufrufs zu bewerkstelligen, also mit der TCAD-Shell wieder zu synchronisieren.
Im Termination-Callback wird das Ergebnis des Subprozeßlaufs weiterverarbeitet. Als ersten Parameter erhält die Callback-Funktion die PID und als dritten Parameter (call_data) den Rückgabestatus (exit code) des terminierten Subprozesses. Es ist Aufgabe des Termination-Callbacks, den Rückgabestatus, der über Fehler im Subprozeßablauf informiert, zu beachten und wenn notwendig eine Fehlerbehandlung einzuleiten.
Die asynchrone Ausführung von Subprozessen in der VISTA-TCAD-Shell mit mehreren gleichzeitig aktiven Subprozessen ohne Blockade des Hauptprozesses und die Wiedersynchronisierung bei Beendigung eines Subprozesses durch die Ausführung einer Callback-Funktion im globalen Symbolraum des Hauptprozesses stellen konzeptuelle Hauptvorteile von VISTA gegenüber den meisten bekannten oder in Entwicklung befindlichen Technologie-CAD-Systemen dar. Die Ereignissteuerung und deren Implementierung durch das Callback-Konzept stehen im Gegensatz zum bisher dominierenden prozeduralen Programmierparadigma. Die weitreichenden Konsequenzen für die Programmierung mit Simulatoraufrufen auf TCAD-Shell-Ebene werden am Beispiel der Extremwertsuche in Abschnitt 3.4.5 bei der TCAD-Shell-Anbindung von MINIMOS besprochen.