Die Aufgabe des Service-Verwalters ist es, die Arbeit der
Prozeß-Manager zu koordinieren. Dazu braucht er die Informationen
aus den Tabellen aus Abschnitt . Zum einfachen
Wiederauf''|finden der Services werden diese anhand der Namen in einer
Baumstruktur angeordnet (siehe Abb.
). Dabei wird ein
sog. n-dimensionaler Baum
verwendet.
Als erstes wird beim Start des Service-Verwalters dieser Baum
angelegt. Danach werden die Verweise auf die Abhängigkeiten
eingetragen. Dabei müssen nur die beiden Services aus jedem
Tabelleneintrag im Baum gesucht werden, und es muß eine entsprechende
Verbindung hergestellt werden. Über diese Verbindung kann dann
später jederzeit die Abhängigkeit zu einem Service herausgefunden
werden. Die Abhängigkeiten aus der Typen-Tabelle
(Tab. ) einzutragen, bedeutet schon etwas mehr
Aufwand. Hier muß zuerst der ganze Baum nach Services mit dem in dem
Tabelleneintrag stehenden Typ durchsucht werden. Zum Typen COLLI
würde man also speca/colli finden. Dann muß der Servicename
mit dem relativen Namen verknüpft werden - im Beispiel wird aus dem
Namen speca/colli und ./multi der neue Name speca/colli/multi - und dieser Service gesucht werden. Im
Anschluß können die Verbindungen für die Abhängigkeiten erzeugt
werden.
Zuletzt wird die Liste der Gerätenamen eingelesen. Zu jedem der Gerätenamen wird der Baum der Services nach Einträgen durchsucht, die zu diesem Gerätenamen gehören, um auch hier einen Verweis zu erstellen. Damit sind die Datenstrukturen vollständig, mit denen das Programm im weiteren Verlauf arbeitet.
Nach dieser Initialisierung stehen drei verschiedene Aktionen für das
Feld DEVICE zur Verfügung. Die Aktionen START und STOP werden von den Dienstprogrammen (siehe
Abschnitt ) zum Starten und zum Stoppen von
Gerätetreibern benutzt. Die Aktion STOPPED ruft der
Prozeß-Manager auf, wenn er dem Service-Verwalter die Nachricht
schickt, daß eines seiner Kinder wegen eines Fehlers beendet wurde
(siehe Abschnitt
).