Matteo Ianeselli ha scritto:
Il gio, 2004-05-27 alle 13:24, airwood65 ha scritto:Grazie dell'escursus.
Qual'e' la differenza tra "Linux" e "Linux Smp"?
In breve: "Linux" è un kernel per le macchine con una CPU sola, mentre "Linux Smp" è un kernel per le macchine con più di una CPU.
SMP = (s)ymmetric (m)ulti(p)rocessing, e indica architetture con più CPU che concorrono tra loro alla pari all'esecuzione del codice e alla supervisione delle operazioni di I/O.
Meno in breve:
Il multitasking su una CPU sola fornisce solo l'impressione che più cose avvengano contemporaneamente: in realtà il kernel tira avanti tutti i processi un poco per volta, ma passando molto rapidamente da un processo all'altro così da dare l'impressione che tutti vadano avanti contemporaneamente. E se la CPU è una sola, un pezzo di codice qualsiasi può assumere in perfetta sicurezza che mentre è in funzione lui non ci sono altri a modificare le cose in giro senza che lui lo sappia.
Con due o più CPU il discorso cambia: un pezzo di codice non può più fare l'assunzione di cui sopra, perché ci potrebbe essere dell'altro codice su un'altra CPU che va a toccare risorse che sta usando lui in quel momento. Per cui occorre implementare tutta una serie di lock per impedire che tutti parlino assieme e che non ci si capisca più nulla.
Ora: tutto il codice relativo ai lock (e a problemi sul come assegnare i vari processi alle varie CPU) è perfettamente inutile se si ha una CPU sola; anzi, probabilmente consuma tempo macchina per niente (non tanto, ma più di zero). In Linux (il kernel) il supporto per più CPU è opzionale, e se non viene incluso come opzione di compilazione, tutto il codice di cui sopra vien lasciato fuori, ottenendone un kernel più piccolino e un poco più efficente. Notare che moduli del kernel compilati col supporto SMP non sono compatibili con kernel senza il supporto, e viceversa.
Per analogia: in un monologo si può fare a meno del moderatore, mentre nei dibattiti no.
Peraltro, un kernel col supporto SMP funziona comunque anche con una CPU sola (anche se in maniera meno efficiente), e kernel senza supporto SMP dovrebbero funzionare anche su macchine con più di una CPU, solo che ne viene usata una sola (era vero una volta, ora non so).
-- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx