CS

프로세스 메모리(스택, 힙, 데이터 영역, 코드 영역) 구조 개념 및 특징

cob 2023. 1. 13. 08:28

 

프로세스 메모리 

 

운영체제는 프로세스마다 각각 독립적인 메모리 영역을 할당해 주기 때문에 프로세스간 영향을 받지 않고, 작업을 수행할 수 있다. 기본적으로 다른 프로세스의 변수나 자료에 적급할 수 없지만, IPC나 공유 메모리 등의 통신 기법을 사용하면 접근할 수 있다.

 

 

프로세스 메모리 구조

  • 스택은 위 주소부터 할당되고, 힙은 아래 주소부터 할당된다.
  • 스택과 힙에 저장되는 함수는 객체는 동적으로 Run 타임 때 계속 늘어날 수 있기 때문에 메모리 사용량이 늘어난다.

 

 

 


1. 스택(Stack)

  • 동적인 특징을 가진다.
  • 지역변수, 매개변수, 함수가 저장된다. 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.
  • 컴파일 시에 크기가 결정된다.
  • 함수가 함수를 재귀적으로 호출하게 되면 동적으로 크기가 늘어날 수 있는데, 이때 힙과 스택의 메모리 영역이 겹치면 안 되기 때문에 힙과 스택 사이의 공간을 비워 놓는다.

 

 


2. 힙(Heap)

  • 동적인 특징을 가진다.
  • 객체나 배열, 문자열 등이 저장된다.
  • 런타임 시에 크기가 결정되고 동적 할당할 때 사용된다. ex) 벡터 같은 동적 배열은 힙에 동적 할됭된다.

 

 

 


3. 데이터 영역

  • 코드가 실행될 때 사용되는 전역변수(global), 정적변수(static)가 저장된다.
  • 정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어있다.
  • 데이터 영역은 BSS영역과 Data 영역으로 나뉜다.
    - BSS 영역 : 초기화가 되지 않은 변수가 0으로 초기화되어 저장된다.
    - Data 영역 : 0이 아닌 다른 값으로 할당된 변수들이 저장된다.

 

 


4. 코드 영역

  • 정적인 특징을 가진다.
  • 프로그램에 내장되어 있는 소스 코드가 들어가 있는 영역이다.
  • 수정 부가능한 기계어로 저장되어 있다.
반응형