OS별 shared memory Loading, unloading 은 어떻게 이루어지나요?
글쓴이: goofy2 / 작성시간: 월, 2014/06/30 - 5:45오후
안녕하세요 Linux & Unix에서 프로그래밍을 하는 사람입니다.
이번에 테스트를 하다가 OS별로 shared library를 메모리에 올리고 지우는것이 다른 것 같다고 느껴서
전문가분께 물어보려고 합니다..
예를들어 TEST라는 프로그램이 a.so 파일을 사용한다고 가정했을 때
Linux에서는 TEST를 실행하고, 끝난 후 a.so파일을 지우면 잘 지워집니다.
그런데 HP-UX나 AIX에서는 TEST를 실행하고 끝난 후 a.so파일을 지우려면 누가 쓰고있는 중이라 못지운다는
메시지가 나오더라구요..
그래서 인터넷을 통해 검색해본 결과
AIX의 경우 root계정으로 genkld 명령어를 사용하면 지금 메모리에 올라와있는 라이브러리 리스트가 나오더군요
사용이 끝난 a.so파일도 메모리에 올라와 있음을 확인하였습니다. 따라서 라이브러리 파일이 지워지지 않는것이구요..
그렇다면 AIX와 HP는 프로세스가 끝났으면서도 Shared Library가 메모리에서 해제되지 않는것 같은데
제 말이 맞는건가요?
즉 Linux에서는 프로세스가 끝나면 사용된 Library도 메모리에서 해제되지만,
HP나 AIX에서는 프로세스가 끝나도 사용된 Library는 메모리에 그대로 남아있다... 맞는말인가요?
Forums:
이 경우 shared memory 라는 표현은
이 경우 shared memory 라는 표현은 정확하지 않는것 같구요. so, sa는 shared object 또는 shared library 라고
사용합니다.
관련 키워드로 검색해보니 대략 아래와 같은 페이지가 보이네요.
http://www.ibm.com/developerworks/aix/library/au-slib_memory/
요 페이지의 링크된 pdf 문서를 보시는게 도움이 될듯 합니다.
경험적으로 볼때 Linux는 실행중 비 실행중 상관없이 so 파일의 rm 이 가능했습니다.
aix, hp-ux 경우 실행이 끝났음에도 물고 있더군요.
aix, hp-ux 경우에는 동일한 so 파일을 엎어 쓸 필요가 있을때 문제가 됩니다.
(cp 로 복사했는데 제대로 복사가 안됨. rm 하고 cp 하면 됨)
aix 경우 6 대 버전에서 저런 문제가 없다고 합니다.
두 운영체제가 캐싱 효율 때문에 그러지 않나 생각되네요.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기