Was ist Transaktionsspeicher?
In der Software ist das Schema des Transaktionsspeichers eine Vorgehensweise für die Multithread-Programmierung, bei der Transaktionen verwendet werden, die denen einer Datenbank sehr ähnlich sind. Wenn zwei oder mehr Threads gleichzeitig versuchen, auf dieselben Daten zuzugreifen, können viele verschiedene unerwünschte Situationen dazu führen, dass das Ergebnis eines Programms von der Thread-Zugriffsreihenfolge abhängt. In der Regel ist eine Bestellung erwünscht, und beim Multithreading sind Sperren die vorherrschende und einfachste Methode, um sicherzustellen, dass jeweils nur ein einziger Thread Zugriff auf eine bestimmte Ressource hat.
Dieser Ansatz zum Transaktionsspeicher enthält mehrere Probleme in Bezug auf Sperren beim Multithreading. Eine Sperre kann dauerhaft werden, wenn ein unerwarteter Fehler auftritt, und Sperren können unvorhersehbare Probleme mit der Parallelität verursachen, z. B. Deadlock oder Prioritätsumkehr. Da Sperren sehr feinkörnig sind, liegt ein weiteres Problem darin, dass der Code letztendlich einen Großteil der Zeit zwischen Sperren, Kontextwechsel und Entsperren verbringt. Dies ist ein entscheidendes Problem, da der Code mehr Zeit für diese Aktionen aufwenden muss als für andere wichtige Arbeiten im Programm. Im Gegensatz dazu können grobkörnige Sperren eine verringerte Verarbeitungsleistung und eine verringerte Parallelität verursachen.
Die Probleme im Transaktionsspeicher werden durch erweiterte Sperren behoben, einschließlich "Sperrblock" von C #, Lese- / Schreibsperren, Schreibsperren usw. Eine der Hauptprioritäten im Transaktionsspeicher besteht darin, keine Sperren und keine unnötige Sperrverarbeitungszeit zu haben . In der Regel wird vereinbart, dass eine gemeinsam genutzte Datenstruktur frei von Sperren ist, wenn ein gegenseitiger Ausschluss für ihre Operationen nicht erforderlich ist. Datenstrukturen, die gemeinsam genutzt werden und frei von Sperren sind, vermeiden häufig auftretende Probleme mit Standard-Sperrtechniken, wenn sie sich in Systemen befinden, die stark gleichzeitig ablaufen.
Das TCC-Modell (Transactional Memory Coherence and Consistency) ist ein neues, vorgeschlagenes Modell für Shared Memory. Gemäß dem Modell sind atomare Transaktionen ausnahmslos grundlegende Einheiten der folgenden: parallele Arbeit, Gedächtniskohärenz, Kommunikation und Konsistenz der Gedächtnisreferenz. Das TCC-Modell vereinfacht auch die parallele Software, indem die Synchronisation unter Verwendung von Standardsperren oder Semaphoren entfällt. Durch Hardware kombiniert TCC auch jeden Schreibvorgang aus jedem Bereich des Transaktionsereignisses in einem Paket, um das Paket atomar in einen Speicherzustand zu senden, der permanent gemeinsam genutzt wird. Dies bedeutet neben der vereinfachten Kohärenzhardware, dass weniger Nachrichten mit geringer Ruhezeit benötigt werden und bestimmte Standard-Kohärenzprotokolle vollständig wegfallen.