프로세스의 가상 주소 공간은 대표적으로 코드, 데이터, 힙, 스택 영역으로 나눌 수 있습니다. 각 영역은 저장하는 정보와 생명주기가 다릅니다.

  • 코드(Code/Text): 실행할 기계어 명령을 저장하며, 보통 읽기·실행 권한을 가집니다.
  • 데이터(Data/BSS): 전역 변수와 정적 변수를 저장합니다. 일반적으로 0이 아닌 초기값이 있는 변수는 Data, 0으로 초기화되거나 명시적으로 초기화하지 않은 변수는 BSS에 배치됩니다.
  • 힙(Heap): 실행 중 동적으로 할당한 데이터를 저장하며, 할당자나 런타임이 수명을 관리합니다.
  • 스택(Stack): 함수 호출에 필요한 지역 변수, 매개변수, 복귀 주소 등을 관리하며, 스레드마다 별도로 가집니다.

실제 배치는 운영체제·실행 파일 형식·컴파일러에 따라 달라지고, 공유 라이브러리나 메모리 매핑 영역도 존재합니다. 핵심은 힙은 프로세스 내에서 공유되고, 스택은 각 스레드의 호출 흐름을 관리한다는 점입니다.

출처 및 참고자료