프로세스 vs 스레드 차이
1. 프로세스(Process)란?
•
운영체제에서 실행 중인 프로그램을 의미한다.
•
각각의 프로세스는 독립된 메모리 공간(코드, 데이터, 스택, 힙)을 가지고 동작한다.
예시
•
크롬 브라우저를 실행하면, 각 탭이 별도의 프로세스로 동작한다.
◦
한 탭이 멈추더라도 다른 탭에는 영향이 없다.
2. 스레드(Thread)란?
•
프로세스 내부에서 실행되는 작은 실행 단위이다.
•
스레드는 프로세스의 메모리를 공유하기 때문에, 같은 프로세스 안의 스레드끼리는 데이터 교환이 빠르다.
•
하지만 공유 자원에 동시에 접근하면 동기화 문제(Deadlock, Race Condition)가 발생할 수 있다.
예시
•
메신저 앱에서
◦
한 스레드는 메시지 송신 담당
◦
다른 스레드는 수신 담당
◦
또 다른 스레드는 UI 업데이트 담당
3. 프로세스 vs 스레드 비교
구분 | 프로세스 | 스레드 |
메모리 구조 | 독립적인 메모리 공간 보유 | 프로세스의 메모리 공유 |
생성 비용 | 상대적으로 무거움 | 상대적으로 가벼움 |
안정성 | 한 프로세스 장애 → 다른 프로세스 영향 없음 | 한 스레드 오류 → 같은 프로세스 내 전체 영향 |
통신 방식 | IPC 필요 (파이프, 소켓 등) | 메모리 공유로 빠름 |
사례 | 크롬 브라우저 탭 | 메신저 앱 송수신 스레드 |
4. 정리
•
프로세스: 독립성은 높지만 비용이 크다(안정성 중시).
•
스레드: 경량 실행 단위, 메모리 공유로 인해 빠르지만 동기화 이슈가 존재한다.
실무에서는 보통 멀티 프로세스 + 멀티 스레드 혼합 구조를 사용한다.
예: 웹 브라우저(멀티 프로세스) + 각 탭 내부에서 여러 스레드 동작
추가 학습 키워드
•
멀티 프로세스 vs 멀티 스레드 아키텍처
•
컨텍스트 스위칭(Context Switching)
•
동기화 기법 (Semaphore, Mutex)

