[cs] 프로세스 메모리 구조

·2022년 1월 18일
0

개발 기록

목록 보기
16/68

프로그램과 프로세스

프로그램

  • 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음

프로세스

  • 컴퓨터 내에 실행중인 프로그램을 일컫는 용어

프로그램이 실행되면 프로세스가 생성되고 메모리에서 해당 프로세스의 address space가 할당된다.

메모리 구조

코드 영역(텍스트 영역)

  • 작성된 소스코드가 들어있는 부분
  • 읽기만 가능하다.
  • 크롬을 여러 탭 띄우고 있는 것처럼 같은 프로그램을 실행하는 프로세스끼리 공유해 메모리 사용량을 줄인다.

데이터 영역

  • 전역변수와 static변수가 할당되는 영역
  • 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 소멸된다.
  • 읽고 쓰기가 가능하다.

스택 영역

  • 프로그램이 자동으로 사용하는 임시 메모리 영역
  • 함수 호출 시 지역 변수와 매개 변수가 저장되는 영역
  • 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
  • 읽고 쓰기가 가능하다.
  • 컴파일 타임에 크기가 결정된다.

실제 스택 영역은 변수 단위가 아닌 stack frame단위로 쌓이게 되고 이 stack frame은 함수 단위로 나눠진다.이 stack frame은 지역 변수, 전달받은 인자, 함수가 끝나고 실행할 다음 명령어의 주소를 담고있다.

힙 영역

  • 프로그래머가 동적으로 메모리를 할당/해제하는 메모리 공간
  • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
  • 읽고 쓰기가 가능하다.
  • 런타임에 크기가 결정된다.

스택과 힙은 같은 공간을 공유하지만, 할당되는 시작 위치가 다르다. 그래서 힙이 스택을 스택이 힙을 침범할 수 있는데 이를 overflow라 한다.

참고

[컴퓨터 기초] 메모리구조(Memory Structure)
프로세스(Process)의 주소 공간(Address Space)
스택 메모리 라스트
힙 메모리 소개, Heap memory introduction

0개의 댓글