본문 바로가기

CS(Computer Science)

CS Study : 9주차 - 멀티 프로세스와 멀티 스레드

멀티 프로세스

  • 하나의 어플리케이션을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.

특징

  • 여러개의 자식 프로세스 중 하나에 문제가 발생해도 다른 자식 프로세스에 영향이 확산되지 않기 때문에
    안정성이 좋다.
  • 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하여 자원이 서로 다르게 할당된다.
  • 프로세스 간 통신을 하기 위해서는 IPC를 통해야 한다.
    • IPC(Inter Process Communication) - 프로세스들 간의 의사소통 하는 것
  • 메모리 사용량이 많다.
  • 스케줄링에 따른 문맥교환이 많아지고, 성능 저하의 우려가 있다.

 

멀티 스레드

  • 하나의 어플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
  • 사용자와 상호작용하는 어플리케이션에서 단일 스레드로 네트워크 또는 데이터베이스와 같은 긴 작업을 수행하는
    경우 해당 작업을 처리하는 동안 사용자와 상호작용이 불능인 상태가 될 수 있기 때문에 멀티 스레드를 사용한다.

 

특징

  • 프로그램의 일부분이 오류 또는 긴 작업으로 인해 중단되어도 프로그램이 계속적 수행되기 때문에 응답성이 좋다.
  • 스레드들을 부모 프로세스의 자원와 메모리를 공유할 수 있기 때문에 자원 공유가 쉽다.
  • 프로세스를 할당하는 것보다 스레드를 할당하는 것이 비용이 적게 든다.
  • 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다.
  • 구현 및 테스트, 디버깅이 어렵다.
  • 너무 많은 스레드 사용은 오버헤드를 발생시킨다.
  • 동기화 그리고 교착상태가 발생하지 않도록 주의해야 한다.
  • 자식 스레드 중 하나에 문제가 생긴 경우 전체 스레드에 영향을 줄 수 있다.

 

멀티 스레드의 장점과 단점

자원의 효율성 증대

  • 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 비용이 적다.
  • 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이
    간단해져서 시스템 자원 소모가 줄어든다.

응답 시간 단축 및 처리 비용 감소

  • 프로세스간 IPC를 사용하여 통신하는 것은 상태적으로 비용이 크지만 스레드는 프로세스의 메모리 영역을 공유하여
    스레드 간의 통신 비용이 적게 든다.
  • 스레드간의 문맥 교환은 문맥 교환시 Stack 영역만 처리하면 되기 때문에 프로세스간의 문맥 교환보다 빠르다.

안정성 문제

  • 멀티 프로세스의 프로그램은 문제가 생기면 해당 프로세스가 중단되거나 중단 시키고 다시 시작하면 되지만
    멀티 스레드 방식의 프로그램에서는 하나의 스레드가 자신이 사용하던 데이터 공간을 망가뜨리게 되면, 
    해당 데이터 공간을 공유하는 모든 스레드를 망가뜨릴 수 있다.

 

 


참고 블로그

프로세스 vs 쓰레드 차이 정리