Cos'è la falsa condivisione?
False condivisione è una situazione che può verificarsi in un programma per computer quando due applicazioni che eseguono contemporaneamente tentano di accedere alle informazioni nella stessa regione di memoria logica che ciascun programma o processo ha memorizzato nella propria cache. I dati nella cache di ciascuna applicazione vengono copiati da una fonte comune, quindi la modifica di una cache fa ricaricare l'altra dalla fonte. Il falso aspetto della condivisione sorge quando le modifiche apportate alla linea della cache da un programma non influiscono effettivamente i dati che il secondo programma sta utilizzando, nel qual caso costringere la cache da ricaricare è uno spreco di risorse di sistema e possono influire negativamente sulle prestazioni del programma. Il problema della falsa condivisione è difficile da rilevare, poiché non è un risultato diretto di qualsiasi codice contenuto all'interno delle applicazioni, sebbene esistono modi efficaci per prevenire la falsa condivisione, come lo spostamento dei dati che si trovano in una linea attualmente memorizzata nella cache su una linea separata.
Uno dei motivi principali per cui si può verificare una falsa condivisione si trova nel modo in cui un sistema operativo o hardware gestisce i dati di lettura e scrittura. Quando le informazioni da un disco rigido o altra fonte vengono lette o scritte da un programma, di solito vengono caricate in una cache temporanea in modo da poter accedere rapidamente. La quantità di informazioni memorizzata nella cache dalla posizione della sorgente è chiamata linea cache ed è un blocco logico di memoria che normalmente può essere tra 2 byte e 256 byte di lunghezza. In base a alcuni sistemi operativi o architetture di sistema, i programmi sono in grado di eseguire contemporaneamente, ad esempio nell'elaborazione parallela. Ciò significa che è possibile che due programmi separati tentino di accedere alle informazioni nella stessa linea di cache, quindi ogni programma avrà una propria copia dei dati di origine, causando potenzialmente le modifiche in una cache da non riflettere nell'altra cache, invalidando i dati in possesso.
Ci sono una serie di meccanismi impiegati per HANTLE la situazione in cui due programmi tentano di accedere alla stessa linea di cache, ma il risultato più spesso è che un programma è costretto a ricaricare la sua cache con le informazioni aggiornate che l'altro programma ha modificato. Questo tipo di incidente è noto come falsa condivisione quando i dati all'interno della linea della cache a cui ogni programma accede non sono correlati, quindi costringere un programma a ricaricare la cache è uno spreco di potenza di elaborazione e altre risorse. Questo più spesso è un problema per un programma che non modificherà mai le informazioni nella sua cache, quindi non vi è alcun rischio che l'applicazione sovrascrive
Esistono due modi prevalenti per prevenire o mitigare gli effetti della falsa condivisione. Il primo è quello di aggiungere informazioni vuote prima o dopo i dati in memoria, costringendole essenzialmente a una linea di cache separata a cui non viene accessibile da un altro programma. Il secondo metodo è limitare la frequenza di lettura e scrittura sulla linea della cache in modo che sia ricaricato come Little il più possibile. Soluzioni più complesse prevedono una gestione a livello di cache o addirittura modifiche a come un sistema operativo gestisce la condivisione.