Re[2]: [pso] tema1 linux - kmalloc in spinlock
George Adrian Drumea
pso@cursuri.cs.pub.ro
Sun, 20 Mar 2005 13:49:17 +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.
Insa fiind un kernel preemptible, acest busy waiting poate aparea (mai
rar probabil) si in lipsa acestui kmalloc, nu? Inca o intrebare (ca
deja cred ca am insistat prea mult pe asta): kfree e safe sa folosit
in spinlocks?
--
Best regards,
George mailto:georgedrumea@rdslink.ro