본문 바로가기

Programming

프로세스의 메모리 주소 공간 (Memory address space of Process)

프로세스의 메모리 주소 공간

  • 코드

  • 데이터

  • 스택

    현대의 모든 운영체제는 가상 메모리 기반으로 동작함

  • 각 프로세스는 독립적인 가상 메모리의 주소 공간을 갖는다.

    • 프로세스는 자신만 메모리를 독점하고 있다고 생각

코드

  • 실행할 프로그램의 코드가 저장
  • 프로그램 시작부터 끝까지 메모리에 남아있음

데이터

초기화 된 데이터

  • 전역변수, 정적(static)변수, 소스코드 상의 문자열
  • 실행파일에 데이터를 기록해야함
  • 실행 파일의 크기가 크다.

    초기화 되지 않은 데이터 (BSS-Block Started by Symbol)

  • 초기화 없이 해당 데이터의 사이즈만 기억함
  • 해당 부분을 실행 할 때 할당 받으면서 0으로 초기화함
  • 실행 파일의 크기가 작다.

힙 (Heap)

  • 동적으로 할당한 메모리를 저장
  • 개발자가 관리하는 메모리 영역 (할당 해제 안하면 memory leak)
  • 런타임에 크기가 정해짐
  • 위에서부터 채워짐

스택 (Stack)

  • 함수 내의 지역변수, 매개변수, 리턴값, 함수 복귀 주소 등 로컬 값을 저장
  • 컴파일타임에 크기가 정해
  • 함수, 메서드 마다 쭉 쌓임
  • 아래에서부터 채워짐