프로세스 메모리 구조

nathan·2022년 1월 18일
0

Computer Science

목록 보기
1/2

🧐 프로세스? 그게 뭔데? (vs. 프로그램)

비교프로세스(Process)프로그램(Program)
정의실행중인 하나의 프로그램지정된 작업을 수행하는 하나의 명령어 집합
상태동적인 개체정적인 개체
주기제한된 주기
(실행시 생성됐다가 실행이 종료되면 제거됨)
긴 주기
(disk에 영원히 저장가능)
포함다양한 resource 포함
memory address, disk, printer, etc..
일정 파일의 disk에 저장이 되고,
다른 resource를 필요로 하지 않는다.
  • 프로세스는 스케줄링의 대상이 되는 작업(task)와 같은 의미로 쓰인다.

프로세스 메모리 구조

  • 하드 디스크에 있는 프로그램을 실행하면, 실행을 위해 메모리 할당이 이뤄지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라고 부른다.
  • 일반적으로 프로세스가 차지하는 가상 메모리는 다음과 같은 범주로 구분할 수 있다.

Text

  • 프로그램 내에 존재하는 함수 코드, 제어문, 상수 등을 포함한다.
  • 일반적으로 한 번 로딩하면, 바뀌지 않는다.
  • JVM에서는 codecache라는 이름으로 관리된다.

GVAR/BSS

  • 범위(Scope)가 정해지지 않는 전역(Global, Static) 변수를 포함한다.
  • GVAR은 초기값을 0이 아닌 특정한 값으로 지정한 경우 사용한다.
  • JVM에서는 Metaspace라는 이름으로 관리된다.

HEAP

  • 동적 할당 메모리 공간이다.
  • malloc, new 명령 등으로 할당한다.
  • Heap 영역에 할당한 메모리 공간에 대한 주소를 참조하는 경우가 많다.

Unused Memory

  • stack과 heap이 메모리를 공유하는 공간. (쯤으로 생각하면 될듯)
  • 자바에서는 Unused Memory가 존재하지 않고 Stack과 Heap이 따로 관리되는 듯 하다.

Stack

  • 함수 호출시 지역변수, 매개변수, 리턴 값 등이 쌓인다.
  • 함수를 여러 개 호출하면, Stack Frame으로 구분지어 관리하며, 첫 부분에 RSP, 끝 부분에 RBP라는 포인터를 두어 관리한다.

Reference

profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글