[OSy] Neblokujici seznamy
Martin Decky
decky at d3s.mff.cuni.cz
Wed Mar 16 11:53:10 CET 2011
Hezky den,
> uz nekolikaty den premyslime nad implementaci neblokujicich seznamu.
> Implementace v paperu, odkazovanem v rozsirenem prvnim zadani, jenom
> vypojuje uzly ze seznamu, ale nijak je nedealokuje. Staci implementace,
> ktera data dealokuje az po ukonceni prace se seznamem a nebo je potreba
> mit i podporu pro dealokaci uzlu?
Pro splneni zadani urcite staci varianta s doprednou alokaci a deferred
dealokaci prvku seznamu. Cilem zadani je ziskat praktickou zkusenost se
zakladnimi operacemi nad blokujicim a neblokujicim seznamem (insert,
find, remove) s pouzitim jiz naalokovanych prvku.
Kdybychom striktne vyzadovali i zaintegrovani alokace a dealokace,
vlastne bychom tim pozadovali implementaci uplneho RCU mechanismu.
> Pokud by bylo treba i dealokovat, mam jeste jednu otazku - jako
> nejschudnejsi se mi zdaji reseni, ktera pouzivaji reference counting,
> ale k tomu potrebuju pouzit konstrukt, hodne podobny spinlocku, abych
> ziskal pointer z pameti a inkrementoval pamet na miste, kam ukazuje - to
> vse atomicky. V podstate by se jednalo o spinlock, ktery pri zamceni
> vypne interrupty a pri odemceni je zase zapne. Tak bude zaruceno, ze
> vlakno, ktere spinlock zamklo, nebude odswapovano uvnitr spinlocku, a
> tim padem nebude blokovat ostatni vlakna. Da se timto smerem jit, nebo
> je podobne uvazovani zcestne?
Temito uvahami mozna jdete jeste o kousek dal nez jde klasicke RCU (kde
je alokace i dealokace stale explicitni operace), vlastne uvazujete o
necem, co by se dalo nazvat neblokujici garbage collector.
Jinak spinlock, ktery vypina preruseni, neni nic tak zvlastniho, ale
porad jeste bych to nepovazoval za "neblokujici" primitivum. Moznosti,
jak implementovat wait-free reference counting, se daji dohledat v
odbornych clancich, ale je to zcela nad ramec toho, co pozadujeme v
zadani semestralky.
M.D.
More information about the NSWI004
mailing list