Skip to main content 프로세스와 스레드의 차이점은?
프로세스
- 시스템 자원을 할당받아 실행되는, 프로그램의 인스턴스.
- 하나 이상의 스레드가 할당된다.
- 독립적인 메모리 공간(스택, 힙, 데이터, BSS, 코드 세그먼트)을 할당받는다.
스레드
- 시스템 자원을 할당받아 실행되는, 프로세스 내부의 작업 묶음.
- 프로세스가 할당받는 시스템 자원을 이용한다. 스택 세그먼트를 제외한 메모리 공간을 다른 스레드와 공유한다.
프로세스와 스레드의 메모리 구조
- 프로세스는 독립적인 메모리 공간을 할당받는다.
- 스레드는 스택 세그먼트를 제외한 메모리 공간을 다른 스레드와 공유한다.
- 스택 세그먼트
- 함수 호출 시 생성되는 지역 변수, 매개 변수 등이 저장되는 세그먼트. 함수 호출과 함께 할당되고 함수가 반환될 때 해제된다.
- 지역 변수, 매개 변수, 반환 값 등의 크기는
컴파일
시에 계산된다.
- 실제 메모리 할당은
런타임
시에 이루어진다.
- 높은 주소부터 할당된다.
- 힙 세그먼트
- 동적 할당시 사용되며
런타임
에 크기가 결정된다.
- 낮은 주소부터 할당된다.
- 데이터 세그먼트: 초기화된 전역 변수, 정적 변수, 상수가 할당된다.
- BSS 세그먼트: 전역 변수, 정적 변수, 상수 중 초기화되지 않았거나 0으로 초기화된 변수가 할당된다.
- 코드 세그먼트: 소스 코드를 저장한다.
프로세스와 스레드의 차이점
- 프로세스와 스레드 모두 병렬 처리를 통해 시스템 자원의 사용률을 높이고 처리 속도를 높인다.
- 프로세스는 데이터를 격리하여 안정성 면에서 유리한 반면, 스레드는 메모리 공간을 대부분 공유하기 때문에 컨텍스트 스위칭의 비용이 낮고, 작업 속도가 빠르다.