Differenza tra Linker e Caricatore

Autore: Laura McKinney
Data Della Creazione: 3 Aprile 2021
Data Di Aggiornamento: 7 Maggio 2024
Anonim
Motori da lavatrice a confronto - INDUZIONE vs SPAZZOLE
Video: Motori da lavatrice a confronto - INDUZIONE vs SPAZZOLE

Contenuto


Linker e Loader sono i programmi di utilità che svolgono un ruolo importante nell'esecuzione di un programma. Il codice sorgente di un programma passa attraverso compilatore, assemblatore, linker, caricatore nel rispettivo ordine, prima dell'esecuzione. Da un lato, dove il linker accetta i codici oggetto generati dall'assemblatore e li combina per generare il modulo eseguibile. D'altra parte, il caricatore carica questo modulo eseguibile nella memoria principale per l'esecuzione. Discutiamo la differenza tra Linker e caricatore con l'aiuto di una tabella comparativa.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontolinkercaricatore
Di baseGenera il modulo eseguibile di un programma sorgente.Carica il modulo eseguibile nella memoria principale.
IngressoPrende come input il codice oggetto generato da un assemblatore.Prende il modulo eseguibile generato da un linker.
FunzioneCombina tutti i moduli oggetto di un codice sorgente per generare un modulo eseguibile.Alloca gli indirizzi a un modulo eseguibile nella memoria principale per l'esecuzione.
Tipo / ApproccioEditor dei collegamenti, linker dinamico.Caricamento assoluto, caricamento trasferibile e caricamento dinamico di runtime.


Definizione di Linker

L'assemblatore genera il codice oggetto di un programma sorgente e lo passa al linker. Il linker accetta questo codice oggetto e genera il codice eseguibile per il programma e consegnarlo al Caricatore.

La lingua di alto livello, i programmi ne hanno alcuni librerie integrate e file di intestazione. Il programma di origine può contenere alcune funzioni di libreria le cui definizioni sono memorizzate nelle librerie integrate. Il linker collega queste funzioni alle librerie integrate. Nel caso in cui le librerie integrate non vengano trovate, ciò informa il compilatore e il compilatore genera quindi l'errore.

A volte i programmi di grandi dimensioni sono divisi nei sottoprogrammi che vengono chiamati moduli. Ora quando questi moduli vengono compilati e assemblati, vengono generati i moduli oggetto del programma sorgente. Il linker ha la responsabilità di combinare / collegare tutti i moduli oggetto per generare un singolo file eseguibile del programma di origine. Abbiamo due tipi di linker.


Editor dei collegamenti: È un linker che genera il modulo eseguibile trasferibile.

Dynamic Linker: Difende / rinvia il collegamento di alcuni moduli esterni fino alla generazione del modulo di carico / modulo eseguibile. Qui, il collegamento viene eseguito durante il tempo di caricamento o il tempo di esecuzione.

Definizione di Caricatore

Poiché il programma che deve essere eseguito attualmente deve risiedere nella memoria principale del computer. È responsabilità del loader, un programma in un sistema operativo, per caricare il file / modulo eseguibile di un programma, generato dal linker, nella memoria principale per l'esecuzione. Alloca lo spazio di memoria al modulo eseguibile nella memoria principale.

Esistono tre tipi di approcci di caricamento:

  • Caricamento assoluto
  • Caricamento trasferibile
  • Caricamento dinamico di runtime

Caricamento assoluto: Questo approccio carica il file eseguibile di un programma in a stessa posizione di memoria principale ogni volta. Ma ne ha alcuni svantaggi come un programmatore deve essere consapevole della strategia di assegnazione per il caricamento dei moduli nella memoria principale. Nel caso in cui il programma debba essere modificato comportando un certo inserimento e cancellazione nel programma, tutti gli indirizzi del programma devono essere modificati.

Caricamento trasferibile: In questo approccio, il compilatore o l'assemblatore lo fanno non produce l'indirizzo attuale della memoria principale. Produce gli indirizzi relativi.

Caricamento dinamico di runtime: In questo approccio, l'indirizzo assoluto per un programma viene generato quando viene effettivamente eseguita un'istruzione di un modulo eseguibile. È molto flessibile, è possibile caricare il modulo caricabile / modulo eseguibile qualsiasi regione di memoria principale. Il programma in esecuzione può essere interrotto nel mezzo e può essere scambiato sul disco e tornare alla memoria principale questa volta a un indirizzo di memoria principale diverso.

  1. La differenza chiave tra linker e loader è che il linker genera il eseguibile file di un programma mentre il caricatore carica il file eseguibile ottenuto dal linker in memoria principale per l'esecuzione.
  2. Il linker inserisce il modulo oggetto di un programma generato dall'assemblatore. Tuttavia, il caricatore accetta il file modulo eseguibile generato dal linker.
  3. Il linker combina tutti i moduli oggetto di un programma da generare moduli eseguibili collega anche il funzione di libreria nel modulo oggetto a librerie integrate del linguaggio di programmazione di alto livello. D'altra parte, caricatore alloca spazio a un eseguibile modulo nella memoria principale.
  4. Il linker può essere classificato come editor di collegamenti, e linker dinamico mentre il caricatore può essere classificato come caricatore assoluto, caricatore trasferibile e caricatore dinamico di runtime.

Conclusione:

Il linker prende i moduli oggetto di un programma dall'assemblatore e li collega insieme per generare un modulo eseguibile di un programma. Il modulo eseguibile viene quindi caricato dal caricatore nella memoria principale per l'esecuzione.