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)