프로세스와 스레드의 차이(Process vs Thread)

동기화와 교착상태(Deadlock)

Thread / 스레드

예전에는 프로그램을 실행하는 흐름은 프로세스 뿐이었는데 소프트웨어가 진보하면서 하나의 프로세스에서 복잡한 동시 작업을 요구하기 시작하였다. 이를 위해 하나의 프로그램이 여러 개의 프로세스를 생성하여 서로 통신하는 식으로 구현을 하게 되었는데 프로세스 특성상 이러한 동시 작업을 수월하게 할 수 없었다.

그러다보니 프로세스보다 작은 실행 단위가 필요하였고 그게 바로 스레드다. 하나의 프로세스에서 여러 개의 스레드가 메모리를 공유하여 코드를 실행한다. 프로세스와 달리 생성과 제거가 빠르고 작은 메모리를 점유하고 있어 정보 교환이 쉽고 Context Swithing 부하가 적다는 장점을 가지고 있지만, 그 대가로 자원 선점과 동기화 문제를 가지게 되었다.

대다수의 운영체제의 스케줄러는 스레드를 최소 단위로 하여 동작한다. 즉, 스레드가 코드 실행을 담당한다.

image.png

image.png

프로세스와 스레드의 차이 프로세스는 운영체제로 부터 자원을 할당받는 작업의 단위이고, 쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위

쓰레드(Thread)의 장점

쓰레드 동기화 방법의 종류