[OSy] Atomicky test and set

Gabriel Zabusek gabriel.zabusek at gmail.com
Sat Nov 22 19:14:21 CET 2008


Ahoj,

Tento problem som uz uspesne vyriesil, snad neni proti pravidlam
pokial ti poviem, ze sa skutocne jedna o dobru kombinaciu LL a SC.
Podla manualu mipsu je potreba davat velky pozor na to aby v blocku
medzi LL a SC nedoslo k istym Load/Store akciam z/do pamati. Podla
manualu to moze 'rozbit' funkcnost tychto instrukcii (je teda potreba
pouzivat registry, pripadne vhodne zvolene kombinacie 'constraints' a
ich modifikatorov v inline asm u IO operandov). Co sa tyka funkcnosti
tychto instukci tak dost zhruba povedane: pamet, ktora bola 'oznacena'
pomocou LL nemoze byt pred zavolanim SC modifikovana, procesor to
nepovoli. V mojom pripade mi robilo najvatcsie problemy at&t syntax
inline asm v gcccku - som skor zvyknuty na klasicku intelacku (nasm)
syntax - tento link mi veci dost objasnil:

http://www.ibm.com/developerworks/linux/library/l-ia.html

co sa tyka konkretnej implementacie: nerad by som bol penalizovany za
radenie, takze pokial to neni proti pravidlam (o com dost
pochybujem...) tak ti moju implementaciu rad poslem - netvrdim ovsem,
ze musi byt nutne spravna - nicmenej zatial sa zda, ze funguje :-).

Zatial a pekny vecer,
Gabriel Zabusek


2008/11/22 Martin Suchan <martin.suchan at gmail.com>:
> Zdravim,
> chtel bych se zeptat, zda by se nekdo nepodelil o assemblerovskou
> implementaci atomicke funkce "test and set", ktera je nezbytna pro
> fungovani spinlocku a i dalsich sychronizacnicich primitiv. Bohuzel z
> assembleru znam jen mizive informace a studovat manual kvuli jedne/par
> funkcim se mi zda trochu moc.
>
> Zrejme se bude jednat o dobrou kombinaci instrukci Load linked a Store
> conditional, nevim ale, jak mezi ne vlozit test na nenulovost var a
> jump mimo, kdyz je gtz + druhou vetev prirazeni a test, zda mi do toho
> nikdo nevstoupil. Nevim, co ma kazda funkce za sideeffecty a v jakem
> poradi/kombinaci je lze zapsat spravne za sebou, aby delali to, co
> maji.
>
>
> A jeste bych mel dotazy, u cond variable se ma vlakno pri timeout 0 a
> neuspechu pred opetovnym zamcenim mutexu aspon jednou vzdat procesoru.
> Ma se (doporucuje se) takto vzdavat i u dalsich timeout funkci, jako
> thread_join_timeout, mutex_lock_timeout, semaphore_down_timeout?
>
> Dale pri odemceni mutexu se maji probudit vsechna zablokovana vlakna,
> neni rozumnejsi odblokovat jen jedno, kdyz zamek muze vlastnit jen
> jedno? (Jina situace bude asi u rwlocku, kdy se odemyka write zamek a
> cekaji na odemceni read vlakna.)
>
>
> Diky
> S pozdravem Martin Suchan
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>



-- 
..............................................................................................................................................

"...the finding of new proofs for known truths is often at least as
important as the discovery itself..."




More information about the NSWI004 mailing list