Što je transakcijska memorija?

U softveru, shema transakcijske memorije je tijek radnje za višenitno programiranje koje koristi transakcije koje su vrlo slične onima koje koristi baza podataka. Kada dvije ili više niti pokušavaju pristupiti istim podacima u isto vrijeme, mnoge različite nepoželjne situacije mogu rezultirati slučajevima u kojima ishod programa ovisi o redoslijedu pristupa niti. Obično je poželjan jedan redoslijed, a kod višenitnog rada brave su prevladavajući i najjednostavniji način da se osigura da samo jedna nit istovremeno ima pristup određenom resursu.

Ovaj pristup transakcijskoj memoriji sadrži više problema u pogledu zaključavanja u višenitnosti. Zaključavanje može postati trajno ako se dogodi neka vrsta neočekivane pogreške, a zaključavanja mogu dovesti do nepredvidivih problema s istovremenošću, poput zastoja ili inverzije prioriteta. Kao rezultat toga što su zaključavanja vrlo fino zrnasta, još jedan problem uključuje kod koji na kraju provede većinu vremena između zaključavanja, promjene konteksta i otključavanja. Ovo je ključni problem jer može rezultirati time da kod troši više vremena na ove radnje nego na drugi, važan posao u programu. Suprotno tome, grubo-zrnate brave mogu uzrokovati smanjenu učinkovitost obrade i smanjenu istodobnost.

Problemi u transakcijskoj memoriji rješavaju se naprednim bravama, uključujući “blok za zaključavanje” iz C#, brave za čitanje-pisanje, zapreke za pisanje itd. Jedan od glavnih prioriteta u vezi s transakcijskom memorijom je da nema zaključavanja i nepotrebnog vremena obrade zaključavanja . Obično se slaže da je struktura podataka koja se dijeli bez zaključavanja ako njezine operacije ne zahtijevaju međusobno isključivanje. Strukture podataka koje su dijeljene i bez zaključavanja izbjegavaju uobičajene probleme sa standardnim tehnikama zaključavanja ako su u sustavima koji su vrlo konkurentni.

Model koherencije i dosljednosti transakcijske memorije (TCC) je novi, predloženi model za dijeljenu memoriju. Prema modelu, atomske transakcije su uvijek osnovne jedinice sljedećeg: paralelni rad, memorijska koherentnost, komunikacija i konzistentnost memorijske reference. TCC model također čini paralelni softver jednostavnijim eliminirajući sinkronizaciju koja koristi standardne brave ili semafore. Preko hardvera, TCC također kombinira svako pisanje iz svake regije transakcije u jedan paket kako bi atomski emitirao paket u memorijsko stanje koje se trajno dijeli. Uz pojednostavljeni hardver za koherenciju, to znači da postoji smanjenje potrebnih poruka niskog mirovanja i potpuna eliminacija određenih, standardnih protokola koherencije.