메모리 구조

2020. 12. 15. 18:102021/JOB DA STUDY

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 Load(적재)되어야하며,

프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.

 

컴퓨터 운영체제에서는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하는데, 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간에는 다음의 영역들이 존재한다.

  1. Code 영역
  2. Data 영역
  3. Stack 영역
  4. Heap 영역

Code 영역

실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 한다.
CPU는 코드영역에 저장된 명령어를 하나씩 가져가서 처리

 

Data 영역

프로그램의 전역 변수와 정적 변수가 저장되는 영역이다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램 종료시 함께 소멸

 

Stack 영역

함수 호출과 관계되는 지역변수, 매개변수가 저장되는 영역이다.
함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸 (스택 영역에 저장되는 함수의 호출 정보를 stack frame이라고 한다.
push 동작으로 데이터 저장, pull 동작으로 데이터 인출(LIFO: Last In First Out)
스택 영역은 메모리의 높은 주소에서 낮은 주소 방향으로 할당

 

Heap 영역

사용자에 의해 동적으로 할당되고 해제되는 메모리 영역이다.
힙 영역은 메모리의 낮은 주소에서 높은 주소 방향으로 할당