멀티프로세스와 멀티스레드

손주현·2025년 4월 11일
post-thumbnail

멀티프로세스(Multi-Process)란?

하나의 프로그램이 여러 개의 프로세스를 생성하여 병렬로 실행하는 구조

  • 각 프로세스는 독립된 메모리 공간을 가짐
  • 프로세스 간 통신은 IPC(Inter-Process Communication)을 통해 수행됨 (예: 파이프, 소켓 등)
  • 하나가 죽어도 다른 프로세스에 영향이 적음

예시

  • 웹 브라우저(크롬): 탭마다 별도 프로세스로 실행 → 한 탭이 다운되어도 다른 탭은 영향 없음
  • 서버: 클라이언트 요청마다 별도 프로세스로 처리

멀티스레드(Multi-Thread)란?

하나의 프로세스 안에서 여러 개의 스레드가 동시 실행되는 구조

  • 스레드는 코드, 데이터, 힙을 공유하고 스택만 독립적
  • 같은 프로세스 내에서 빠르게 통신하고 협업 가능
  • 하지만 하나의 스레드 오류가 전체 프로세스에 영향을 줄 수 있음

예시

  • 게임 클라이언트: 렌더링, 사운드, 네트워크를 각각 다른 스레드에서 처리
  • 웹 서버: 요청 처리, 로깅, DB 저장 등을 스레드로 병렬화

구조 비교

항목멀티프로세스멀티스레드
실행 단위독립된 프로세스프로세스 내 스레드
메모리완전히 분리됨코드/데이터/힙 공유, 스택만 분리
통신 속도느림 (IPC 필요)빠름 (메모리 직접 접근)
안정성하나 죽어도 영향 적음하나 오류 시 전체 영향 가능성 있음
생성 비용큼 (무거움)작음 (가벼움)
활용 예시브라우저, 데몬 프로세스게임, 웹 서버, 실시간 처리

장단점 요약

멀티프로세스

  • 장점
    • 안정성 높음 (독립적 구조)
    • 문제 발생 시 확산 방지
  • 단점
    • 메모리 사용량 많음
    • 프로세스 간 통신이 복잡하고 느림

멀티스레드

  • 장점
    • 메모리 효율적 (공유 구조)
    • 통신 및 협업 빠름
  • 단점
    • 스레드 간 동기화 필요 (race condition 발생 가능)
    • 하나의 스레드가 전체를 멈출 수 있음

선택 기준은?

상황적합한 구조
안정성과 격리가 중요한 경우멀티프로세스
속도와 협업이 중요한 경우멀티스레드

예시

  • 브라우저는 탭마다 격리가 필요해 멀티프로세스
  • 게임, 실시간 서버는 빠른 반응이 필요해 멀티스레드
profile
Clarinetist.dev

0개의 댓글