Kapitel 7 Dämonen, Zombies und Prozesse
In diesem Kapitel wird ein enorm wichtiges und garantiert immer zu kurz ausfallendes Thema (trotz des erhöhten Umfangs) behandelt: der Prozess (oder die Prozesse).
Da das Thema recht wichtig und interessant ist, habe ich mich entschlossen, bei den Grundlagen anzufangen. Denn selbst in vielen Grundlagenbüchern wird das Thema häufig viel zu kurz abgehandelt. Und als Programmierer genügt es einfach nicht, nur zu wissen, wie und mit welcher Funktion man einen neuen Prozess erzeugen kann, sondern man muss auch wissen, was man da eigentlich erzeugt (und warum man es überhaupt erzeugt und wie man es hinterher auch wieder »loswird«). Mit diesem Wissen ausgerüstet (aber nicht vorausgesetzt), können Sie anschließend mit Threads fortfahren.
7.1 Was ist ein Prozess?
 
Vereinfacht ausgedrückt ist ein Prozess zunächst nichts anderes als ein Programm bei seiner Ausführung. Diesem Programm steht die komplette Verwaltungseinheit des Betriebssystems zur Verfügung, so als wäre dies das einzige Programm, das gerade laufen würde. In der Hardware läuft in der Tat auch nur ein Prozess pro CPU, aber natürlich weiß – entgegen dem, was viele andere Bücher sagen – ein Prozess, dass es andere gibt, /proc ist ein Beispiel dafür. Vereinfacht heißt dies, dass dem Programm die komplette Rechenleistung des Prozessors zur Verfügung steht. Natürlich ist diese alleinige Verfügbarkeit zeitlich begrenzt, denn sonst würde es sich ja nicht um ein Multitasking-Betriebssystem handeln. Gewöhnlich werden auf einem Betriebssystem mehrere Programme gleichzeitig ausgeführt. Auch dann, wenn Sie noch gar kein Programm gestartet haben, laufen viele Dienste – und je nach Einstellung auch Programme im Hintergrund (Dämonprozesse) – ab. Ob Sie jetzt gleichzeitig Texte verfassen, E-Mails verschicken oder etwas aus dem Internet herunterladen, jede Anwendung bekommt eine gewisse Rechenzeit der CPU zur Verfügung gestellt. Bei Linux auf AMD-/Intel-CPUs (x86) ist dies meist 1/100s bzw. 1/1000s (bei 2.6), bevor die CPU die Rechenzeit einem anderen Prozess widmet. Somit hat es den Anschein, als würden quasi alle Prozesse gleichzeitig ausgeführt werden. Ein wirkliches gleichzeitiges Ablaufen von mehreren Prozessen ist natürlich nur dann möglich, wenn auch mehrere CPUs im Rechner vorhanden sind – genauer: Pro CPU wäre ein Prozess möglich.
|