우선 프로세스(Process)는 운영체제로부터 자원을 할당받는 작업의 단위이고 쓰레드(Thread)는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
아래에 프로세스와 쓰레드의 몇 가지 특징들을 간단히 비교해보았다.
프로세스(Process)
- 프로그램에 대한 인스턴스
- 기본적으로 모든 프로세스는 하나 이상의 쓰레드를 가짐(메인 쓰레드)
- 자신만의 고유 공간과 자원을 할당받음(메모리 공간과 자원 소모가 상대적으로 큼)
쓰레드(Thread)
- 프로세스 내에서 실제 작업을 수행
- 하나의 프로세스 안에서 각각의 스택 공간을 제외한 나머지 공간과 자원을 다른 쓰레드와 공유(메모리 공간과 자원 소모가 상대적으로 작음)
- 스택 영역만 Switching하면 되므로 Context Switching 속도가 상대적으로 빠름
- 자원 공유로 인한 동기화 문제 발생
- 디버깅 어려움