Was ist falsches Teilen?
Falsche Freigabe ist eine Situation, die in einem Computerprogramm auftreten kann, wenn zwei gleichzeitig ausgeführte Anwendungen versuchen, auf Informationen in demselben logischen Speicherbereich zuzugreifen, den jedes Programm oder jeder Prozess in seinem eigenen Cache gespeichert hat. Die Daten im Cache jeder Anwendung werden von einer gemeinsamen Quelle kopiert. Wenn Sie also einen Cache ändern, muss der andere von der Quelle neu geladen werden. Der falsche Aspekt der Freigabe tritt auf, wenn die von einem Programm an der Cache-Zeile vorgenommenen Änderungen sich nicht auf die Daten auswirken, die das zweite Programm verwendet. In diesem Fall ist das Erzwingen eines erneuten Ladens des Caches eine Verschwendung von Systemressourcen und kann sich negativ auswirken die Leistung des Programms. Das Problem der falschen Freigabe ist schwer zu erkennen, da es kein direktes Ergebnis von Code ist, der in den Anwendungen enthalten ist, obwohl es wirksame Möglichkeiten gibt, eine falsche Freigabe zu verhindern, z. B. das Verschieben von Daten, die sich in einer aktuell zwischengespeicherten Zeile befinden, in eine separate Zeile .
Einer der Hauptgründe für das Auftreten einer falschen Freigabe liegt darin, wie ein Betriebssystem oder eine Hardware mit dem Lesen und Schreiben von Daten umgeht. Wenn Informationen von einer Festplatte oder einer anderen Quelle von einem Programm gelesen oder geschrieben werden, werden sie normalerweise in einen temporären Cache geladen, damit auf sie schnell zugegriffen werden kann. Die Informationsmenge, die vom Quellspeicherort zwischengespeichert wird, wird als Cache-Zeile bezeichnet und ist ein logischer Speicherblock, der normalerweise zwischen 2 Byte und 256 Byte lang sein kann. Unter einigen Betriebssystemen oder Systemarchitekturen können Programme gleichzeitig ausgeführt werden, z. B. in Parallelverarbeitung. Dies bedeutet, dass zwei separate Programme versuchen können, auf Informationen in derselben Cache-Zeile zuzugreifen, sodass jedes Programm über eine eigene Kopie der Quelldaten verfügt. Dies kann dazu führen, dass Änderungen in einem Cache nicht in den anderen Cache übernommen werden, wodurch der Cache ungültig wird Daten, die es enthält.
Es gibt eine Reihe von Mechanismen, um die Situation zu bewältigen, in der zwei Programme versuchen, auf dieselbe Cache-Zeile zuzugreifen. Das Ergebnis ist jedoch meistens, dass ein Programm gezwungen ist, seinen Cache mit den aktualisierten Informationen neu zu laden, die das andere Programm geändert hat. Diese Art von Vorfall wird als falsches Teilen bezeichnet, wenn die Daten in der Cache-Zeile, auf die jedes Programm zugreift, nicht miteinander in Beziehung stehen. Daher ist es eine Verschwendung von Verarbeitungsleistung und anderen Ressourcen, ein Programm zum erneuten Laden des Caches zu zwingen. Dies ist in den meisten Fällen ein Problem für ein Programm, das die Informationen in seinem Cache niemals ändert. Daher besteht kein Risiko, dass die Anwendung Änderungen überschreibt, die der andere Prozess vorgenommen hat.
Es gibt zwei weit verbreitete Möglichkeiten, um die Auswirkungen von falschem Teilen zu verhindern oder abzuschwächen. Die erste besteht darin, vor oder nach den Daten im Speicher leere Informationen hinzuzufügen und diese im Wesentlichen in eine separate Cache-Zeile zu zwingen, auf die kein anderes Programm zugreift. Die zweite Methode besteht darin, die Häufigkeit des Lesens und Schreibens in die Cache-Zeile so gering wie möglich zu halten. Komplexere Lösungen umfassen die Verwaltung auf Cache-Ebene oder sogar Änderungen an der Art und Weise, wie ein Betriebssystem die Freigabe handhabt.