Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 1
Il programma oggetto per essere eseguito va caricato nella Memoria Centrale.
Il Caricatore è un Programma del software di base utilizzato per caricare in memoria centrale i programmi che devono essere eseguiti, prelevandoli dalla memoria di massa.
Per ciascuna istruzione e ciascun dato del programma deve essere definito l’indirizzo di Memoria Centrale in cui devono essere registrati.
Caricatore
L’input del Caricatore è:
• la sequenza di istruzioni del programma oggetto da caricare in memoria centrale per la sua esecuzione,
• altre informazioni ausiliarie
stato della memoria centrale
piano di allocazione della memoria centrale
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 3
Caricatore
Il modo di operare del Caricatore differisce in base al tipo di programma oggetto da caricare:
• Programma ad indirizzi assoluti (o programma assoluto)
• Programma ad indirizzi relativi (o programma rilocabile)
Programma assoluto
In un programma assoluto gli indirizzi di memoria in cui caricare il programma sono stati già fissati nella fase di compilazione.
Il programma sarà caricato, per la sua esecuzione, sempre negli stessi indirizzi della memoria centrale.
Ciò implica che la pianificazione della memoria centrale (al tempo di esecuzione) deve essere già nota al tempo di compilazione del programma
cosa difficilmente predicibile specie per sistemi multiutente e multiprogrammati
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 5
compilatore sono relativi:
gli indirizzi sono espressi a meno di una costante di rilocazione (o spiazzamento)
Il valore della costante di rilocazione è definito all’atto del caricamento del programma per la sua esecuzione sulla base dell’effettiva occupazione, stato e pianificazione della memoria in quel momento.
Agli indirizzi relativi è aggiunto il valore della costatnte di rilocazione per ottenere quello dell’effettivo indirizzo assoluto in cui caricare ciascuna istruzione
Caricatore per Programmi rilocabili
… un semplice modello di caricatore per programmi rilocabili …
… alcune ipotesi semplificative:
Il programma da caricare è costituito da una unica unità (un main)
Il modello di pianificazione della memoria centrale prevede che il programma sia allocato tutto (istruzioni e dati) in una medesima area di locazioni di memoria consecutive
Il compilatore assegna come primo indirizzo relativo l’indirizzo zero e definisce tutti gli altri con riferimento a questo
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 7
Caricatore per Programmi rilocabili
Il caricatore, con l’ausilio del S. O., individua una area della memoria centrale che può contenere in locazioni consecutive la sequenza di istruzioni e dati del programma da caricare e fissa in K il primo indirizzo assoluto da cui può cominciare il caricamento della sequenza
Un’istruzione del programma rilocabile è del tipo:
I = (OP, A)
OP : codice operativo ed altre informazioni che non devono essere alterate nella fase di caricamento
A: operando (o più operandi), su cui agisce OP, espresso da un indirizzo
Caricatore per Programmi rilocabili
Tra le informazioni ausiliarie vi sono quelle che per ciascun operando ne stabiliscono la rilocabilità.
In particolare NON sono rilocabili:
Operandi immediati:
corrispondono a valori di costanti espressi direttamente nell’istruzione
Operandi assoluti
operandi espressi con l’effettivo indirizzo di memoria contenente il valore da usare
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 9
memoria di indirizzo X, il caricatore esegue le seguenti operazioni:
MIR+K = (OP, A) se l’operando A è immediato o assoluto MIR+K = (OP, A+K) se l’operando A è allocato nella sequenza
Ovvero ciascuna istruzione C = (OP, A) è registrata nell’indirizzo I+K IR: Indirizzo Relativo assegnato in compilazione
K: costante di spiazzamento
Caricatore per Programmi rilocabili
Esempio: ALFA =AA + 50;
… in (pseudo)linguaggio macchina:
I=(add *10, *20, 50)
Con:
• 10 Indirizzo Relativo di ALFA
• 20 Indirizzo Relativo di AA
• IR= 5 indirizzo relativo della istruzione I
• K= 512000 costante di spiazzamento
M5+512000 = (add, *512010, *512020, 50)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 11
Caricatore per Programmi assoluti
Per i programmi assoluti per ciascuna istruzione ed operando è già stato definito l’indirizzo I dove caricarla, e quindi il caricatore legge tali indirizzi ed effettua l’operazione
MI = (OP, A)
E’ un programma, del software di base, che collega tra loro le varie unità che formano un programma per genereare il programma eseguibile che sarà caricato in memoria.
Caricatore e Collegatore operano insieme effettuando le seguenti principali operazioni:
• Calcolo delle costanti di spiazzamento
• Allocazione in memoria agli indirizzi fissati
• Definizione dei riferimenti esterni a ciascuna unità del programma
• Collegamento dei moduli di libreria
• Collegamento di tutte le unità costituenti il programma eseguibile