Post

⚡ 운영체제 - 멀티프로세스 vs 멀티스레드

⚡ 운영체제 - 멀티프로세스 vs 멀티스레드

🔹 멀티프로세스가 적합한 상황

▫️ 안정성과 격리성이 중요한 경우

  • 하나의 프로세스가 오류나 예외로 종료되더라도, 다른 프로세스에는 영향을 주지 않음
  • 크롬 브라우저(탭마다 프로세스 분리), 서버의 마이크로서비스 구조를 예시로 들 수 있다.

▫️ 보안이 중요한 경우

  • 프로세스는 메모리를 공유하지 않기 때문에, 의도치 않은 데이터 접근을 방지할 수 있음

▫️ 서로 다른 언어나 환경에서 동작하는 모듈 간 통합

  • Python 프로세스와 Java 프로세스가 별도로 실행되어 협업하는 구조를 예시로 들 수 있다.

▫️ 멀티코어 활용이 중요한 병렬 처리

  • Python(GIL 문제)에서 CPU 바운드 작업을 할 때는 멀티스레드 대신 멀티프로세스를 사용함

🔹 멀티스레드가 적합한 상황

▫️ 메모리 사용량을 줄이고, 빠른 문맥 전환이 필요한 경우

  • 스레드는 메모리를 공유하므로 자원 소비가 적고, 컨텍스트 스위칭 비용도 낮음

▫️ 같은 데이터를 공유하며 동시에 처리해야 하는 경우

  • 웹 서버에서 사용자 요청을 동시에 처리하거나, 백그라운드 작업을 병렬로 처리하는 상황을 예시로 들 수 있다.

▫️ IO 바운드 작업이 많은 경우

  • 네트워크 요청 처리, 파일 읽기 및 쓰기를 예시로 들 수 있다.
  • GIL이 있는 언어에서도 효율적으로 처리 가능

▫️ 단일 프로그램 내부에서 병렬성 확보가 필요한 경우

  • 물리 연산, 렌더링, 사운드 등을 스레드로 분리하는 등 게임 엔진에서 활용, 채팅 서버 등

🔹 비교 요약

기준멀티프로세스멀티스레드
메모리 사용높음낮음
안정성높음낮음
문맥 전환 비용높음낮음
데이터 공유IPC 필요메모리 직접 공유
디버깅, 동기화상대적으로 쉬움동기화 문제 발생 가능
사용 사례마이크로서비스, 브라우저웹서버, 게임, GUI 앱 등

🔹 정리

  • 안정성과 분리가 우선이라면 멀티프로세스를,
  • 성능과 자원 효율이 우선이라면 멀티스레드를 사용하는 것이 적합하다.
This post is licensed under CC BY 4.0 by the author.