[pso] tema1 linux - kmalloc in spinlock

Octavian Purdila pso@cursuri.cs.pub.ro
Sun, 20 Mar 2005 13:23:45 +0200


On Sunday 20 March 2005 01:06 pm, George Adrian Drumea wrote:
>
> Iarasi devin teoretic :)... e corect in sensul ca asa e mai sigur ca e
> bine? Intrebarea mea este daca in cazul de fata (spinlock strict in
> niste hookuri de syscalls) poate aparea deadlock daca sleep? Dupa cum
> vad eu, deadlock poate sa apara daca: un proces intra intr-un syscall
> si face spin_lock, apoi apeleaza kmalloc si este intrerupt de un alt
> proces care incearca si el spin_lock; al doilea proces se blocheaza
> asteptand primul proces sa faca spin_unlock; deadlock ar fi doar daca
> primul proces asteapta dintr-un motiv sau altul ca primul sa-si
> termine executia, or acest lucru nu cred ca este posibil aici (sau ma
> insel?); cum ar putea primul proces sa fie obligat sa astepte
> terminarea executiei celui de-al doilea?

Nu este deadlock, dar ajungi la un busy-waiting cu o durata foarte mare. 
Practic cel de al doila proces o sa astepta cel putin o cuanta de timp si o 
sa blocheze si celelalte procese.

tavi