Concetti Chiave
- Il Link Editor collega i moduli e modifica il codice per adattare gli indirizzi delle istruzioni.
- Il loader carica il programma in memoria, trasformandolo nell'immagine di un processo eseguibile.
- La rilocazione statica consente al codice di essere collocato in qualsiasi posizione di memoria, fissando gli indirizzi al momento del caricamento.
- Un modulo di caricamento assoluto vincola la posizione del processo in memoria, richiedendo rigenerazione se spostato.
- La rilocazione dinamica calcola gli indirizzi effettivi durante l'esecuzione, consentendo flessibilità nella gestione della memoria.
Il Link editor
Il Link Editor svolge funzione di collegamento dei moduli ( Link ) e inoltre deve modificare il codice dei moduli oggetto per adattare gli indirizzi delle istruzioni (Editing);Il passo successivo consiste nel caricare in memoria un programma pronto per l'esecuzione..Questa azione è eseguita da un programma di sistema detto loader ( caricatore ). Il loader trasforma un programma nell'immagine di un processo..
Se ad esempio,al momento dell'esecuzione il processo sia caricato in memoria in modo che la prima istruzione eseguibile si trovi all'indirizzo 8000 il loader deve attuare la rilocazione del codice generato dal link editor..
La situazione descritta è quella di un modello di caricamento rilocabile, ovvero un modello di caricamento rilocabile può essere collocato in qualsiasi posizione della memoria, perchè i suoi indirizzi sono fissati dal loader al momento del caricamento. Questo tipo di rilocazione prende il nome di rilocazione statica.
Gli indirizzi possono essere fissati anche con altre strategie. Per esempio, il link editor potrebbe produrre un modulo di caricamento , detto assoluto che però ha il difetto di vincolare la posizione del processo in memoria : se , in seguito , fosse necessario collocare il processo in un'altra zona della memoria, il codice del processo dovrebbe essere rigenerato e riniziare tutto da capo..
Esiste una terza possibilità, indicata come rilocazione dinamica, che consiste nel rimandare il calcolo dell'indirizzo effettivo al momento dell'esecuzione : il processo può essere rimosso, scaricato su disco e gli indirizzi rimangono gli stessi.