<div>Diky za odpoved!<br></div><div><br></div><div>S pozdravem,</div><div><br></div><div>Cestmir Houska</div><br><div class="gmail_quote">2011/3/16 Martin Decky <span dir="ltr"><<a href="mailto:decky@d3s.mff.cuni.cz">decky@d3s.mff.cuni.cz</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hezky den,<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
uz nekolikaty den premyslime nad implementaci neblokujicich seznamu.<br>
Implementace v paperu, odkazovanem v rozsirenem prvnim zadani, jenom<br>
vypojuje uzly ze seznamu, ale nijak je nedealokuje. Staci implementace,<br>
ktera data dealokuje az po ukonceni prace se seznamem a nebo je potreba<br>
mit i podporu pro dealokaci uzlu?<br>
</blockquote>
<br></div>
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.<br>

<br>
Kdybychom striktne vyzadovali i zaintegrovani alokace a dealokace, vlastne bychom tim pozadovali implementaci uplneho RCU mechanismu.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Pokud by bylo treba i dealokovat, mam jeste jednu otazku - jako<br>
nejschudnejsi se mi zdaji reseni, ktera pouzivaji reference counting,<br>
ale k tomu potrebuju pouzit konstrukt, hodne podobny spinlocku, abych<br>
ziskal pointer z pameti a inkrementoval pamet na miste, kam ukazuje - to<br>
vse atomicky. V podstate by se jednalo o spinlock, ktery pri zamceni<br>
vypne interrupty a pri odemceni je zase zapne. Tak bude zaruceno, ze<br>
vlakno, ktere spinlock zamklo, nebude odswapovano uvnitr spinlocku, a<br>
tim padem nebude blokovat ostatni vlakna. Da se timto smerem jit, nebo<br>
je podobne uvazovani zcestne?<br>
</blockquote>
<br></div>
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.<br>
<br>
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.<br>

<br>
<br>
M.D.<br>
<br>
_______________________________________________<br>
OSy mailing list<br>
<a href="mailto:OSy@d3s.mff.cuni.cz" target="_blank">OSy@d3s.mff.cuni.cz</a><br>
<a href="https://d3s.mff.cuni.cz/mailman/listinfo/osy" target="_blank">https://d3s.mff.cuni.cz/mailman/listinfo/osy</a><br>
</blockquote></div><br>