Freistetters Formelwelt: Verhungernde Philosophen
Die Bestimmung der korrekten Uhrzeit ist ein durchaus komplexes Unterfangen, für das jede Menge Astronomie, Physik und Mathematik nötig sind. Im Alltag haben wir allerdings meistens wenig Probleme damit. Wenn wir wissen wollen, wie spät es ist, dann schauen wir auf die Uhr. Höchstens zweimal im Jahr, zur Zeitumstellung, müssen wir uns kurz Gedanken darüber machen, ob das, was da angezeigt wird, korrekt ist oder nicht. Anderswo ist die Sache mit der Uhrzeit deutlich komplizierter:
Diese Formel beschreibt das so genannte schwache Konsistenzkriterium für Uhren. Damit sind aber nicht die Zeitmesser gemeint, die wir verwenden, wenn wir wissen wollen, wie spät es ist. Sondern »logische Uhren«, die in Computern verwendet werden. Diese Geräte machen sehr viel in sehr kurzer Zeit; viele Prozesse laufen gleichzeitig ab, und damit alles funktioniert, muss irgendetwas den Überblick behalten. Genau das macht eine logische Uhr, die aber nicht unbedingt wissen muss, wie spät es in der echten Welt ist. Es reicht, wenn sie korrekt identifizieren kann, welche Ereignisse in welcher Ordnung abgelaufen sind.
Alle Folgen seiner wöchentlichen Kolumne, die immer sonntags erscheint, finden Sie hier.
Jedes Ereignis bekommt von der logischen Uhr einen Zeitstempel verpasst, und am Ende muss die oben angeführte Gleichung erfüllt sein. Wenn also ein Ereignis a vor einem Ereignis b stattfindet, dann muss der Zeitstempel C(a) auch kleiner sein als C(b). Daraus folgt nicht, dass a auch die Ursache von b sein muss; es geht vorerst bloß darum, alles vernünftig zu ordnen. Wenn es im Computer nur einen einzigen Prozess gibt, der abläuft, ist das recht einfach zu lösen.
Es kann aber auch sein, dass zum Beispiel viele Einzelrechner gleichzeitig auf einen zentralen Server zugreifen. Oder dass aus anderen Gründen mehrere Prozesse parallel nebeneinander ablaufen. Gerade dann ist es wichtig, dass das System nicht vergisst, in welcher Reihenfolge alles abgelaufen ist. Sonst kann es passieren, dass es irgendwann nicht mehr weiß, was passieren soll. Dann steht das System still, wie das berühmte Gedankenexperiment des »Philosophenproblems« demonstriert.
Das Problem mit der Gleichzeitigkeit
Fünf Philosophen sitzen im Kreis um einen Tisch herum. Jeder hat einen Teller mit Spagetti vor sich. Zwischen zwei Tellern liegt je eine Gabel; insgesamt gibt es also fünf Philosophen, fünf Teller und fünf Gabeln. Das erscheint eigentlich nicht problematisch, und man könnte allen einen guten Appetit wünschen.
Aber die Regeln des Gedankenexperiments besagen, dass jeder Philosoph zwei Gabeln braucht, um essen zu können. Was sie aber sowieso nur machen, wenn sie nicht gerade tiefgründige Gedanken haben. Irgendwann wird man jedoch auch beim Nachdenken hungrig. Dann greift sich der entsprechende Philosoph zuerst die linke Gabel, dann die rechte und isst die Spagetti. Ausreichend gesättigt, legt er das Besteck zurück und denkt weiter. Falls zufällig gerade ein anderer Philosoph die Gabeln benutzt, wird einfach gewartet, bis er fertig ist.
Das alles ist zwar sehr obskur, aber so lange kein Problem, bis nicht alle fünf auf einmal beschließen zu essen. Dann greift jeder zur linken Gabel – womit niemand mehr eine rechte Gabel zur Verfügung hat. Gemäß den Regeln wartet jeder, bis jemand anderes die Gabel wieder zurücklegt. Was allerdings nicht passiert, weswegen die Philosophen verhungern.
Man weiß nicht, was sich der niederländische Informatiker Edsger Dijkstra gedacht hat, als er dieses Beispiel 1971 erfand, um die Probleme der Kommunikation zwischen mehreren gleichzeitig ablaufenden Prozessen zu demonstrieren. Es zeigt auf jeden Fall, dass man sich Gedanken darüber machen muss, wie man die Zeit in einem Computer misst, wenn alles funktionieren soll. Und selbst wenn es nichts mit dem Thema zu tun hat: Gedanken sollte man sich meiner Meinung auch dann machen, wenn man zwei Gabeln braucht, um Spagetti zu essen!
Schreiben Sie uns!
Beitrag schreiben