Skip to main content

Cos'è la memoria transazionale?

Nel software, lo schema della memoria transazionale è una linea di azione per la programmazione multithread che utilizza transazioni molto simili a quelle utilizzate da un database.Quando due o più thread tentano di accedere agli stessi dati contemporaneamente, molte diverse situazioni indesiderate possono comportare casi in cui il risultato di un programma dipende dall'ordine di accesso al thread.Di solito, si desidera un ordine e in multithreading, i blocchi sono il modo predominante e semplice per garantire che un solo thread abbia accesso a una risorsa specifica alla volta.

Questo approccio alla memoria transazionale contiene più problemi per quanto riguarda i blocchi in multithreading.Un blocco può diventare permanente se si verifica una sorta di errore imprevisto e le serrature possono causare problemi imprevedibili con concorrenza, come il deadlock o l'inversione prioritaria.A causa del fatto che le serrature sono molto a grana molto fine, un altro problema include il codice che alla fine si spegne per trascorrere la maggior parte del tempo tra il blocco, il cambio di contesto e lo sblocco.Questo è un problema cruciale perché può comportare la spesa del codice più tempo su queste azioni che nel fare altri lavori importanti nel programma.Al contrario, i blocchi a grana grossolana possono causare una riduzione delle prestazioni di elaborazione e una riduzione della concorrenza.

I problemi nella memoria transazionale sono affrontati da blocchi avanzati, incluso il "blocco di blocco" da C#, blocchi di lettura-scrittura, barriere di scrittura, ecc.Le priorità principali per quanto riguarda la memoria transazionale è non avere blocchi e tempo di elaborazione dei blocchi non necessari.Di solito si concorda che una struttura di dati che è condivisa è priva di blocchi se le sue operazioni non sono necessarie esclusive reciproche.Le strutture di dati che sono condivise e prive di blocchi evitano problemi comunemente associati con tecniche di bloccaggio standard se si trovano in sistemi altamente simultanei.

Il modello di coerenza della memoria transazionale e coerenza (TCC) è un nuovo modello proposto sulla memoria condivisa.Secondo il modello, le transazioni atomiche sono invariabilmente unità di base delle seguenti: lavoro parallelo, coerenza della memoria, comunicazione e coerenza del riferimento alla memoria.Il modello TCC rende anche più semplice il software parallelo eliminando la sincronizzazione che utilizza blocchi o semafori standard.Attraverso hardware, TCC combina anche ogni scrittura da ciascuna regione di occorrenza di transazione in un pacchetto per trasmettere atomicamente il pacchetto in uno stato di memoria che è permanentemente condiviso.Oltre all'hardware di coerenza semplificato, ciò significa che è necessaria una riduzione dei messaggi a bassa domancia e una completa eliminazione di determinati protocolli di coerenza standard.