1. 정의
- 프로세스: 프로그램을 메모리 상에서 실행중인 작업
- 스레드: 프로세스 안에서 실행되는 여러 흐름 단위
- 기본적으로 프로세스마다 최소 1개의 스레드를 소유
- 내부구조
- code: 코드 자체를 구성하는 메모리 영역
- data: 전역변수, 정적변수, 배열 등
- heap: 동적할당 시 사용(
new()
, malloc()
)
- stack: 지역변수, 매개변수, 리턴값
- 독립적인 함수 호출을 위해 thread의 stack만 독립적으로 할당
2. 멀티 프로세서
- 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것
- 장점: 안전성
- 단점
- 각각 독립된 메몸리 영역을 가지고 있어, 작업량이 많을 수록 오버헤드 발생
- context switching으로 인한 성능저하
3. 멀티쓰레드
- 하나의 응용프로그램에서 여러 쓰레드를 구성해 각 쓰레드가 하나의 작업을 수행하는 것
- 장점
- 공유메모리를 통한 시간, 자원손실 감소
- 전역 변수와 정적 변수에 대한 자료 공유 가능
- 단점: 한 쓰레드가 데이터 공간을 망가뜨리면, 모든 쓰레드가 작동 불가