컴공과 학부생입니다. socket programming 공부중 shared memory단계까지 왔습니다.
이번학기 내내 구현해왔던 web server 구현 프로젝트에서 client connection(accept) history를 링크드리스트로 추가 및 출력하고 있었는데요,
이번에는 shared memory를 이용해서 자식프로세스들이 가지고 있던 최대 10개의 connection history를 부모쪽으로 넘겨서
한꺼번에 정렬한 후 출력시켜야 합니다.
shared memory에 링크드리스트를 직접 추가하는 방식으로 구현하면
모든 프로세스가 노드만 추가로 연결하는식으로 간단할 것 같은데 역시 간단치 않더라구요.
나름대로 조사해본 결과
"매 프로세스마다 shared memory를 매핑했을 때 할당받는 메모리주소값이 달라(가상메모리) 쓰는 측과 읽는 측이 서로 다른곳에 접속할 수밖에 없다..
때문에 포인터를 이용하면 안된다." -> 즉 malloc을 이용하는 일반적인 링크드리스트는 불가능하다. 라는 결론이 나왔습니다.