프로세스란?

ROK·2022년 9월 21일
0

프로세스란?

  • 프로세스는 실행중에 있는 프로그램을 의미한다
  • 스케줄링의 대상이 되는 작업과 같은 의미로 사용
  • 프로세스 내부에는 최소 하나 이상의 스레드를 가지고 있다
    • 스레드 단위로 스케줄링을 한다.
  • 하드디스크에 있는 프로그램을 실행하면, 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라간다.

프로세스의 메모리 구조

프로세스의 메모리 구조는 프로세스 하나당 하나씩 존재한다.

영역설명
CODE 영역- 사용자가 작성한 프로그램 함수들이 저장되는 공간(소스코드가 저장되는 공간)
- CPU에서 동작할 기계어 형태로 변환되어 저장된다
- 컴파일(Compile) 할때 결정되고, 중간에 코드를 바꿀 수 없다(Read-Only)
DATA 영역- 전역변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공간
- 전역변수, static 변수를 참조한 코드는 컴파일 완료 후, data 영역의 주소값을 가르키도록 바뀐다.
- 전역변수가 변경될 수 있다(Read-Write)
STACK 영역- 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 공간
- 데이터에는 지역변수, 매개변수, 리턴값, 파라미터 등이 있다
- 이 영역은 함수를 호출할때만 기록하고 함수의 수행이 완료되면 사라진다.
- 컴파일 할 때 stack 영역의 크기가 결정되기 때문에 무한정 할당할 수 없다.
- 재귀함수가 반복해서 호출되거나 메모리를 초과할 만큼의 지역변수가 있다면 stack overflow가 발생한다.
HEAP 영역- 프로그래머가 필요할 때마다 사용하는 메모리 영역
- heap 영역은 런타임할 때 결정된다.
profile
하루에 집중하자

0개의 댓글