0

allocate_aligned을 사용하여 관리되는 공유 메모리에 정렬 된 메모리 청크를 할당하는 경우 다른 프로세스에서 공유 할 때이 할당이 동일한 정렬을 보장합니까? 이 문서에서는 기본 주소가 다르게 매핑 될 수 있음을 분명히 밝혔지만 정렬에 대해서는 아무 것도 말하지 않는 것으로 보입니다.boost :: interprocess - allocate_aligned - 모든 프로세스에서 동일한 정렬이 보장됩니까?

필자는 정렬이 동일하다는 것을 보여주는 실험을 실행했지만 운이 좋지 않을 수도 있으므로 예상되는 동작에 대해보다 안정적인 확인을 얻고 싶습니다. (상식은 그것이 같은 정렬이어야한다고 말합니다. 그렇지 않으면 공유 메모리에서 allocate_aligned의 유용성을 심각하게 제한 할 것이지만, 저는 상식에 호소하는 것 이상을 필요로합니다.)

답변

1

몇몇 이상한 이유로 페이지 정렬보다.

기본 주소는 다르게 매핑 될 수 있지만 이러한 매핑은 페이지 단위로 수행됩니다. 이는 공통 아키텍처에서 4K 정렬을 의미합니다.

+0

감사합니다. 나는 또한 평범한'shared_memory_object'와'mapped_region'을 사용하면 전체 할당을위한 페이지 정렬을 얻을 수 있으므로 아마도 그걸로 갈 수 있다는 것을 깨달았습니다. (필자는 SIMD 자료에 대해서만 16 바이트 정렬 만 필요합니다.). –

관련 문제