본문 바로가기

프로그래밍/미분류

Private but Shareable

반응형
시스인터널즈 툴 중에 재미있는 게 있다. vmmap 이라는 툴로, 특정 프로세스가 사용하는 가상주소공간을 지금 어떤 것이 얼마나 사용되고 있는지를 나타내 주는 툴이다. 색색깔로 예쁘게 서로 다른 의미로 사용되는 것을 다르게 보여줘서 아주 좋다.

이 툴을 가지고 이것저것 살펴보다가 이상한 것을 발견했다. 아래 그림에서 반전시킨 부분이다.

사용자 삽입 이미지

뭐가 이상하다고 하는 거냐면, 다시 위쪽 부분을 보자.

사용자 삽입 이미지

메모리의 종류에는 Private 이라고 노란색으로 표시된 것이 있는데, 이렇게 딱지가 붙은 것은 다른 프로세스와 공유되지 않는 자기 자신만 사용할 수 있는 그야말로 "개인적인", "자기만의" 공간이다. 그런데, 각 메모리 종류에 대해 상세하게 워킹셋(WS)을 구분하여 보여주는 곳에는 Private, Shareable 이라는 항목으로 나뉘어 보여지고 있으며, 이 Private 이란 곳에 할당되어 사용되는 것 중에서 4K가 Shareable WS 으로 할당되어 있다.

Private 이라면, 자기가 사용하는 모든 것이 Private WS 이어야 하지 않나? Shareable 메모리 타입은 예상대로 모든 WS이 Shareable WS 으로 할당되어 있다.

좀 더 상세한, 아래쪽 패널을 보면,

사용자 삽입 이미지

메모리의 가장 마지막 Private 부분에 Shareable WS 을 갖는 섹션이 있는 걸 알 수 있다.

어떻게 이런 모순적인 게 발생할 수 있는 것인가? 알고싶다. 대답을 아는 분이 이 글을 읽는다면, 댓글을 달아주길 바란다.

2011년 추가 : http://www.msteched.com/2010/Europe/WCL401 에 마크 러시노비치의 VMMap 을 활용하는 강의가 있다.

728x90