Prozess vs. Thread: Unterschiede erklärt
Ein Prozess ist ein laufendes Programm mit eigenem privatem Adressraum und eigenen Ressourcen. Ein Thread ist eine Ausführungseinheit innerhalb eines Prozesses. Alle Threads eines Prozesses teilen sich dessen Speicher, was sie günstig zu erzeugen und schnell in der Kommunikation macht, aber auch bedeutet, dass ein einziger Fehler oder Absturz den gesamten Prozess beeinträchtigen kann. Getrennte Prozesse sind voneinander isoliert, was sicherer ist, aber bei der Erzeugung und der Kommunikation über Prozessgrenzen hinweg mehr kostet.
| Aspekt | Prozess | Thread |
|---|---|---|
| Was es ist | Ein laufendes Programm mit eigenem Adressraum, eigenen Dateien und weiteren Ressourcen | Ein Ausführungspfad innerhalb eines Prozesses, mit eigenem Stack und eigenen Registern |
| Speicher | Eigener virtueller Adressraum, von anderen Prozessen isoliert | Teilt Code, Heap und globale Daten seines Prozesses; nur der Stack ist privat |
| Erzeugungskosten | Aufwendiger: Ein neuer Adressraum muss eingerichtet werden (Copy-on-Write verringert die Kosten) | Leichter: kein neuer Adressraum |
| Kontextwechsel | Teurer: Der Adressraum wechselt, und zwischengespeicherte Übersetzungen (TLB) können verloren gehen | Günstiger: Adressraum und Caches bleiben gleich |
| Kommunikation | Benötigt Interprozesskommunikation wie Pipes, Sockets oder Shared Memory | Liest und schreibt direkt im gemeinsamen Speicher, was schnell ist |
| Isolation und Fehler | Ein Absturz bleibt meist auf den Prozess beschränkt | Ein Absturz in einem Thread kann den gesamten Prozess zu Fall bringen |
| Synchronisation | Nötig, wenn Prozesse Speicher oder Dateien teilen | Bei gemeinsamen Daten immer nötig: Mutexe und atomare Operationen, sonst drohen Data Races und Deadlocks |
| Scheduling | Enthält einen oder mehrere Threads | Die Einheit, die das Betriebssystem tatsächlich auf CPU-Kerne einplant |
| Typische Einsatzgebiete | Isolation und Sicherheit: Browser-Tabs, Dienste, Shell-Pipelines | Parallele Arbeit innerhalb eines Programms: Server mit vielen Verbindungen, Hintergrundaufgaben, parallele Berechnungen |
Die Zahlenangaben sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.