프로세스
운영체제로부터 자원을 할당받는 작업의 단위
* 실행 중인 프로그램 ( OS로부터 실행에 필요한 자원(메모리)를 할당받으면 프로세스가 됨 )
스레드 (LWP. 경량 프로세스)
프로세스가 할당받은 자원을 이용하는 실행의 단위
* 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것
쓰레드는 작업을 수행하는데 개별적인 메모리 공간을 필요로 함(호출스택)
멀티태스킹 VS 멀티쓰레딩
멀티태스킹 :
여러 개의 프로세스가 동시에 실행
멀티쓰레딩 :
하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것
동시에 처리되는 작업의 개수는 코어의 개수와 일치
코어가 여러 쓰레드를 번갈아가면서 수행
프로세스의 성능이 단순히 쓰레드의 개수에 비례하는 것은 아니며,
하나의 쓰레드를 가진 프로세스 보다 두 개의 쓰레드를 가진 프로세스가 더 낮은 성능을 보일 수 있다.
멀티쓰레딩의 장점 :
- CPU의 사용률을 향상시킨다.
- 자원을 보다 효율적으로 사용
- 사용자에 대한 응답성이 향상
- 작업이 분리되어 코드 간결
멀티쓰레딩의 단점 :
같은 프로세스에서 자원을 공유하면서 작업을 함
- 동기화 (Synchronization)
- 교착 상태 (deadlock)
: 두 쓰레드가 자원을 점유한 상태에서 서로 상채편이 점유한 자원을 사용하려고 기다르느라 진행이 멈춘 상태
같은 문제들을 고려해서 신중히 프로그래밍 해야한다.