Mi sapreste dare informazioni sui file .dll ?

I files con estensione .dll nei sistemi operativi della famiglia
Windows, contengono le cosiddette “librerie dinamiche”. L’acronimo infatti
significa Dynamic Link Library.

Questi files contengono il codice di sottoprogrammi che possono essere
richiamati all’interno di varie applicazioni. Per comprenderne il significato
occorre spiegare brevemente il procedimento con cui un programma eseguibile viene creato.

  • Il programmatore scrive il codice sorgente del programma usando un
    linguaggio di programmazione. Il programma viene scritto utilizzando
    ampiamente
    sottoprogrammi, ovvero parti di codice già disponibili
    perché già presenti nel sistema operativo, oppure fornite
    da altri, che svolgono funzioni di cui tutti i programmi possono
    avere bisogno.

  • Il codice sorgente viene tradotto in codice oggetto mediante
    un compilatore.

  • Infine il codice oggetto deve essere “collegato” al codice dei
    sottoprogrammi usati, con una operazione detta link, per generare il programma eseguibile.

I sottoprogrammi vengono forniti sotto forma di vari files, detti librerie, che in sostanza raccolgono il codice oggetto di gruppi di sottoprogrammi che svolgono
funzioni collegate.

Il modo più
semplice e tradizionale per generare il programma eseguibile consiste
nell’aggiungere al codice oggetto del programma tutti i sottoprogrammi
necessari e creare un file (che nei sistemi Windows ha la tradizionale
estensione .exe) che raggruppa tutto il codice, pronto
per essere eseguito. Questa procedura viene detta “link statico”.

Se si analizza più in dettaglio il risultato di un link statico,
è facile rendersi conto che, di fatto, dato che gran parte dei programmi
utilizzano sempre o comunque spesso le stesse funzioni, molti files
eseguibili contengono una gran quantità di codice identico.
Lo stesso vale quando i programmi vengono caricati nella memoria centrale
per essere eseguiti1: se ogni programma in esecuzione utilizza, ad esempio, la funzione open del sistema operativo per accedere ad un file,
il codice di questa funzione viene caricato più volte in memoria,
con evidente spreco di spazio.

Le “librerie dinamiche” hanno lo scopo di ovviare a questo inconveniente.
L’operazione di “link” con una libreria dinamica non copia il codice del
sottoprogramma nel file eseguibile, ma lascia nel file eseguibile solo
un riferimento al file
dll contenente il sottoprogramma.
L’effettivo trasferimento in memoria del codice del sottoprogramma avviene solo
al momento dell’esecuzione del programma. Inoltre tale codice viene copiato in memoria
solo la prima volta, eventuali altri programmi che richiedono lo stesso
codice possono utilizzare la copia già presente.
In questo modo, soprattutto per quanto riguarda le librerie del sistema operativo
che sono le più usate, si ha un risparmio sia di occupazione di memoria
che di tempo (dato che il codice viene letto dal disco una sola volta).

Questa tecnica ha inoltre il vantaggio di consentire a tutti i programmi
di beneficiare degli aggiornamenti che possono essere fatti alle librerie
dinamiche. Un programma generato in modo statico, infatti, continuerà
ad usare le copie dei sottoprogrammi che ha “raccolto” nel momento in cui
è stato generato il file eseguibile, anche se la libreria viene
successivamente aggiornata. Un programma generato in modo dinamico utilizza
invece il codice che si trova nella libreria al momento dell’esecuzione.


Nota 1. I moderni sistemi operativi multitasking
prevedono che numerosi programmi siano contemporaneamente attivi e quindi
risiedano contemporaneamente nella memoria centrale.