Segmentazione e segmenti di file oggetto

3

Sto facendo fatica a capire davvero la segmentazione della memoria.

È l'argomento della segmentazione della memoria relativa a segmenti come heap, stack, codice in un file oggetto?

Forse sono sicuro, ma non riesco ancora a trovare un link e mi piacerebbe se qualcuno potesse far luce su come sono relazionati se lo sono.

Ho letto nel mio libro che la segmentazione non è più utilizzata in x86-64, è vera anche per i segmenti del file oggetto?

Grazie per l'aiuto, e scusami se ti sembra ovvio, ma sto scrivendo questa domanda dopo una lunga giornata di studio e ho bisogno di qualche chiarimento.

    
posta Gabriele Scarlatti 22.02.2017 - 17:45
fonte

1 risposta

2

Il modello di memoria segmentata dell'8086 (modalità reale x86) è effettivamente qualcosa che appartiene al passato. Con cpus a 32 e 64 bit, non è più necessario che i registri di segmento estendano i registri a 16 bit per indirizzare uno spazio di indirizzamento della memoria a 20 bit: l'insieme di registri è organizzato per manipolare indirizzi a 32 e 64 bit senza dolore. Tutti i sistemi operativi correnti tradizionali utilizzano spazi di indirizzi virtuali.

L'accesso alla memoria segmentata non deve tuttavia essere confuso con i segmenti in un file oggetto. Questi segmenti di oggetto sono raggruppamenti di dati o codici correlati che devono essere conservati in un blocco consecutivo di memoria dello spazio degli indirizzi (che sia fisico o virtuale). Diversi segmenti possono essere caricati in diversi intervalli di memoria. Questo è gestito dal linker della tua toolchain (gestisci i segmenti) e dal loader del tuo sistema operativo, che leggerà l'eseguibile e la libreria nello spazio di memoria (ma dopo che lo spazio di memoria virtuale è stato inizializzato per il processo dal sistema operativo). / p>

Quindi stesso nome ma due cose completamente diverse.

    
risposta data 22.02.2017 - 19:52
fonte

Leggi altre domande sui tag