[so] Cursul 5

Irina Preșa irina.presa at gmail.com
Fri Mar 23 02:24:37 EET 2012


2012/3/23 Mirea Bogdan-Stefan <b.mirea at yahoo.com>:
> Andrei Draga <andreidraga at ...> writes:
>
>>
>> La slide-ul 25/44 scrie despre o implementare posibila a mutex-ului.Aceasta
> este :"simpla si eficienta ( nu necesita trap in kernel daca regiunea critica
> este libera )"La ce se refera acest cuvant "trap" ?
>>
> Trap este o intrerupere software.
>

Întradevăr, trapul este o întrerupere software ce va fi tratată de
kernel. Apelurile de sistem vor face și ele un trap, pentru a ajunge
la implementarea lor din kernel. În exemplul din curs, în cazul în
care nu poate obține lockul, procesul curent execută apelul de sistem
sched_yield pentru a ceda procesorul astfel încât să nu aștepte
blocant (busy waiting) eliberarea lockului.

În general, un trap este destul de costisitor. Înainte să cedeze
controlul kernelului, se face trecerea la stiva kernel și se salvează
starea procesului curent (registre, flag-uri, etc). Apoi se execută
partea de kernel, în cazul de față se sare la implementarea funcției
sched_yield. La întoarcere (după sched_yield se va întoarce abia la
replanificarea procesului) se restaurează starea procesului care își
reia execuția de unde a rămas.

--
Irina


More information about the so mailing list