Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
12.3 Prozesse 171<br />
12.3 Prozesse<br />
Ein Programm, das gerade ausgeführt wird, nennt man »Prozess«. Neben dem eigentlichen<br />
Programmcode (in der Maschinensprache <strong>des</strong> jeweiligen Prozessors)<br />
gehören zu einem Prozess auch Arbeitsspeicher für die Daten und Verwaltungsinformationen<br />
wie die gerade aktuell offenen Dateien, eine Prozessumgebung<br />
(für die Umgebungsvariablen), ein aktuelles Verzeichnis und eine Prozessnummer<br />
oder »PID«, die den Prozess eindeutig im System identifiziert. Der Betriebs- PID<br />
systemkern kümmert sich um das Anlegen von Prozessen, um die Zuteilung von<br />
Rechenzeit und Arbeitsspeicher und um das Aufräumen hinter Prozessen, die<br />
sich beendet haben. Prozesse können den Betriebssystemkern aufrufen, um auf<br />
Dateien, Geräte oder das Netzwerk zuzugreifen.<br />
B<br />
B<br />
Neue Prozesse entstehen, indem existierende Prozesse sich – ganz wie Bakterien<br />
oder andere niedere Lebewesen – in zwei fast identische Kopien aufspalten<br />
(»fast identisch«, weil einer der Prozesse als »Elter« und einer als<br />
»Kind« gilt). Außerdem kann ein Prozess dafür sorgen, dass er ein anderes<br />
Programm ausführt: Wenn Sie in der Shell zum Beispiel das Kommando<br />
ls aufrufen, erzeugt die Shell einen Kindprozess, in dem zunächst auch<br />
der Programmcode der Shell ausgeführt wird. <strong>Die</strong>ser Code kümmert sich<br />
(unter anderem) darum, eine etwaige Ein- und/oder Ausgabeumlenkung<br />
in Kraft zu setzen, und ersetzt sich dann selbst durch die Programmdatei<br />
/bin/ls. Mit dem Ende <strong>des</strong> ls-Programms endet auch der Kindprozess, und<br />
die Shell fragt Sie nach dem nächsten Kommando.<br />
Der erste Prozess mit der PID 1 wird beim Systemstart vom Betriebssystemkern<br />
angelegt. Nach Konvention ist das ein Programm namens /sbin/init,<br />
und man spricht <strong>des</strong>halb auch vom »Init-Prozess«. Der Init-Prozess ist verantwortlich<br />
dafür, das System kontrolliert hochzufahren und zum Beispiel<br />
weitere Prozesse für Hintergrunddienste zu starten.<br />
ps Informationen über die Prozesse im System können Sie mit dem Kommando<br />
»ps« erhalten. Im einfachsten Fall zeigt ps Ihnen alle Prozesse, die auf Ihrem<br />
aktuellen Terminal (oder, heutzutage, im aktuellen Terminal-Fenster auf Ihrem<br />
Grafikbildschirm) laufen:<br />
$ ps<br />
PID TTY<br />
STAT TIME COMMAND<br />
997 pts/8 S 0:00 -bash<br />
1005 pts/8 R 0:00 ps<br />
$ _<br />
<strong>Die</strong> Spalten PID und COMMAND sprechen dabei für sich. TTY gibt den Namen <strong>des</strong> Terminals<br />
an (»pts/irgendwas« steht meist für ein Terminalfenster), TIME die Rechenzeit,<br />
die die Prozesse jeweils schon verbraucht haben, und STAT den »Prozesszustand«.<br />
B<br />
Ein Prozess ist bei <strong>Linux</strong> immer in einem von einer Reihe von Zuständen, Prozesszustand<br />
namentlich<br />
Lauffähig (runnable, R) Der Prozess kann Rechenzeit zugeteilt bekommen.<br />
Schlafend (sleeping, S) Der Prozess wartet auf ein Ereignis, typischerweise<br />
Ein- oder Ausgabe – einen Tastendruck oder Daten von der Platte.<br />
Im Tiefschlaf (uninterruptible sleep, D) Der Prozess wartet auf ein Ereignis<br />
und kann dabei nicht unterbrochen werden. Prozesse sollten nicht<br />
zu lange in diesem Zustand verbleiben, weil Sie sie sonst nur durch<br />
einen Systemneustart loswerden. Wenn das passiert, deutet das auf einen<br />
Fehler hin.<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH