Questa è una questione molto basilare da quando ho sentito parlare del concetto di memoria virtuale e fisica nella mia classe OS. Ora so che al momento del caricamento e del tempo di compilazione, lo schema di indirizzi virtuali e di indirizzi logici è lo stesso, ma al momento dell'esecuzione differiscono.Quale tipo di indirizzo è stato restituito quando si applica la e commerciale a una variabile o un tipo di dati in C/C++ o in qualsiasi altra lingua del genere?
Prima di tutto perché è utile generare indirizzo virtuale in fase di compilazione e caricamento e cosa viene restituito quando si applica l'operatore commerciale per ottenere l'indirizzo di una variabile, tipi di dati ingenui, tipo definito dall'utente e indirizzi di definizione della funzione ?
E in che modo il sistema operativo esegue il mapping esattamente da indirizzo virtuale a indirizzo fisico quando lo fa? Queste domande sono state sottratte alla curiosità e mi piacerebbe un po 'di intuizioni profonde e profonde considerando l'OS moderno, Com'è stato agli inizi OS?. Sono solo C/C++ specifico dato che non ne so molto di altre lingue.
L'indirizzo di una variabile non è determinato al momento della compilazione ... che dovrebbe rispondere alla maggior parte di questo. –
"Ora so che al momento del caricamento e della compilazione, viene generato l'indirizzo virtuale ma al momento dell'esecuzione viene generato l'indirizzo fisico?" - No. Se lo pensi, allora non capisci quali sono gli indirizzi virtuali e fisici e devi studiare ulteriormente il problema. La risposta alla tua domanda è "indirizzi virtuali" ... questo è l'unico tipo di programma di indirizzi visualizzato o trattato (eccetto per le eccezioni tecniche che riguardano alcune chiamate di sistema su alcuni sistemi). –
@JimBalter: l'ho corretto. –