프로세스 메모리 영역

목차

프로세스의 Address Space(주소공간)

프로그램이 실행되면 Process Address Space가 할당된다. Process Address Space는 Text(Code), Data, Stack, Head 4가지 영역으로 구분된다.

프로세스가 생행되면 각 프로세스는 운영체제로부터 독립된 메모리영역을 할당 받습니다. 때문에 한 프로세스 메모리 영역에 다른 프로세스가 접근할 수 없습니다.

프로세스 메모리 영역은 Code, Data, Heap, Stack 4가지 영역으로 구분됩니다.

Text(Code)

  • 프로그램 코드가 저장되는 메모리 영역
  • 프로그램이 실행될 때 할당 됐다가 프로그램이 종료하면 해제된다. (고정된 영역)
  • Read Only

Data

  • 프로그램의 전역변수, 정적변수가 저장되는 메모리 영역
  • 프로그램이 실행될 때 할당 됐다가 프로그램이 종료하면 해제된다. (고정된 영역)
  • Read/Write

Stack

함수 호출시 할당됐다가 종료시 해제되는 메모리영역

  • 지역변수와 매게변수를 저장하기 위한 메모리 영역
  • 함수 호출과 함께 할당 됐다가 함수 호출이 끝나면 해제된다.
  • Thread 별로 생성되는 영역이다.
  • 메모리가 높은 주소에서 낮은 주소로 할당된다
  • Read/Write

Heap

  • 동적 할당을 위한 메모리 영역
  • Run Time(런타임)에 크기가 결정되는 메모리 영역
  • Stack과는 반대로 메모리가 낮은 주소에서 높은 주소로 할당된다.

Stack 과 Heap 의 메모리 할당 방식

스택 영영과 힙 영역은 메모리를 효율적으로 사용하기 위해 서로 반대로 메모리를 항당합니다. 만약, 스택이나 힙에서 주어진 영역을 벗어나 상대방 메모리 영역을 침벌하게 되면 Overflow(오버 플로우) 라 합니다.

힙이 스택을 침범하는 경우를 Heap Overflow(힙 오버 플로우) 라 하고, 스택이 힙을 침범하는 경우를 Stack Overflow(스택 오버 플로우) 라 한다.

Share