Read-Copy-Update è un meccanismo di sincronizzazione presente in alcuni sistemi operativi moderni, spesso usato in alternativa ai lock di scrittura-lettura. Sono caratterizzati da un ritardo di lettura nella pratica nullo, compensato da una fase di scrittura più dispendiosa. Per questo motivo si adattano particolarmente alle strutture dati frequentemente lette e raramente scritte[1]. Il funzionamento ricorda il pattern publish/subscribe: la lettura avviene all'interno di sezioni critiche in cui il thread lettore vede una versione coerente del dato, mentre chi scrivere deve "pubblicare" il nuovo valore. In questo modo si crea il concetto di versioni multiple dell'oggetto condiviso[2].
Funzionamento
[modifica | modifica wikitesto]Il concetto chiave del meccanismo RCU è che il thread lettore non può entrare in attesa. Questo causa i ben noti problemi di sincronizzazione: come garantire che nessuno legga se l'aggiornamento del dato non è ancora terminato e come garantire che una sequenza di letture garantisca il ritorno dello stesso valore.
Supporto a RCU
[modifica | modifica wikitesto]Sistemi operativi:
- Linux kernel dalla versione 2.6[3]
- DragonFly BSD
- DYNIX/ptx
- K42
Note
[modifica | modifica wikitesto]- ^ Read-Copy Update Mutual Exclusion for Linux, su lse.sourceforge.net, Linux Scalability Effort, 2001.
- ^ Paul E. McKenney, What is RCU, Fundamentally, su researchgate.net, 2015.
- ^ What is RCU, Fundamentally?, su lwn.net, 2007.
- ^ Userspace RCU, su liburcu.org.