Differenza tra linker e caricatore

Differenza chiave - Linker vs caricatore
 

Un programma per computer è usato per dare istruzioni al computer. È scritto usando un linguaggio di programmazione specifico. Linguaggi di programmazione come C, Java sono linguaggi di programmazione di alto livello e sono comprensibili dagli umani ma non dal computer. Pertanto, un programma di alto livello viene convertito in linguaggio macchina utilizzando un traduttore di lingua. Un programma scritto usando un linguaggio di alto livello è un codice sorgente. Dopo la conversione, il codice tradotto viene chiamato codice oggetto. Il linker e il loader sono due programmi software utilizzati per l'esecuzione del programma. Questo articolo discute la differenza tra Linker e Loader. Linker è il software che collega il codice oggetto con file aggiuntivi come i file di intestazione e crea un file eseguibile con estensione .exe. Il loader è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale. Questo è il differenza fondamentale tra Linker e Loader.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è Linker
3. Cos'è Loader
4. Relazione tra linker e loader
5. Confronto fianco a fianco - Linker vs Loader in forma tabulare
6. Sommario

Cos'è Linker?

Un programma per computer è un insieme di istruzioni fornite a un computer per eseguire un determinato compito. Un programma per computer può essere scritto usando un linguaggio di programmazione. La maggior parte dei linguaggi di programmazione è una programmazione di alto livello. Sono facilmente comprensibili e leggibili dal programmatore. Queste lingue seguono una sintassi simile alla lingua inglese. Alcuni esempi di linguaggi di alto livello sono Java, C e Python. Un programma scritto usando un linguaggio di programmazione di alto livello è noto come il codice sorgente, il file sorgente o il programma sorgente. L'estensione del codice sorgente dipende dal linguaggio con cui è stato sviluppato. Se il codice sorgente è scritto in C ++, l'estensione del file è .cpp. Se il codice sorgente è scritto in Python, l'estensione è .py.

Anche il codice sorgente è comprensibile dal programmatore; non è comprensibile dal computer. Pertanto, il codice sorgente deve essere convertito in un formato comprensibile dalla macchina utilizzando un traduttore di lingua. Può essere un compilatore o un interprete. Il codice tradotto è noto come codice oggetto. Il codice oggetto è in linguaggio macchina. Consiste di zeri e una volta. Il computer può capire direttamente il codice dell'oggetto. Ha l'estensione .obj. Se c'è un codice sorgente come Test.c, passa attraverso il compilatore e il codice convertito diventa Test.obj.

Linker è il software che collega il codice oggetto con file aggiuntivi come i file di intestazione e crea un file eseguibile con estensione .exe. Il programma potrebbe aver utilizzato funzioni integrate. Le funzionalità per quelle funzioni incorporate sono nei file di intestazione. Secondo l'esempio sopra spiegato, il codice oggetto che è Test.obj viene aggiunto con i file di intestazione necessari usando il Linker. Crea un nuovo file noto chiamato Test.exe. È un file eseguibile. Pertanto, è eseguibile dal computer.

Cos'è Loader?

Un programma che deve essere eseguito deve essere inserito nella memoria. Il linker collega il codice dell'oggetto e i file header e genera il file eseguibile. Il loader è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale. Alloca lo spazio di memoria al modulo eseguibile nella memoria principale. Pertanto, un caricatore è una parte del sistema operativo responsabile del caricamento di programmi e librerie.

Figura 01: ordine in cui il codice sorgente viene caricato nella memoria

Il caricamento di un programma comporta diversi passaggi. Si tratta di leggere i contenuti del file eseguibile contenente le istruzioni del programma in memoria e anche di eseguire le attività di preparazione necessarie per eseguire il file eseguibile. Una volta completato il caricamento, il sistema operativo avvia il programma passando il controllo al codice del programma caricato. Sistemi informatici speciali come i sistemi integrati in genere non hanno caricatori. Il codice viene eseguito direttamente dalla ROM.

Qual è la relazione tra Linker e Loader?

  • L'output del Linker va al Loader.

Qual è la differenza tra Linker e Loader?

Linker vs Loader

Linker è il software che collega il codice oggetto con file aggiuntivi come i file di intestazione e crea un file eseguibile con estensione .exe. Il loader è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale.
 Ingresso
Il linker prende l'output del traduttore di lingua, che è il codice oggetto. Il loader prende l'output dal linker, che è il file eseguibile.
Funzionalità
Il linker collega il codice dell'oggetto e i file di intestazione e restituisce il file eseguibile. Il caricatore carica il file eseguibile acquisito dal linker nella memoria principale.

Sommario - Linker vs caricatore

Linker e Loader sono due componenti software relativi all'esecuzione del programma. Questo articolo ha discusso la differenza tra il Linker e il Loader. Linker è il software che collega il codice oggetto con file aggiuntivi come i file di intestazione e crea un file eseguibile con estensione .exe. Il loader è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale. Questa è la differenza tra Linker e Loader.

Riferimento:

1. "Loader (computing)", Wikipedia, Wikimedia Foundation, 28 febbraio 2018. Disponibile qui