프로세스와 스레드의 정의와 특징

공부/개발

프로세스와 스레드의 정의와 특징

휴전 2025. 1. 13. 22:05

 

1. 프로세스 (Process)

  • 정의: 실행 중인 프로그램의 인스턴스. 운영 체제에서 독립된 실행 단위.
  • 특징:
    • 각 프로세스는 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 가짐.
    • 다른 프로세스와 메모리를 공유하지 않음 (IPC, Inter-Process Communication 사용 필요).
    • 상대적으로 무겁고 생성/종료 시 오버헤드가 크며, 문맥 교환 비용이 높음.

 

2. 스레드 (Thread)

  • 정의: 프로세스 내에서 실행되는 경량화된 실행 단위.
  • 특징:
    • 같은 프로세스 내의 스레드는 메모리(코드, 데이터, 힙)를 공유.
    • 각 스레드는 독립된 스택과 레지스터를 가짐.
    • 상대적으로 가볍고, 생성/종료 시 오버헤드가 적으며, 문맥 교환 비용이 낮음.

 

장단점

프로세스

  • 장점:
    • 독립적이어서 하나의 프로세스가 종료되더라도 다른 프로세스에 영향을 미치지 않음.
    • 보안성이 높음(메모리를 공유하지 않기 때문).
  • 단점:
    • 문맥 교환(Context Switching) 비용이 크고, 생성/소멸 속도가 느림.
    • 프로세스 간 통신(IPC)이 복잡함.

스레드

  • 장점:
    • 자원을 공유하므로 효율적임.
    • 문맥 교환이 빠르고, 생성/종료 속도가 빠름.
  • 단점:
    • 하나의 스레드가 문제가 생기면 프로세스 전체가 종료될 위험.
    • 동기화 문제가 발생할 가능성이 높음(데드락, 레이스 컨디션).

사용 예시

프로세스 사용 예시

  • 웹 브라우저(각 창/탭은 별도의 프로세스).
  • 데이터베이스 서버(독립적 프로세스를 통해 클라이언트 처리).

스레드 사용 예시

  • 웹 서버(각 클라이언트 요청을 처리하는 스레드).
  • 게임(그래픽 렌더링, 사용자 입력, 네트워크 처리 등 각각 스레드 활용).

효과적인 사용 시점

  • 프로세스:
    • 높은 안정성이 필요하거나, 독립적인 작업 단위로 구분할 필요가 있을 때.
    • 서로 다른 애플리케이션 간의 독립성을 보장할 때.
  • 스레드:
    • 같은 데이터에 대한 여러 작업을 병렬로 수행해야 할 때.
    • 실시간 반응이 중요하거나 자원을 공유하는 작업이 많을 때.

 

오늘은 프로세스와 스레드의 정의, 사용예시, 장단점 등에 대해 알아보았습니다 😊

자주 쓰이는 용어이니 꼭 기억합시다.