A titolo di pura curiosità riporto l'articolo "linkato" da Avro.
Ritengo più interessante la "Risposta completa" che si trova in fondo, comunque, visto che me ne sono accorto "in itinere", riporto tutte le versioni della risposta.
PREBINDING: che cos’è?
Di Bill Bumgarner(27 agosto 2002)
Risposta brevissima
Con il System 10.1 non c’è mai stato bisogno di aggiornare il prebinding, al contrario di quanto molti potessero pensare. L’unica occasione in cui succedeva che le informazioni del prebinding fossero da aggiornare capitava quando un’applicazione veniva installata per trascinamento (drag and drop) sul volume di avvio. In questo caso solo le informazioni di prebinding di quella applicazione risultavano superate e aggiornare il prebinding riguardava solo il tempo necessario per lanciare l’applicazione appena installata.
A partire da Jaguar (System 10.2) le informazioni di prebinding vengono automaticamente aggiornate, essendo una normale attività del System. Non c’è mai alcun bisogno di aggiornare manualmente le informazioni di prebinding.
Il prebinding riguarda solo il tempo di avvio di un’applicazione e solo applicazioni native su OS X. Non riguarda in alcun modo la velocità di esecuzione di un’applicazione, la velocità con cui si possono ridimensionare o spostare le finestre o la velocità con la quale il Finder aggiorna le varie finestre. Non c’è quindi alcun motivo o beneficio nell’aggiornamento del prebinding su base regolare.
Risposta breve
Con OS X 10.1 e precedenti, l’unica occasione in cui si richiedeva l’aggiornamento del prebinding si verificava dopo l’installazione di una nuova applicazione sul volume di avvio (non si può aggiornare il prebinding di applicazioni che si trovano su volumi non di avvio), applicazione che non usava l’installer Apple. Gli aggiornamenti di Sistema dovrebbero aggiornare il prebinding (la fase realmente lunga durante l’ottimizzazione del Sistema) per cui non vi è bisogno di aggiornare il prebinding dopo l’aggiornamento di Sistema.
Il prebinding riguarda solo il tempo di avvio di un’applicazione. Applicazioni su volumi diversi da quello di avvio non possono vedere aggiornata l’informazione di prebinding (anche se il legame tra le applicazioni e le librerie di Sistema può essere stabilito).
A partire da OS X 10.2 il prebinding viene aggiornato automaticamente. Se si lancia un’applicazione con informazione di prebinding vecchia, scatta un meccanismo automatico che fa aggiornare le informazioni di prebinding (così come tutte le librerie che l’applicazione usa).
In altre parole, su OS X 10.1 e precedenti non c’era mai bisogno di aggiornare prebinding se non subito dopo l’installazione di una nuova applicazione e solo per applicazioni installate sul volume di avvio. E anche in questo caso l’aggiornamento del prebinding ottimizzava solo il tempo di lancio della nuova applicazione.
Dal 10.2 non c’è ragione di aggiornare manualmente le informazioni di prebinding.
Risposta lunga
Sotto Mac OS X un meccanismo chiamato prebinding viene usato per accelerare il lancio delle applicazioni. Le applicazioni su Mac OS X, come quelle di ogni altro sistema operativo moderno, sono composte da ben più di un singolo file che viene eseguito dal computer. Le applicazioni si reggono su librerie piene di funzionalità. Alcune librerie sono fornite dal produttore del sistema operativo (Apple fornisce più di150 librerie nell’installazione normale di OS X. Da Cocoa a Carbon alle API per i servizi Web alle librerie usate da iPhoto per parlare al vostro account mac.com tutte le funzioni sono implementate nelle librerie).
Invece di includere direttamente il contenuto delle librerie in ogni applicazione (processo conosciuto come static linking), uno sviluppatore fa sì che la sua applicazione si colleghi dinamicamente alle librerie necessarie. Ciò presenta due distinti vantaggi.
Il primo. Se sono aperte cinque applicazioni che usano lo stesso framework Cocoa (un framework è un meccanismo che contiene in un’unica directory una libreria dinamica e tutte le risorse ad essa associate), ecco che scatta il meccanismo della memoria condivisa e tutte le cinque applicazioni condividono lo stesso blocco di memoria per contenere una copia della libreria dinamica Cocoa. Ciò comporta non solo un risparmio di memoria ma un vantaggio per altre applicazioni che usano il framework Cocoa; infatti quelle che vengono lanciate dopo che almeno un’applicazione che usa il framework Cocoa è già stata aperta non dovranno più caricare il framework Cocoa e così si apriranno più velocemente.
Il secondo. Quando Apple rilascia un aggiornamento di Sistema che aggiorna i framework del System, le applicazioni che vi si collegano dinamicamente trarranno automaticamente vantaggio dalle nuove caratteristiche presenti nella nuova versione del framework o della libreria collegata dinamicamente.
Ritornando al prebinding
Una libreria dinamica è solo una grossa collezione di funzionalità che un’applicazione può usare per implementare qualunque caratteristica le serva. Quando un’applicazione carica dinamicamente una libreria, deve trovare tutte le varie funzionalità prima di poterle usare. Ogni funzionalità (sia essa funzione, classe, costante, variabile globale o altro) è rappresentata da un simbolo.
Mentre l’applicazione si sta lanciando cerca ogni simbolo di cui ha bisogno in tutte le librerie dinamiche che usa e poi "abbina" (bind) quel simbolo a se stessa. Una volta che un simbolo è "abbinato" (bound), l’applicazione può usare quel simbolo (funzione, classe, costante, globale…) come parte della sua implementazione.
Il processo di “abbinare” ciascun simbolo è molto lungo. Possono essere migliaia o decine di migliaia i simboli che devono essere trovati. Non solo l’applicazione deve “abbinare” tutti i simboli dalle librerie che usa, ma ogni libreria deve a sua volta “abbinare” tutti i simboli che lei stessa prende da altre librerie.
È ovvio che l’eliminazione del processo manuale di “abbinamento” accelera il lancio delle applicazioni.
Il prebinding è il mezzo con cui i tempi di lancio sono abbreviati su OS X grazie all’eliminazione del processo di “abbinamento” manuale. Quando un’applicazione o una libreria dinamica sono “abbinate prima” (pre-bound) significa che contengono già una cache di tutti i simboli necessari. Quando l’applicazione viene lanciata, automaticamente usa questa cache (deposito) di informazioni in modo che tutti i simboli sono “abbinati”, senza bisogno di affrontare l’ardua impresa di “abbinare” ogni simbolo individualmente.
Ogni volta che viene costruita una nuova versione di una libreria, tutte le posizioni dei simboli al suo interno cambiano. Quando questo succede tutte le informazioni di prebinding relative alla versione precedente non sono più valide. Al lancio di un’applicazione, OS X automaticamente riconosce la situazione e “ricade” sul processo di “abbinamento” manuale.
Con 10.2, il System aggiorna automaticamente le informazioni di prebinding ogni volta che viene lanciata un’applicazione che manca di un’informazione di prebinding completa. Ciò avviene automaticamente ed in background.
Conclusione e riflessioni
Pochi sono gli aspetti di OS X che sono stati così fraintesi come il prebinding. Troppe sono le utility che pretendono di avere effetti clamorosi sulle prestazioni del Sistema attraverso il puro e semplice prebinding. Spero che questo documento getti un po’ di luce sull’intera faccenda. È stato scritto da uno sviluppatore di una certa esperienza che si è informato a fondo e che si è incontrato un paio di volte con l’ingegnere di Apple (che ha richiesto l’anonimato) responsabile dell’infrastruttura del prebinding in OS X.
Ringrazio Gran Maestro per la preziosa revisione del testo.
Avro, decidi tu se lasciare le diverse risposte (molto breve, breve, lunga)o se usare (come io suggerirei…) solo quella lunga, che mi pare più istruttiva…
Grazie!
:vecchietto:
Connect With Us