공시 한 판

컴퓨터일반 개념서 · 운영체제

프로세스 메모리 구조: 영역별 저장 내용

설명 영상 프로세스 메모리 구조 · 2:13

핵심 정리

프로세스는 디스크 등에 저장된 실행 코드인 프로그램을 구동하여, 프로그램 자체와 그 상태가 메모리 위에서 실행되는 작업 단위다. 프로그램은 저장된 코드, 프로세스는 실행 작업 하나의 프로그램을 여러 번 구동하면 메모리 위에 프로세스가 여러 개 생긴다. 프로세스가 메모리에서 쓰는 공간은 코드(텍스트) 영역, 데이터 영역, 힙, 스택으로 나뉘어 있다고 기억하면 된다.

프로그램 코드는 텍스트 영역에 적재된다. 텍스트 영역은 프로그램의 명령이 놓이는 자리이고, 변수가 쌓이는 자리와는 구분된다. 이렇게 명령과 변수를 나누어 두는 구조는 공격자가 프로그램을 바꾸는 능력을 제한하려는 목적과 이어진다.

힙 영역은 프로세스 실행 중 동적으로 할당되고 해제되는 메모리 영역이다. 힙은 프로그램이 실행 도중 필요에 따라 공간을 얻고 돌려주는 곳이므로, 함수 호출에 따라 쌓였다가 정리되는 스택과 구별해야 한다.

함수가 호출되면 그 함수가 쓰는 공간이 스택에 마련된다. 함수의 매개변수, 복귀 주소, 지역 변수는 스택 영역에 할당된다. 함수가 끝나면 이 공간은 정리되고, 복귀 주소를 따라 호출한 곳으로 돌아간다.

영역 구분은 메모리 구조를 이해하기 위한 기본 틀이며, 실제 배치는 운영체제와 구현에 따라 다를 수 있다. 가상 메모리는 대부분의 컴퓨터에서 주소 지정을 단순화하기 위해 쓰이고, 운영체제가 가상 주소를 유한한 물리 메모리의 다른 영역에 대응시킨다. 따라서 영역과 저장 내용을 짝지어 외우는 것이 기본이다.

자세히

스택 영역에 쌓이는 것

스택에 들어가는 것은 함수의 매개변수, 복귀 주소, 지역 변수다. 이 셋은 함수 호출과 함께 생기고 함수가 끝나면 정리된다는 점에서 묶어서 기억하면 된다. 특히 복귀 주소가 스택에 있어야 함수가 끝난 뒤 호출 지점으로 돌아갈 수 있으므로, 복귀 주소를 스택과 연결해 두는 것이 흐름을 잡는 방법이다. 힙과 비교하면 차이가 분명하다. 힙은 프로그램이 필요할 때 요청하여 얻고 해제하는 공간이지만, 스택은 함수 호출 단위로 자동으로 쌓이고 정리되는 공간이다. 두 영역을 같은 동적 할당으로 묶으면 안 된다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 절 읽기