[PLUTO-ildp] suggerimento traduzione SMP
CM
contardm a gmail.com
Gio 29 Mar 2007 22:03:50 CEST
> vi chiedo cosa sia il .... "fine grain locked" ....
Ciao,
il "fine grain locked" probabilmente lo si potrebbe tradurre in "lock
a granularità fine".
Chiedo venia, ma per spiegarne il funzionamento anche stavolta ci scappa
il "maestrino mode on":
qui si sta parlando di SMP (ovvero di processi elaborati in
contemporanea), di gestione dei segnali, di interrupt e di "cose legate
all'I/O" dove uno dei più grossi problemi è quello di garantire la
consistenza e la coesistenza dei processi elaborati in contemporanea.
Inoltre, "a naso", si sta parlando del caso in cui sono elaborati da un
solo processore su di un Linux 2.2 (quindi ancora in "età puberale"), il
multiprocessing simmetrico imporrà poi delle scelte radicalmente differenti.
Molto rozzamente, il lock funziona come una specie di semaforo: con lock
attivo il processo aspetta il suo turno, altrimenti il processo può
essere eseguito.
Di conseguenza, i programmatori possono scegliere tra due approcci:
- il "coarse grain lock" (coarse=grossolano, rozzo,), nel quale si
blocca tutto all'inizio del codice, si eseguono tutte le istruzioni che
servono e solo alla fine si rilascia il lock. E' facile e veloce da
implementare, risolve a priori tutti i problemi di concorrenza, ma ha
l'effetto di bloccare tutti gli altri processi per un tempo anche molto
lungo.
- il "fine grain lock", nel quale si cerca il più possibile di limitare
il numero di linee di codice per ogni singolo lock ed eventualmente
moltiplicando il numero dei punti in cui i lock viene attivato, con
tutte le implicazioni che questa scelta impone: codice più studiato e
lineare, migliore progettazione di dove mettere i lock, ecc... ciò
impone un maggiore rigore ed una maggiore cura del codice, ma il
risultato è un funzionamento più fluido dell'intero sistema.
Scusate per la spiegazione molto di massima, per la quale in molte parti
servirebbero delle puntualizzazioni, spero però di aver reso l'idea del
concetto che vi sta alla base. Per una migliore comprensione del
meccanismo questo è un ottimo link:
http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/performance/chapter_4_section_3.html
Un saluto,
Cont.
Maggiori informazioni sulla lista
pluto-ildp