avltr를 공유메모리 영역에 맵핑할 수 있나요?
글쓴이: toaamf / 작성시간: 토, 2005/06/11 - 1:52오후
안녕하세요..
avltr를 이용해서, 작업을 하고 있는데요.
단일 프로세스에서 사용하면, 잘 되는데,
avltr를 공유메모리 영역으로 맵핑해서 이용하려고 하면,
검색이 잘 되지 않네요..
즉, A Process에서 avltr에 데이터를 넣고, 다시 검색하는 건 잘되는데,
A Process에서 공유메모리 영역에 avltr를 맵핑시켜서, 생성하고, 데이터를 넣은뒤에,
B Process에서 공유메모리로 접근해서, avltr를 검색해보면, 검색이 안됩니다.
avltr_create부분의 소스를 보니,
xmalloc()을 이용하도록 되어있던데, 그렇다면, 공유메모리가 아닌, 자신의 프로세스의 메모리에 생성을 하도록 되는건가요?
avltr를 공유메모리영역에 맵핑해서 사용하는 방법이 없을까요?
답변 미리 감사드립니다.
Forums:
공유메모리의 주소는 같은 id 의 공유메모리라도 프로세스 별로 맵핑되는
공유메모리의 주소는 같은 id 의 공유메모리라도 프로세스 별로 맵핑되는 주소가 달라서 그렇습니다.
공유메모리의 트리나 링크드리스트 등을 구현하실려면 절대 주소로 하면 안되고 상대주소등의 방법을 사용하셔야 합니다.
즉, 기존의 대부분의 라이브러리는 사용불가능하고 공유메모리용으로 별도로 만들어야 하는거죠.
malloc 나 xmalloc 와 같은 메모리 할당자도 공유메모리 범위 내에서 겹치지 않게 할당하는 할당자도 만드셔야 합니다. 역시 free 도 구현하셔야겠죠? ^^
댓글 달기