Linking dinamico vs Static Linking

January 27

Nello sviluppo di software, una biblioteca è una raccolta di strumenti o risorse utilizzate per creare un programma. Queste risorse possono includere precedenti codice, subroutine, le classi, i valori o le specifiche scritte. Durante la compilazione, un editor di collegamento conosciuto come un linker riempie programma fa riferimento a biblioteca e combina i moduli di oggetto nel programma che crea un file eseguibile. Tipicamente collegamento è effettuato in uno dei due stili - statici e dinamici. Ognuno ha vantaggi e svantaggi.

Linking Biblioteca

La differenza principale tra i due metodi di collegamento è come la libreria è collegato al file eseguibile. In collegamento statico, tutte le routine di libreria necessari vengono copiati direttamente nel file eseguibile del programma. Il file è completamente autonomo e non richiede risorse della biblioteca aggiuntive per iniziare. In collegamento dinamico, i riferimenti a una libreria condivisibili sono collegati nel programma eseguibile, invece, e separata link biblioteca routine necessarie all'avviamento.

Dimensione del file

I programmi con collegamento statico tendono a richiedere più spazio su disco rispetto ai programmi collegati dinamicamente, perché tutti i riferimenti di libreria sono direttamente codificati nel file eseguibile. In un sistema dinamico, la biblioteca è un file separato che carica parallelamente al file eseguibile. Con i dati parte non direttamente del programma, dimensione complessiva file di programma viene ridotta.

Più programmi vs. Indipendente

programmi staticamente collegati sono completamente autonomo, che non richiede risorse aggiuntive per essere funzionale se vengono spostati in un nuovo computer. Tuttavia, se più programmi che utilizzano gli stessi riferimenti di libreria sono collegate in modo statico, ogni programma deve avere il proprio insieme di riferimenti alla libreria codificati in esso. Il collegamento dinamico richiede la libreria esterna alla funzione, che richiede sia il programma e la libreria di essere trasportati per poter funzionare correttamente. Tuttavia, più programmi che utilizzano la stessa biblioteca possono essere collegati alla stessa libreria. Ciò può ridurre l'utilizzo complessivo dello spazio su disco, come una singola libreria può servire molti programmi che altrimenti avrebbero bisogno le proprie librerie codificati separatamente in loro.

tempi di caricamento

Perché tutto un programma collegato staticamente bisogno è codificato a destra in esso, i programmi di carico statico molto più velocemente rispetto ai loro omologhi dinamici. programmi dinamicamente legati bisogno di caricare la libreria e richiamare le informazioni da esso come il programma stesso sta caricando, invece di un carico retta che è possibile in collegamento statico.

Utilizzo della memoria

Durante l'esecuzione di un unico processo, il collegamento statico può utilizzare meno memoria perché tutto carichi in una sola volta. Non vi è alcun file separato che deve funzionare in modo da avviare il programma. Tuttavia, quando il numero di processi aumenta, il contrario diventa vero. Quando si esegue più processi, ogni processo legato staticamente deve correre individualmente e chiamare su di esso è codificato risorse. Una serie di programmi legati a una singola libreria necessario disegnare solo sulla singola biblioteca, limitando la quantità di dati necessari per caricare di eseguire il processo e riducendo notevolmente la quantità di memoria utilizzata.