Ho scritto diversi programmi e ho scoperto che quando compilato a 64 bit, il segmento di mappatura della memoria (dove sono conservati ad esempio oggetti condivisi e memoria condivisa) è sempre situato da qualche parte intorno a 7f9aca84a000-7fff88400000 ma mai esattamente lo stesso.ELF64/x86_64 e indirizzo iniziale del segmento di mappatura della memoria (per oggetti condivisi)
Vorrei sapere se esiste un indirizzo di avvio fisso per questo segmento di memoria su architettura x86_64 (ELF64) o qual è l'intervallo massimo e minimo per questo segmento?
Ecco perché faccio questa domanda. Stiamo migrando un sistema da Tru64 UNIX a Linux. Questo sistema utilizzava una mappatura complessa della memoria fissa della memoria condivisa di Sys V IPC e utilizza l'elenco concatenato per passare da una struttura all'altra all'interno di questo segmento. Con le dimensioni e la complessità di questo pezzo di codice e il tempo limitato a disposizione, stiamo cercando di trovare un modo efficace per correggere l'inizio della memoria condivisa (utilizzando in modo efficace shmat con un indirizzo specifico al quale allegare il segmento). Con 64 bit, lo spazio degli indirizzi virtuali è così grande (48bit indirizzi effettivamente possibili) che scegliere un indirizzo fisso "sicuro" è molto più facile e meno rischioso rispetto a 32 bit.
Grazie per l'intuizione. Vado a dare un'occhiata a tutte le informazioni che mi hai indicato. – Huygens
quindi non posso fornire il nostro indirizzo di partenza? – sdkie