Multiprocessing vs Multithread

열수철·2024년 12월 25일

멀티프로세싱(Multiprocessing)

1. 정의

  • 멀티프로세싱: 하나의 시스템에서 여러 개의 프로세스를 동시에 실행하는 방식
    여러 CPU(혹은 코어)를 활용해 각 프로세스가 병렬로 동작하게 설정

2. 특징

  1. 독립적인 메모리 공간
    • 각 프로세스는 자신만의 메모리 공간을 갖고 있기 때문에 기본적으로 서로 간 메모리 공유 X
  2. 프로세스 간 통신(IPC)
    • 프로세스끼리는 별도의 통신 방식(파이프, 소켓, 메시지 큐 등)을 통해 최소한의 데이터 교환
    • 통신 과정에서 오버헤드가 발생할 수 있으므로, 빠른 데이터 공유가 필요한 경우에는 적합하지 않을 수 있음
  3. 안전성(독립성)
    • 각 프로세스가 완전히 독립적으로 동작하기 때문에 문제가 생겨도 영향을 안받아 안정성에 유리

3. 사용 예시

  • 대규모 서버 애플리케이션: 웹 서버에서 여러 인스턴스를 동시 실행해 트래픽을 분산하거나 장애 대비용으로 구성용
  • CPU를 많이 사용하는 연산(배치 작업 등): 독립적인 프로세스 형태로 분리해 여러 CPU 코어에서 동시에 처리하는 방식 많이 사용

멀티쓰레드(Multithreading)

1. 정의

  • Multithread: 하나의 프로세스 내에서 여러 개의 스레드를 생성해 동시에 작업을 실행하는 방식

2. 특징

  1. 공유 메모리
    • 동일한 프로세스 내의 쓰레드들은 코드를 비롯해 전역 메모리, 힙 등을 공유
    • 공유된 메모리를 통해 쓰레드 간 통신을 쉽게 할 수 있지만, 동시에 여러 쓰레드가 접근할 수 있어 동기화(synchronization) 문제가 생길 수 있음
  2. 가벼운 생성 비용
    • 쓰레드는 프로세스 내부 자원을 공유하므로, 새 쓰레드를 생성하는 비용이 프로세스를 새로 생성하는 것보다 상대적으로 적음
  3. 데이터 공유가 용이
    • 같은 프로세스 내에서 전역 변수나 동적 할당 메모리 등에 모두 접근할 수 있기 때문에, 데이터 교환이 매우 빠르고 편리

3. 사용 예시

  • 실시간 애플리케이션(게임, UI 등): 사용자 입력, 렌더링, 로직 등을 쓰레드로 분할해 동시에 처리
  • I/O 작업이 많은 애플리케이션(네트워크, 파일 I/O 등): 여러 I/O를 동시에 처리하면서 I/O 대기 시간을 줄이기 위해 쓰레드를 활용

멀티프로세싱 vs 멀티쓰레드 비교

구분멀티프로세싱멀티쓰레드
실행 단위독립된 프로세스프로세스 내의 여러 쓰레드
메모리 구조프로세스마다 고유한 메모리 공간 보유프로세스 내 공유 메모리 사용
프로세스/쓰레드 생성 비용상대적으로 큼비교적 작음
프로세스/쓰레드 통신 방식IPC(파이프, 소켓, 메시지 큐 등)전역 메모리/변수 공유 (동기화 필요)
안정성(독립성)다른 프로세스에 영향 적음 (독립성 높음)같은 프로세스 내 쓰레드 간 충돌 가능성 존재
주 사용 예대규모 서버, 배치 작업 등I/O가 많은 애플리케이션, UI/게임 등

멀티프로세싱

          +-------------+
CPU Core1 | Process #1  |  
          | (독립 메모리)|
          +-------------+

          +-------------+
CPU Core2 | Process #2  |
          | (독립 메모리)|
          +-------------+
       

멀티쓰레드

+-------------------------------------------------+
|                Single Process                   |
|                                                 |
|  +------------------+      +------------------+  |
|  |   Thread #1      |      |   Thread #2      |  |
|  | (Shared 메모리)  |      | (Shared 메모리)  |  |
|  +------------------+      +------------------+  |
|       ... Thread #3, #4 ...                     |
+-------------------------------------------------+

profile
그래픽스, 수학, 물리, 게임 만세

0개의 댓글