여러 프로그램을 작성했으며 64 비트에서 컴파일 할 때 메모리 매핑 세그먼트 (예 : 공유 객체 및 공유 메모리가 유지되는 위치)가 다음과 같습니다. 항상 7f9aca84a000-7fff88400000 어딘가에 있지만 정확히 같은 것은 아닙니다.ELF64/x86_64 및 메모리 매핑 세그먼트 시작 주소 (공유 객체)
x86_64 아키텍처 (ELF64)에서이 메모리 세그먼트의 고정 시작 주소가 있는지 또는이 세그먼트의 최대 및 최소 범위가 무엇인지 알고 싶습니다.
여기 제가이 질문을하는 이유입니다. Tru64 UNIX에서 Linux로 시스템을 마이그레이션하고 있습니다. 이 시스템은 IPC Sys V 공유 메모리의 복잡한 고정 메모리 맵핑을 사용했으며이 세그먼트 내의 구조에서 다른 구조로 이동하는 체인 된 목록을 사용합니다. 이 코드 조각의 크기와 복잡성, 그리고 우리가 가진 제한된 시간으로 공유 메모리의 시작을 고정시키는 확실한 방법을 찾고자합니다 (세그먼트를 첨부 할 특정 주소의 shmat를 효과적으로 사용합니다)). 64 비트로 가상 주소 공간이 너무 커서 (48 비트 유효 주소) "안전한"고정 주소를 선택하는 것이 32 비트보다 훨씬 쉽고 위험 부담이 적습니다.
그런 통찰력을 가져 주셔서 감사합니다. 내가 지적한 모든 정보를 둘러 볼 것입니다. – Huygens
우리 출발 주소를 알 수 없습니까? – sdkie