💻Computer Science/📕개발 언어 (Language)

[ETC] 메모리 구조

Written by Donghak Park

메모리란 프로그램을 실행하기 전에 데이터를 저장하는 공간으로 메인 메모리 (Main Memory), RAM이라는 물리적인 공간에 Load 됩니다. 이러한 메모리는 프로그램을 실행하는데 있어 동적 할당, 코드, 변수 등을 저장해야하고 운영체제는 프로그램의 실행을 위해 아래와 같은 공간을 제공합니다.

 

1. 코드(Code) 영역

2. 데이터(Data) 영역

3. 스택(Stack) 영역

4. 힙(Heap) 영역

 

이러한 영역들은 다음과 같이 표현 된다.

 

메모리 구조


1. 코드(Code) 영역

-> 코드(Code) 영역은 실행할 프로그램의 코드,

-> 즉 Text로 이루어진 공간입니다. 이러한 코드는 CPU에 의해서 처리됩니다.

 

2. 데이터(Data) 영역

-> 데이터 영역에는 전역 변수, 정적 변수가 저장됩니다.

-> 데이터 영역은 프로그램의 시작시에 할당되며, 프로그램 종료시 소멸됩니다. : 전역 변수, 정적 변수의 성질과 동일

 

3. 스택(Stack) 영역

-> 함수 호출과 관계 되는 지역변수, 파라미터(매개변수)가 저장됩니다.

-> 함수의 호출 (main 포함)시에 할당되며 호출이 끝나면 pop하여 없어지게 됩니다.

-> Return Address, Stack Guard 등이 포함될 수도 있습니다. (리눅스 환경)

-> 하나의 함수에 해당하는 정보를 스택 프레임(Stack Frame)이라고 부릅니다.

 

4. 힙(Heap) 영역

-> 힙 영역은 사용자가 조작 가능한 영역으로 주로 동적할당시이 여기에 속하게 됩니다.

 

** 스택과 힙은 프로그램 실행 중에 크기가 변하기 때문에 가변, 동적이라고 합니다.