프로세스란?
- 실행중인 프로그램이다
- 프로그램의 코드와 데이터가 RAM에 로드될때부터 프로세스라고 부른다
- 프로그램이란?
- 하드디스크에 저장된 명령어와 정적 데이터들의 모음(코드 덩어리)
프로그램이 실행되는 과정 ⇒
- 사용자가 프로그램을 실행하라는 명령을 내린다
- 운영체제는 디스크에 저장된 프로그램의 코드와 데이터를 RAM에 로드한다
- 운영체제는 해당 프로그램에 대한 프로세스를 생성한다(PCB 포함)
- 프로세스 스케줄러에 의해 프로세스가 CPU을 할당받으면 RAM에 로드된 명령어를 실행한다
프로세스의 메모리 구조
- Code 영역 : 컴파일 된 명령어들이 저장되고, 컴파일 시 크기가 결정된다
- Data 영역 : 초기화된 전역 변수와 static 변수가 저장되고, 컴파일 시 크기가 결정된다. 이때 Data 영역은 초기화된 전역 변수가 저장되는 공간과 초기화되지 않은 전역변수가 저장되는 BSS 공간으로 분류된다
- Heap 영역 : 프로그래머에 의해 동적으로 생성된 변수나 객체가 저장된다. 런타임 시 크기가 결정되고, JAVA의 경우 가비지컬렉터로 관리한다
- Stack 영역 : 함수의 호출과 관련된 정보를 저장하는 공간으로 지역변수, 매개변수 등이 포함된다. 함수 호출되는 시점에 생성되고, 종료되는 시점에 제거된다
Heap Area VS Stack Area