La differenza fondamentale tra indirizzo logico e indirizzo fisico è che la CPU genera un indirizzo logico durante l'esecuzione del programma mentre l'indirizzo fisico è una posizione nell'unità di memoria.
In parole povere, la CPU genera l'indirizzo logico o virtuale. Dal punto di vista di un programma in esecuzione, un elemento sembra trovarsi all'indirizzo fornito dall'indirizzo logico. L'unità di memoria osserva l'indirizzo fisico. Inoltre, permette di accedere ad una particolare cella di memoria nella memoria principale tramite il bus dati.
Che cos'è l'indirizzo logico?
CPU genera un indirizzo logico. Dal punto di vista di un programma in esecuzione, un elemento sembra trovarsi all'indirizzo fornito dall'indirizzo logico. I programmi applicativi in esecuzione sul computer non vedono gli indirizzi fisici. Funzionano sempre utilizzando gli indirizzi logici. Lo spazio degli indirizzi logici è l'insieme di indirizzi logici generati da un programma. È necessario mappare gli indirizzi logici su indirizzi fisici prima di utilizzarli. L'unità di gestione della memoria (MMU) del dispositivo hardware gestisce questo processo di mappatura.
Schemi di mappatura MMU
MMU segue diversi schemi di mappatura. Nello schema di mappatura più semplice, il valore nel registro di rilocazione viene aggiunto a ciascun indirizzo logico prodotto dai programmi applicativi prima di inviarli alla memoria. Esistono anche altri metodi complessi per generare la mappatura. Il binding degli indirizzi (ovvero l'allocazione di istruzioni e dati negli indirizzi di memoria) può avvenire in tre momenti diversi.
Figura 01: indirizzo logico e fisico
In primo luogo, può accadere in fase di compilazione se le posizioni di memoria effettive sono note in anticipo, e questo genererebbe il codice assoluto in fase di compilazione. Può verificarsi anche durante il caricamento se le posizioni di memoria non sono note in anticipo. Per questo, il codice riposizionabile deve essere generato in fase di compilazione. Inoltre, l'associazione degli indirizzi può avvenire al momento dell'esecuzione. Ciò richiede il supporto hardware per la mappatura degli indirizzi. In fase di compilazione e associazione degli indirizzi in fase di caricamento, gli indirizzi logici e fisici sono gli stessi. Ma questa procedura è diversa quando il binding degli indirizzi avviene nel tempo di esecuzione.
Che cos'è l'indirizzo fisico?
L'unità di memoria osserva l'indirizzo fisico o l'indirizzo reale. Consente al bus dati di accedere a una particolare cella di memoria nella memoria principale. MMU associa l'indirizzo logico all'indirizzo fisico. Ad esempio, utilizzando lo schema di mappatura più semplice, che aggiunge il valore del registro di ricollocazione (supponendo che il valore nel registro sia y) all'indirizzo logico, un indirizzo logico compreso tra 0 e x verrebbe mappato su un intervallo di indirizzi fisici da y a x+ y.
Inoltre, questo è anche chiamato spazio di indirizzi fisici di quel programma. Tutti gli indirizzi logici devono essere mappati in indirizzi fisici prima di poter essere utilizzati.
Qual è la differenza tra indirizzo logico e indirizzo fisico?
Indirizzo logico vs indirizzo fisico |
|
L'indirizzo logico è l'indirizzo in cui sembra risiedere un elemento dal punto di vista di un programma applicativo in esecuzione. | L'indirizzo fisico è un indirizzo di memoria rappresentato sotto forma di un numero binario sul circuito del bus di indirizzo per consentire al bus di dati di accedere a una particolare cella di memoria della memoria principale, o un registro di memoria mappato I /O dispositivo. |
Visibilità | |
L'utente può visualizzare l'indirizzo logico di un programma. | L'utente non può visualizzare l'indirizzo fisico del programma. |
Metodo di generazione | |
CPU genera l'indirizzo logico. | MMU calcola l'indirizzo fisico. |
Accessibilità | |
L'utente può utilizzare l'indirizzo logico per accedere all'indirizzo fisico. | L'utente non può accedere direttamente all'indirizzo fisico. |
Riepilogo: indirizzo logico e indirizzo fisico
La differenza tra indirizzo logico e indirizzo fisico è che la CPU genera un indirizzo logico quando il programma viene eseguito mentre l'indirizzo fisico è una posizione nell'unità di memoria. Tutti gli indirizzi logici devono essere mappati in indirizzi fisici prima che la MMU possa usarli. Gli indirizzi fisici e logici sono gli stessi quando si utilizza il binding degli indirizzi in fase di compilazione e caricamento, ma differiscono quando si utilizza il binding di indirizzi in fase di esecuzione.