상세 컨텐츠

본문 제목

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

카테고리 없음

by 둥근돔 2023. 11. 6. 15:34

본문

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

  • 개념
    • 하나의 프로그램을 여러 개의 프로세스로 구성하여,
    • 각 프로세스가 하나의 작업을 처리하는 것을 의미한다.
  • 장점
    • 하나의 프로세스에 문제가 생겨도, 전체적인 프로그램은 동작한다.
  • 단점
    • 프로세스 끼리는 공유하는 메모리가 없기 때문에, Context Switching 에 많은 비용이 발생한다.
      • 프로세스의 Context Switching 에는,
      • 단순히 CPU 레지스터 교체 뿐만 아니라
      • RAM과 CPU 사이의 캐쉬 메모리도 초기화되므로 오버헤드가 크다.

멀티 쓰레드(Multi Thread)란?

  • 개념
    • 하나의 프로그램을 여러 개의 쓰레드로 구성하고, 각 쓰레드가 하나의 작업을 처리하는 것을 의미한다.
      • 프로세스는 한 개일수도, 여러 개일수도 있다.
  • 장점
    • 자원의 효율성 증대
      • 많은 프로세스를 생성함으로써 각 프로세스에 자원을 할당하는 작업(시스템 콜)이 줄어든다.
    • Context Switching 처리 비용 감소
      • 쓰레드는 프로세스 메모리의 코드/데이터/힙 영역을 공유하고 있으므로,
      • Context Switching 이 발생할 때, Stack 영역만 처리하면 된다.
    • 응답 속도 향상
      • 쓰레드는 프로세스 메모리의 코드/데이터/힙 영역을 공유하고 있으므로,
      • 프로세스 간의 통신(IPC)보다 쓰레드 간의 통신의 응답 속도가 빠르다.
  • 단점
    • 쓰레드 하나에 문제가 생기면, 모든 프로세스가 종료된다.
    • 자원을 공유하기 때문에 필연적으로 동기화 문제가 발생한다.
      • 쓰레드의 스케줄링은 운영체제가 관리하지 않기 때문에,
      • 동기화 문제를 해결하기 위해, 프로그래머의 주의 깊은 설계가 필요하다.