Next: Die Aktion zum Up: Die Prozeßkontrolle Previous: Die Datenbanktabellen

Der Prozeß-Manager

Wenn ein Prozeß andere Prozesse startet, bezeichnet man den ersteren als Vaterprozeß und die neuen als seine Kindprozesse. Solche Vaterprozesse haben unter dem verwendeten Betriebssystem UNIX die Eigenschaft, daß ihnen die Beendigung eines ihrer Kindprozesse signalisiert wird. Sie erhalten das Signal SIGCHLD. Wenn keine besonderen Maßnahmen ergriffen werden, wird ein solches Signal von jedem Programm ignoriert. Hier wird diese Information aber benötigt, um z.B. den Experimentator über die Beendigung eines Gerätetreibers zu informieren. Da ein solches Signal jederzeit während des Programmablaufs eintreffen kann, wird dem Betriebssystem eine selbstgeschriebene Funktion bekannt gemacht, die es beim Eintreffen eines Signals aufrufen soll. In dieser Funktion kann dann entsprechend auf das Signal reagiert werden. Der Service-Verwalter installiert seine Signalroutine gleich am Anfang des Programms. Die Funktionsweise wird in Abschnitt erklärt.

Der Prozeß-Manager wie auch der Service-Verwalter wurden mit Hilfe der Treiber-Klassenbibliothek implementiert, da sie wie andere Treiber auch per Messagesystem ansprechbar sein sollen und Services und Aktionen zur Verfügung stellen. Der Prozeß-Manager hat ein Feld namens PROCESS und dazugehörig zwei Aktionen START und STOP, die für das Starten und Stoppen von Prozessen zuständig sind.

Beim Start des Prozeß-Managers wird die Tabelle der Gerätenamen (siehe Abb. ) aus der Datenbank eingelesen. Aus der Konfigurationsdatei hw_conf der Datenbank für diesen Service wird ein symbolischer Rechnername und der Servicename des Service-Verwalters gelesen. Mit Hilfe des Rechnernamens werden alle Einträge aus der Liste der Gerätenamen herausgesucht, die auf diesem Rechner laufen sollen. Nur diese Prozesse werden berücksichtigt und sind damit startbar.



martin@daisy.zdv.Uni-Mainz.DE
Fri Apr 21 10:02:42 MESZ 1995