프로세스(Process)와 쓰레드(Thread) 비교

우선 프로세스(Process)는 운영체제로부터 자원을 할당받는 작업의 단위이고 쓰레드(Thread)는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.

아래에 프로세스쓰레드의 몇 가지 특징들을 간단히 비교해보았다.

프로세스(Process)

  • 프로그램에 대한 인스턴스
  • 기본적으로 모든 프로세스는 하나 이상의 쓰레드를 가짐(메인 쓰레드)
  • 자신만의 고유 공간과 자원을 할당받음(메모리 공간과 자원 소모가 상대적으로 큼)

쓰레드(Thread)

  • 프로세스 내에서 실제 작업을 수행
  • 하나의 프로세스 안에서 각각의 스택 공간을 제외한 나머지 공간과 자원을 다른 쓰레드와 공유(메모리 공간과 자원 소모가 상대적으로 작음)
  • 스택 영역만 Switching하면 되므로 Context Switching 속도가 상대적으로 빠름
  • 자원 공유로 인한 동기화 문제 발생
  • 디버깅 어려움