He escrito varios programas y descubrí que cuando se compila en 64 bits, el segmento de mapeo de memoria (donde se guardan por ejemplo los objetos compartidos y la memoria compartida) siempre ubicado en algún lugar alrededor de 7f9aca84a000-7fff88400000 pero nunca exactamente igual.ELF64/x86_64 y la dirección de inicio del segmento de mapeo de memoria (para objetos compartidos)
Me gustaría saber si hay una dirección de inicio fijo para este segmento de memoria en la arquitectura x86_64 (ELF64) o cuál es el rango máximo y mínimo para este segmento?
He aquí por qué hago esta pregunta. Estamos migrando un sistema de Tru64 UNIX a Linux. Este sistema utilizó una asignación de memoria fija compleja de la memoria compartida IPC Sys V, y está utilizando una lista encadenada para ir de una estructura a otra dentro de este segmento. Con el tamaño y la complejidad de esta pieza de código, y el tiempo limitado que tenemos a mano, estamos tratando de encontrar una forma robusta de arreglar el inicio de la memoria compartida (utilizando efectivamente shmat con una dirección específica en la que adjuntar el segmento) Con 64 bits, el espacio de direcciones virtuales es tan grande (direcciones efectivamente posibles de 48 bits) que elegir una dirección fija "segura" es mucho más fácil y menos riesgoso que en 32 bits.
Gracias por tal idea. Voy a mirar alrededor de toda la información que me indicaste. – Huygens
así que no podemos dar nuestra propia dirección de inicio? – sdkie