[Linuxtrent] Re: Spin lock,monoprocessore

  • From: Matteo Ianeselli <m.ianeselli@xxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sat, 6 Apr 2002 11:37:12 +0200

Il computer di pinguin75@xxxxxxxxx, diventato autocosciente, ha scritto:

 > Qualcuno riesce a spiegarmi l'arcano??

Di kernel me ne intendo ancora meno, ma gli spinlock si chiamano cosi`
perche`, se non ho capito male, le altre CPU vengono fatte girare a
vuoto (spin) finche chi possiede lo spinlock non lo rilascia,
garantendo in questo modo che ci sia una sola CPU che esegue delle
operazioni.

Chiaramente cio` non ha molto senso nel caso di una CPU sola, ma e`
perfettamente sensato nel caso di sistemi con piu` CPU.

Se guardi in /usr/src/linux/include/linux/spinlock.h, vedi che per
sistemi non SMP (macro SMP non definita) le varie macro relative agli
spinlock sono definite come un ciclo ``do { } while(0)'' che non fa
nulla e che viene rimosso dall'ottimizzatore del gcc.

Chiaro che poi il sorgente e` lo stesso sia per sistemi monoprocessore
che per sistemi multiprocessore, quindi bisogna acquisire e mollare
gli spinlock nei punti giusti se si vuole che un pezzo di codice
funzioni anche su macchine SMP.
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: