Backend
home
🪜

프로세스 vs 스레드

Github 링크
날짜
2025/09/20

프로세스 vs 스레드 차이

1. 프로세스(Process)란?

운영체제에서 실행 중인 프로그램을 의미한다.
각각의 프로세스는 독립된 메모리 공간(코드, 데이터, 스택, 힙)을 가지고 동작한다.
예시
크롬 브라우저를 실행하면, 각 탭이 별도의 프로세스로 동작한다.
한 탭이 멈추더라도 다른 탭에는 영향이 없다.

2. 스레드(Thread)란?

프로세스 내부에서 실행되는 작은 실행 단위이다.
스레드는 프로세스의 메모리를 공유하기 때문에, 같은 프로세스 안의 스레드끼리는 데이터 교환이 빠르다.
하지만 공유 자원에 동시에 접근하면 동기화 문제(Deadlock, Race Condition)가 발생할 수 있다.
예시
메신저 앱에서
한 스레드는 메시지 송신 담당
다른 스레드는 수신 담당
또 다른 스레드는 UI 업데이트 담당

3. 프로세스 vs 스레드 비교

구분
프로세스
스레드
메모리 구조
독립적인 메모리 공간 보유
프로세스의 메모리 공유
생성 비용
상대적으로 무거움
상대적으로 가벼움
안정성
한 프로세스 장애 → 다른 프로세스 영향 없음
한 스레드 오류 → 같은 프로세스 내 전체 영향
통신 방식
IPC 필요 (파이프, 소켓 등)
메모리 공유로 빠름
사례
크롬 브라우저 탭
메신저 앱 송수신 스레드

4. 정리

프로세스: 독립성은 높지만 비용이 크다(안정성 중시).
스레드: 경량 실행 단위, 메모리 공유로 인해 빠르지만 동기화 이슈가 존재한다.
실무에서는 보통 멀티 프로세스 + 멀티 스레드 혼합 구조를 사용한다.
예: 웹 브라우저(멀티 프로세스) + 각 탭 내부에서 여러 스레드 동작

추가 학습 키워드

멀티 프로세스 vs 멀티 스레드 아키텍처
컨텍스트 스위칭(Context Switching)
동기화 기법 (Semaphore, Mutex)