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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads