[질문]Shared Memory관련 --> SHM_RND 옵션에 대해

omando의 이미지

Shared memory에 매핑하기 위한 함수 --->
void *shmat ( int shmid, const void * shmaddr, int shmflg ) 에서요

(1) If shmaddr 가 0 이면, 시스템이 알아서 주소를 할당하지만,
(2) shmaddr 가 0 이 아니고 SHM_RND 가 shmflg 에 지정되어 있으면,
shmaddr 가 SHMLBA 의 배수의 주소로 연결이 발생한다.
(즉, the kernel rounds off the address)
(3) 그렇지 않으면 shmaddr 는 연결할수 있는 정렬된 페이지 주소이어야
한다.

이와 같은 설명에서 (2)의 의미를 도저히 모르겠어요. round off한다는게 뭔지
SHMLBA의 배수가 뭔지...
글구 (3)의 설명도 이해가 되지 않네요.
고수님들 한수 갈쳐주십시요.

ajoupark의 이미지

shmaddr 에 특정 주소를 주고 shmat 을 하면 커널이 관리하기 용이한 주소로 addr을 반올/내림(?) 을 해서 그 근처이긴 한데 kernel 이 관리하기 쉬운 주소에 attatch 한다는 말인듯 하군요. 2 의 n 승 중에 한곳이겠지요. 그러니 shmaddr 에 준 주소하고는 다른 곳에 attatch 될수 있다는 말인듯 하네요.
------첨 써보는 글이라.....

/** 주워 들은 것도 내 것이다. 많이 주워 들어야지*/