프로세스와 스레드의 차이
프로세스와 스레드는 어떤 차이를 가지고 있을까요. 관련 서적에는 이런식으로 정의되어 있더라고요.
먼저 그림으로 쉽게 알아봅시다.
위의 그림만 봐도 차이는 쉽게 알 수 있습니다. 조금 더 디테일하게 비교해보자면!
먼저 메모리 사용
에 대한 차이가 있습니다. 프로세스는 자신만의 고유 메모리를 할당 받아 사용합니다. 그러니까 독립적으로 실행되지요. 운영체제로부터 프로세서도 할당받고 주소공간, 메모리 자원 등을 할당 받습니다. 반면에 스레드는 하나의 프로세스 내의 여러 흐름
인 것처럼 프로세스 내의 주소 공간이나 자원을 공유해서 실행됩니다.
이를 그림으로 본다면 아래와 같다고 볼 수 있지요.
이와같은 특성으로 인해 스레드 간의 전환 속도가 프로세스 간의 전환보다 더 빠릅니다. 그렇다고해서 스레드는 장점만 있는 것이 아닙니다. 스레드 간의 잘못된 자원 공유로 인해 오류가 발생할 수 있지요.
정리해보면,
스레드의 장점
- 프로그램의 응답 시간이 단축되며 시스템의 자원 소모가 줄어든다.
- 스레드간의 통신 방법이 프로세스 간 통신 방법에 비해 훨씬 간단하다.
스레드의 단점
- 프로세스 밖에서 각각의 스레드를 제어할 수 없다.
- 미묘한 시간차나 잘못된 변수를 스레드끼리 공유하게 되는 경우에는 오류가 발생할 수 있다.
- 프로그램 디버깅이 상대적으로 어렵고 단일 프로세서(Single Processor) 시스템에서는 효과를 기대하기 어렵다.