Phil Bull
philbull@gmail.com 2011
Michael Hill
mdhillca@gmail.com 2011, 2014
프로세스의 메모리 맵을 봅니다.
조성호
shcho@gnome.org 2016, 2017

# 메모리 맵 활용

가상 메모리는 시스템의 실제 메모리와 스왑 영역을 합쳐서 나타냅니다. 실제 메모리에서 디스크의 파일로 매핑하여, 실행 프로세스가 기존의 실제 메모리보다 더 많은 공간에 접근할 수 있게 해줍니다. 시스템에서 더 많은 메모리 페이지가 필요하다면 기존 페이지 일부를 내보내거나 스왑 영역에 기록합니다.

메모리 맵에서는 프로세스에서 활용하는 전체 가상 메모리를 표시하며, 올바른 공유 메모리를 확인하거나, 프로그램에서 취할 다양한 성능 튜닝 매개 변수 결과를 보거나, 메모리 누수와 같은 문제를 진단하든지, 프로그램의 단일 인스턴스 또는 다중 인스턴스를 실행하는 메모리 용량을 결정할 때 활용할 수 있습니다.

프로세스의 메모리 맵을 표시하려면:

프로세스 탭을 누르십시오.

프로세스 목록에서 원하는 프로세스에 오른쪽 마우스 단추를 누르십시오.

메모리 맵을 누르십시오.

# 메모리 맵 보기

Addresses are displayed in hexadecimal (base 16).

크기는 IEC 바이너리 접두 단위로 표시합니다.

프로세스는 실행 시간동안 힙 이라는 메모리 공간을 동적으로 할당할 수 있으며, 인자 및 변수 값을 스택 이라는 다른 공간에 저장합니다.

프로그램 자체와 각 공유 라이브러리는 읽고 실행하는 텍스트 세그먼트, 읽고 쓰는 데이터 세그먼트, 읽기 전용 데이터 세그먼트를 보유합니다. 각 데이터 세그먼트는 스왑 타임에 페이지 단위로 소거처리해야합니다.

## 속성

파일 이름 | 프로세스에서 현재 사용하는 공유 라이브러리 위치입니다. 이 부분이 피어있다면, 이 부분의 메모리 정보는 메모리 맵 테이블에 표시한 이름을 가진 프로세스가 소유합니다.
VM 시작 | 메모리 세그먼트 시작 주소입니다. VM 시작, VM 끝, VM 오프셋은 공유 라이브러리를 매핑하는 디스크 위치를 지정합니다.
VM 끝 | 메모리 세그먼트가 끝나는 주소입니다.
VM 크기 | 메모리 세그먼트의 크기입니다.

플래그

다음 플래그는 프로세스가 취할 수 있는 다양한 메모리 세그먼트 접근 형식을 나타냅니다:

## p

메모리 세그먼트는 프로세스에서 전용으로 활용하며, 다른 프로세스에서 접근할 수 없습니다.

## r

프로세스는 메모리 세그먼트의 내용을 읽을 권한이 있습니다.

## s

메모리 세그먼트를 다른 프로세스에서 활용하도록 공유했습니다.

## w

프로세스는 메모리 세그먼트의 내용을 기록할 권한이 있습니다.

## x

프로세스에는 메모리 세그먼트에 있는 명령을 실행할 권한이 있습니다.

VM 오프셋 | VM 시작점으로 측정한 메모리 세그먼트의 주소 위치입니다.
Private, Shared, Clean, Dirty | private 페이지는 하나의 프로세스에서 접근합니다 shared 페이지는 하나 이상의 프로세스에서 접근할 수 있습니다 clean 페이지는 메모리에 있는동안 수정하지 않았으며 스와핑 하도록 지정했을 때 버릴 수 있습니다 dirty 페이지는 메모리에서 수정했으며 스와핑 처리할 때 디스크에 기록해야합니다
장치 | 공유 라이브러리 파일 이름이 위치한 장치의 주/부 번호입니다. 시스템의 분할 공간을 지정합니다.
아이노드 | 공유 라이브러리 위치에서 메모리로 불러오는 장치의 아이노드입니다 아이노드는 파일 시스템이 파일을 저장할 때 활용하는 구조이며, 할당 번호는 유일한 번호입니다.