Read-copy-update
synchronizační primitivum založené na vzájemném vyloučení From Wikipedia, the free encyclopedia
Remove ads
Read-copy-update (RCU) je v informatice jedno ze synchronizačních primitiv používaných pro vzájemné vyloučení[pozn. 1] a může být někdy využito jako alternativa k zámkům čtenářů–zapisovatelů. RCU zajišťuje velmi nízkou režii a neblokující čtení, avšak může být náročné na prostor, protože musí pro již existující čtenáře zachovat původní kopii dat (pouze do chvíle, než poslední čtení původních dat skončí).</ref>
Remove ads
Princip použití
Název je odvozen ze způsobu, jakým se RCU používá pro aktualizaci spojové struktury na místě. Vlákno, které potřebuje strukturu modifikovat musí provést následující kroky:
- vytvořit novou strukturu,
- zkopírovat data ze staré struktury do nové, a uložit si ukazatel na starou strukturu,
- upravit novou (zkopírovanou) strukturu,
- aktualizovat globální ukazatel, aby ukazoval na novou strukturu,
- uspat se, dokud jádro operačního systému nezjistí, že žádný proces nečte starou strukturu, např. pomocí
synchronize_rcu()v linuxovém jádře, - po probuzení jádrem uvolnit starou strukturu.
Aby vlákno mohlo modifikovat strukturu, musí vytvořit její kopii, proto se metoda nazývá „read-copy update“. Zkratka „RCU“ byla jedním z mnoha příspěvků linuxové komunity. Jinými názvy pro podobné techniky je „pasivní serializace“ a „MP defer“ od programátorů VM/XA a „generace“ od programátorů K42 a Tornado.
Remove ads
Odkazy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads