CS 24 멀티프로세스 멀티스레드

이상인·2023년 9월 16일
0

멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.

멀티프로세스(Multiprocessing)와 멀티스레딩(Multithreading)은 동시에 여러 작업을 수행하는 데 사용되는 두 가지 주요 병렬 프로그래밍 기술입니다.
이들의 주요 특징과 차이점을 설명하겠습니다.

멀티프로세스 (Multiprocessing)

  1. 독립적인 메모리 공간
  • 각 프로세스는 독립적인 메모리 공간을 가지고 있으므로 하나의 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다.
  1. 프로세스 간 통신 (Inter-Process Communication, IPC)
  • 프로세스 간 데이터 공유 및 통신은 복잡하고 오버헤드가 큽니다.
  • 주로 파이프, 소켓, 공유 메모리 등의 메커니즘을 사용합니다.
  1. 안정성
  • 멀티프로세스 환경은 안정성이 높으며, 하나의 프로세스가 충돌하더라도 다른 프로세스에 영향을 미치지 않습니다.
  1. 병렬성
  • 멀티프로세스는 멀티코어 CPU에서 병렬 처리를 할 수 있으며, 각 프로세스가 독립적으로 실행됩니다.
  1. 프로세스 간 전환 (Context Switching)
  • 프로세스 간 전환은 오버헤드가 크며, 실행 중인 프로세스의 상태를 저장하고 다른 프로세스로 전환해야 합니다.

멀티스레딩 (Multithreading)

  1. 공유 메모리
  • 모든 스레드는 같은 프로세스 내에서 실행되므로 공유 메모리 공간을 가집니다.
  • 이로 인해 데이터 공유와 통신이 간단하고 빠릅니다.
  1. IPC 필요 없음
  • 스레드 간 통신은 공유 메모리를 통해 이루어지므로 IPC가 필요하지 않습니다.
  1. 안정성
  • 멀티스레딩 환경은 안정성이 낮을 수 있으며, 하나의 스레드의 오류가 전체 프로세스에 영향을 줄 수 있습니다.
  1. 병렬성
  • 멀티스레딩은 멀티코어 CPU에서 병렬 처리를 할 수 있으며, 스레드는 동시에 실행됩니다.
  1. 스레드 간 전환 (Context Switching)
  • 스레드 간 전환은 프로세스 간 전환보다 경제적이지만 여전히 오버헤드가 있습니다.

주요 차이점 및 고려 사항

  • 멀티프로세스는 안정성과 격리를 강조하며, 프로세스 간 통신을 통해 데이터 공유를 처리합니다.
  • 멀티스레딩은 공유 메모리를 활용하므로 간단한 데이터 공유와 더 빠른 통신이 가능하지만, 스레드 간의 동기화와 레이스 컨디션과 같은 문제에 대한 주의가 필요합니다.
  • 멀티스레딩은 경량 프로세스로 간주되어 프로세스 간 전환보다 빠른 스레드 간 전환을 가지며, 따라서 작은 규모의 동시성 작업에 적합합니다.
  • 멀티프로세스는 다른 시스템 간 통신 또는 안정성이 중요한 상황에 적합합니다.
  • 언어 및 환경에 따라 어떤 기술을 선택할지 결정되며, 프로그램의 목표 및 요구 사항에 따라 적합한 동시성 모델을 선택해야 합니다.

0개의 댓글