Differenza tra linker e caricatore

Sommario:

Differenza tra linker e caricatore
Differenza tra linker e caricatore

Video: Differenza tra linker e caricatore

Video: Differenza tra linker e caricatore
Video: What is Linker | How Linker works | Symbol Table | Linking Error | GNU Linker | Objdump | ldd 2024, Novembre
Anonim

Differenza chiave – Linker vs Loader

Un programma per computer viene utilizzato per dare istruzioni al computer. È scritto usando un linguaggio di programmazione specifico. I linguaggi di programmazione come C, Java sono linguaggi di programmazione di alto livello e sono comprensibili dall'uomo ma non dal computer. Pertanto, un programma di alto livello viene convertito in linguaggio macchina utilizzando un traduttore di lingue. Un programma scritto utilizzando un linguaggio di alto livello è un codice sorgente. Dopo la conversione, il codice tradotto viene chiamato codice oggetto. Il linker e il caricatore sono due programmi software utilizzati per l'esecuzione del programma. Questo articolo illustra 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 caricatore è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale. Questa è la differenza fondamentale tra Linker e Loader.

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 utilizzando un linguaggio di programmazione. La maggior parte dei linguaggi di programmazione sono 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 utilizzando un linguaggio di programmazione di alto livello è noto come codice sorgente, file sorgente o 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 dovrebbe essere convertito in un formato comprensibile dalla macchina utilizzando un traduttore di lingue. Può essere un compilatore o un interprete. Il codice tradotto è noto come codice oggetto. Il codice oggetto è in linguaggio macchina. È composto da zeri e una volta. Il computer può comprendere direttamente il codice oggetto. Ha l'estensione.obj. Se è presente 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 queste funzioni integrate si trovano nei file di intestazione. Secondo l'esempio sopra spiegato, il codice oggetto che è Test.obj viene aggiunto con i file di intestazione necessari utilizzando il Linker. Crea un nuovo file noto chiamato Test.exe. È un file eseguibile. Pertanto, è eseguibile dal computer.

Cos'è il caricatore?

Un programma che dovrebbe essere eseguito deve essere messo in memoria. Il linker collega il codice oggetto e i file di intestazione e genera il file eseguibile. Il caricatore è 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.

Differenza tra linker e caricatore
Differenza tra linker e caricatore

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

Il caricamento di un programma prevede diversi passaggi. Implica la lettura del contenuto del file eseguibile contenente l'istruzione del programma in memoria e anche l'esecuzione delle 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. I sistemi informatici speciali come i sistemi Embedded generalmente non dispongono di caricatori. Il codice viene eseguito direttamente dalla ROM.

Qual è la relazione tra linker e caricatore?

L'output del Linker va al Loader

Qual è la differenza tra linker e caricatore?

Linker vs caricatore

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 caricatore è 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 caricatore prende l'output dal linker, che è il file eseguibile.
Funzionalità
Il linker collega il codice oggetto e i file di intestazione ed emette il file eseguibile. Il caricatore carica il file eseguibile ottenuto dal linker nella memoria principale.

Riepilogo – Linker vs Loader

Linker e Loader sono due componenti software relativi all'esecuzione del programma. Questo articolo ha discusso 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 caricatore è il software di sistema che carica il file eseguibile generato dal linker nella memoria principale. Questa è la differenza tra Linker e Loader.

Consigliato: