Process vs. Thread

  1. 프로세스:

    • 독립적인 실행 단위로, 자체 메모리 공간과 시스템 자원을 가진다.
    • 다른 프로세스와 완전히 격리되어 있어 안정성이 높다.
    • 생성과 전환에 많은 비용이 든다.
  2. 스레드:

    • 프로세스 내부의 실행 단위로, 같은 프로세스의 다른 스레드와 메모리를 공유한다.
    • 프로세스보다 가볍고, 생성과 전환 비용이 적다.
    • 동시성을 제공하지만, 동기화 문제에 주의해야 한다.

Single Threaded vs Multi-threaded Process
https://www.geeksforgeeks.org/thread-in-operating-system/

Process vs. Thread

특성ProcessThread
정의실행 중인 프로그램의 인스턴스프로세스 내에서 실행되는 더 작은 실행 단위
메모리 공간독립적인 메모리 공간 (코드, 데이터, 스택, 힙)프로세스의 메모리 공간 공유 (코드, 데이터, 힙), 독립적인 스택
구성 요소- 코드 영역
- 데이터 영역
- 스택 영역
- 힙 영역
- 스레드 ID
- 프로그램 카운터
- 레지스터 집합
- 스택
자원 공유다른 프로세스와 자원 공유 안 함같은 프로세스 내 스레드 간 자원 공유
생성 비용높음낮음
컨텍스트 스위칭비용이 큼비용이 적음 (같은 프로세스 내에서)
안정성높음 (한 프로세스의 오류가 다른 프로세스에 영향 없음)상대적으로 낮음 (한 스레드의 오류가 전체 프로세스에 영향)
통신프로세스 간 통신(IPC) 필요 (복잡하고 오버헤드 큼)쉽고 빠른 통신 (공유 메모리 사용)
병렬 처리가능하지만 오버헤드 큼효율적인 병렬 처리 가능

메모리 구조 비교

메모리 영역ProcessThread
코드 영역독립적공유
데이터 영역독립적공유
힙 영역독립적공유
스택 영역독립적각 스레드마다 독립적

특성 상세 비교

특성ProcessThread
독립성완전히 독립적부분적으로 독립적
자원 공유제한적 (IPC 필요)쉽게 공유 가능
오류 영향다른 프로세스에 영향 없음같은 프로세스의 모든 스레드에 영향
동기화필요성 낮음
- IPC 메커니즘 필요
공유 자원에 대한 동기화 필요
- 뮤텍스, 세마포어 등 사용
생성 시간더 오래 걸림더 빠름
종료 시간더 오래 걸림더 빠름

장단점 비교

구분ProcessThread
장점- 높은 안정성
- 다른 프로세스의 영향 받지 않음
- 보안성이 높음
- 생성/종료가 빠름
- 자원 공유가 쉬움
- 통신 비용이 적음
단점- 많은 시스템 자원 필요
- 프로세스 간 통신이 복잡
- 컨텍스트 스위칭 비용이 큼
- 동기화 문제 발생 가능
- 디버깅이 어려움
- 하나의 스레드 문제가 전체에 영향

사용 사례 비교

용도Process 선호Thread 선호
웹 서버안정성이 중요한 경우높은 동시성이 필요한 경우
GUI 앱독립적인 작업이 많은 경우반응성이 중요한 경우
데이터 처리대용량 병렬 처리데이터 공유가 많은 경우
시스템 서비스격리가 필요한 경우빈번한 통신이 필요한 경우
활용 예- 독립적인 애플리케이션
- 웹 브라우저의 각 탭
- 다중 사용자 서버
- 웹 서버 요청 처리
- 게임 엔진 (렌더링, 물리 연산)
- 멀티미디어 애플리케이션

동기화 메커니즘 비교

메커니즘ProcessThread
공유 메모리명시적으로 설정 필요기본적으로 공유
뮤텍스프로세스 간 뮤텍스 필요프로세스 내 뮤텍스 사용
세마포어시스템 세마포어 필요프로세스 내 세마포어 사용
메시지 전달IPC 메커니즘 사용직접 메모리 접근

이러한 차이점들을 이해하고 적절히 활용하면, 상황에 맞는 최적의 실행 단위를 선택할 수 있다.


참고 및 출처