프로세스와 스레드
- 프로세스 : 실행중인 프로그램
- 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 스레드로 구성
- 프로세스의 자원을 이요해서 실제로 작업을 수행하는 것이 스레드
- 모든 프로세스에는 최소한 하나 이상의 스레드가 존재
- 둘 이상의 스레드를 가진 프로세스를 멀티스레드 프로세스라고 함
- 하나의 프로세스가 가질 수 있는 스레드의 개수는 제한되어 있지 않으나 스레드가 작업을 수행하는데 개별적인 메모리 공간(호출스택)을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 수 있는 스레드의 수가 결정됨
- 실제로는 프로세스의 메모리 한계에 다다를 정도로 많은 스레드를 생성하는 일은 없음
멀티태스킹과 멀티스레딩
- 여러개의 프로세스가 동시에 실행되는 것 : 멀티 태스킹
- 하나의 프로세스 내에서 여러개의 스레드가 동시에 실행되는 것 : 멀티스레딩
- CPU의 코어가 한번에 단 하나의 작업만 수행할 수 있으므로 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 일치
- 코어가 아주 짧은 시간 동안 여러 작업을 번갈아가며 수행함으로써 여러 작업들이 모두 동시에 수행되는 것처럼 보임
멀티스레딩의 장단점
- 장점
- CPU의 사용률을 향상시킴
- 자원을 보다 효율적으로 사용
- 사용자에 대한 응답성이 향상
- 작업이 분리되어 코드 간결
- 단점
- 자원을 공유하면서 작업하기 때문에 도익화, 교착상태 같은 문제 발생