Betriebssystem Linux


Das Unix-Prozeß-System

Der Begriff Prozeß (engl. process) bezeichnet ein Programm, das gerade geladen ist und (meist) läuft. Unix unterscheidet streng zwischen den Terminologien Prozeß und Programm. Ein Programm ist das - auf der Platte gespeicherte - Konstrukt, das meist Maschinensprache-Befehle enthält. Zum Prozeß wird dieses Programm dadurch, dass es aufgerufen - und damit in den Arbeitsspeicher geladen wird. Notwendig wird diese Unterscheidung dadurch, dass ein Programm mehrmals gleichzeitig aufgerufen werden kann. Das Programm existiert nur einmal (als Datei auf der Platte), jede Instanz des Programmes, die im Speicher steckt ist jetzt ein Prozeß. Jeder Prozeß hat unter Unix mehrere Eigenschaften, die wichtigste ist die Prozeß-ID, eine eindeutige Nummer, die ihn ansprechbar macht. (PID)

Als ProzeßID werden in der Regel 16 Bit Zahlen verwendet, die beim Systemstart von 0 ab hochgezählt werden. Das bedeutet, dass Unix nicht mehr als 65536 Prozesse gleichzeitig laufen lassen kann, eine Grenze, die sicherlich weit genug gesteckt ist. Sobald die PID 65535 erreicht ist, werden die nachfolgenden Prozesse wieder mit den freigewordenen Prozessen ab PID 2 nummeriert.

Neben der ProzeßID hat jeder Prozeß auch noch einen Elternprozeß. Prozesse fallen nie vom Himmel, mit Ausnahme des allerersten Prozesses wird jeder Prozeß von einem anderen Prozeß gestartet. Die Nummer des Prozesses, der den aktuellen Prozeß gestartet hat, ist die PPID - die Parent-ProcessID.

Prozesse und alles, was damit zusammenhängt, tragen unter Unix sehr blutrünstige Namen. Es gibt Daemonen und Zombies, Prozesse werden gekillt oder begehen Selbstmord (to hang up). Das ist alles nicht so brutal, wie es auf den ersten Blick scheint, im Folgenden will ich die wichtigsten dieser Begriffe klären:

Ein Prozess ist in der Lage, Signale von anderen Prozessen zu empfangen. Diese Signale können den Prozeß dazu bringen, bestimmte Handlungen vorzunehmen, etwa seine Konfigurationsdatei neu einzulesen oder sich aufzuhängen. Man spricht hier von Inter-Process-Communication (IPC), also der Möglichkeit, Prozesse fernzusteuern. Das Programm, das benutzt wird, um solche Signale zu schicken heißt kill, weil es häufig benutzt wird, um Prozesse zu beenden, es kann aber auch andere Signale schicken. Dieses Programm wird später genauer beschrieben.

Prozesse können aber auch nett zueinander sein (engl. nice). Das bedeutet, dass ein Prozeß auf Rechenzeit verzichtet, damit andere Prozesse diese Zeit nutzen können. Jeder Prozeß hat einen sogenannten Nice-Wert, normalerweise ist dieser Wert 0. Je höher der Nice-Wert ist, um so weniger Rechenzeit benutzt der Prozeß, um so netter ist er also zu anderen Prozessen. Nur der Systemverwalter kann Prozesse mit einem negativen Nice-Wert ausstatten und die Prozesse damit mit mehr Rechenzeit versehen, als ihnen eigentlich zusteht.

Daemon-Prozesse sind einfac Prozesse, die im Hintergrund lauern und warten, bis sie gebraucht werden. In der Regel sind das Serverprozesse, die darauf warten, dass ein Client ihre Dienste in Anspruch nimmt. Das Charakterisierende an solchen Prozessen ist, dass sie kein eigenes Ausgabeterminal haben.

Zombies schließlich sind Prozesse, die eigentlich schon ihre Arbeit erledigt haben und damit gestorben sind, aber noch auf einen anderen Prozeß warten müssen, der langsamer ist und ihre Daten braucht. Zombies verbrauchen keine Rechenzeit mehr, belegen aber noch Arbeitsspeicher.

 


[ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]


© 1999, 2000, 2001 by F. Kalhammer