In der Programmierung versteht man unter Prozesssynchronisation (oder kurz einfach Synchronisation) die Koordinierung des zeitlichen Ablaufs mehrerer nebenläufiger Prozesse bzw. Threads. Dabei ist es unerheblich, ob es sich um Threads in einem Programm, um Programme auf einem Computer oder um Prozesse in einem Verteilten System handelt, die über ein Netzwerk kommunizieren.
Der Zweck der Koordinierung ist zumeist einer der folgenden:
Die Synchronisation der Prozesse besteht nun darin, dass im Allgemeinen ein Prozess auf ein Ereignis warten muss, das von einem anderen ausgelöst wird. Es ist Aufgabe des Schedulers, die sich daraus ergebenden kausalen Abhängigkeiten so umzusetzen, dass ein Prozess immer nur dann Rechenzeit bekommt, wenn alle dafür notwendigen Bedingungen erfüllt sind. Konkret wird dies meist durch die klassischen Kontrollmechanismen wie Locks, Semaphore und Monitore gelöst.
Die Abhängigkeiten zwischen den Prozessen lassen sich formal zum Beispiel durch ein Petri-Netz modellieren. Ein typisches Problem ist in diesem Zusammenhang, dass sich Prozesse verklemmen können, wenn sich zirkuläre Abhängigkeiten bilden – das wird zum Beispiel bei dem Problem der speisenden Philosophen deutlich. Ein anderes prototypisches Problem ist die Steuerung eines Producer/Consumer-Systems.
© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search