Prozess
Eine Aufgabe ist in der Computerwelt eine einzelne, definierte Handlung oder Operation, die von einem Computer ausgeführt wird. Alle Aufgaben, die ein Computer durchführt, sind oft im Hintergrund verborgen und laufen automatisiert ab.
Diese Aufgaben können von der Verarbeitung von Daten bis hin zur Ausführung von Programmen oder Befehlen reichen. In komplexeren Systemen werden Aufgaben in Prozesse unterteilt, die gleichzeitig ablaufen können, wobei der Computer je nach Ressourcen und Anforderungen diese Aufgaben effizient ausführt.
Ein Prozess ist eine Instanz eines Programms, das in Ausführung ist, und besteht aus einer Reihe von Aufgaben, die nacheinander oder parallel bearbeitet werden, um das gewünschte Ergebnis zu erzielen.
Genauer: Ein Prozess ist der aktuelle Zustand eines laufenden Programms — Maschinencode + Programmzähler + alle Variablen & Registerinhalte.
Das Programm ist das Rezept (statisch). Der Prozess ist der aktuelle Kochvorgang: bereitgelegte Zutaten, Zustand der Töpfe, Herdtemperatur und der Punkt im Rezept, an dem man gerade ist (= Programmzähler).
Prozesszustände
Ein Prozess ist immer in genau einem von drei Zuständen:
| Zustand | engl. | Bedeutung |
|---|---|---|
| Rechnend | running | wird gerade auf der CPU ausgeführt |
| Bereit | ready | will rechnen, wartet aber auf CPU-Zeit |
| Blockiert | blocked | wartet auf ein Ereignis, bewirbt sich nicht um CPU |
(2) CPU zugeteilt
┌────────┐ ──────────────► ┌──────────┐
│ BEREIT │ │ RECHNEND │──(6)─► beendet
└────────┘ ◄────────────── └──────────┘
▲ ▲ (3) Zeit abgelaufen │
│ │ (Scheduler) │ (4) wartet auf
(1) │ └───────────────┐ │ Ereignis (I/O)
gestartet │ ▼
(5) Ereignis ┌───────────┐
eingetroffen ──│ BLOCKIERT │
└───────────┘
Die Übergänge steuert das Scheduling; den Wechsel selbst macht der Kontextwechsel.
Prozesskontrollblock (PCB)
Das Betriebssystem verwaltet jeden Prozess über einen Prozesskontrollblock (PCB), ein Datensatz mit:
- Prozess-ID (PID) — eindeutige Nummer
- Priorität — Scheduling-Priorität
- Besitzer (User-ID) — wer hat den Prozess gestartet
- Registerstatus — alle Register-Werte (beim Kontextwechsel gespeichert)
- Programmzähler + Programmstatuswort (PSW)
- Speicherbereich (Anfangsadresse, Größe)
- Offene Dateien (Filedeskriptoren)
Alle PCBs liegen in der Prozesstabelle (Kernel-Speicher). Der Scheduler konsultiert sie ständig: wer läuft, wer blockiert, wer bereit?
Prozess-Lifecycle
Starten
- Betriebssystem erzeugt einen neuen Prozess (PCB anlegen).
- Programm + Daten werden aus dem Dateisystem in den RAM geladen.
- Jeder Prozess erhält eigenen Speicherbereich (per Speichervirtualisierung).
- Der Elternprozess hat nach dem Start keinen direkten Zugriff auf die Daten des Kindprozesses (Speichertrennung durch das BS).
Beenden
-
Normal: Prozess beendet sich selbst (Programm zu Ende, Nutzer beendet,
exit()). -
Erzwungen: Anderer Prozess / Kernel terminiert ihn (Crash bei Division durch 0,
kill, Memory-Limit überschritten). -
⚠️ Zombieprozess: Läuft ein terminierter Prozess fehlerhaft weiter oder ist seine Ausgabe nicht gelesen, bleibt der PCB in der Prozesstabelle → blockiert Slot. (Unter Linux: Elternprozess muss
wait()aufrufen.) -
Zu einem Programm können mehrere Prozesse gleichzeitig existieren (z.B. drei Firefox-Fenster laufen technisch als drei Prozesse).