|
Die Programme init und getty
Nach dem Start des Rechners und Laden von UNIX starten als erstes:
- der Scheduler mit der Prozeßnummer 0
- und das Programm init mit der Prozeßnummer 1
Alle Prozesse, die auf dem Rechner laufen sind Kindprozesse von init (wobei"Kind" hier auch für alle weiteren Nachkömmlinge steht). Im Single-User-Moduswerden von init nur noch einige Prozesse gestartet, im Multi-User-Modussind wesentlich mehr Prozesse zu aktivieren (z. B. der Drucker-Spooler,die Abrechnung, etc.). Alle zu startenden Prozesse sind in der Datei /etc/inittab
aufgeführt. init holt sich die Informationen über zu startende
Prozesse aus der Datei /etc/inittab. Für uns ist eigentlich nur das
Programm getty interessant, den dieses Programm sorgt für den Kontakt
mit den Terminals. Was geschieht nun weiter?
- getty wird von init für jedes angeschlossene Terminal gestartet.
- getty wartet, bis das Terminal eingeschaltet wird, liest den Usernamen
ein und ruft dann mittels exec das login-Programm auf, das seinerseits
das Passwort einliest.
- Wenn sich nun ein Benutzer anmeldet, wird das in der Benutzerliste
spezifizierte Programm per exec aktiviert (in der Regel der Kommandointerpreter,
die Shell).
- Die Shell (oder das anstelle der Shell aufgerufene Programm) arbeitet,
bis es terminiert (bei der Shell durch Eingabe von EOF = CTRL-D). Da auch
die Shell immer noch Kindprozeß von init ist, erhält nun init
ein Signal, daß der Kindprozeß terminiert ist (siehe fork).
- Nun "wacht init auf", stellt fest, welcher seiner Kindprozesse terminiert
ist und durchsucht die Datei /etc/inititab - uns interessiert wieder nur
getty.
- In inititab steht beim Prozeß getty die Steuerinformation respawn
(spawn = "laichen"). Das heißt für init, daß dieser Prozeß
nach seiner Terminierung neu gestartet werden soll - und genau das geschieht.
|
|
|