보다 더 나은 내일의 나를 위해

멀티 스레드와 싱글스레드 본문

CS

멀티 스레드와 싱글스레드

H-SC 2022. 5. 30. 12:20

멀티 스레드와 싱글 스레드 간단히

우선 싱글 스레드는 프로그램을 실행할 때 스레드를 단 하나만을 사용해 수행하는 기술을 말합니다. 따라서 프로그램을 차례대로 순차 처리하게 됩니다. 반면에 멀티 스레드는 여러 개의 스레드를 사용해 둘 이상의 프로그램을 동시에 실행하는 기술입니다. 이는 컨텍스트 스위칭(context switching)을 통해서 여러 스레드를 병렬적으로 처리함으로써 가능하게 할 수 있었습니다.

그렇다면 각각의 장﹒단점은 무엇일까요?

 

 

멀티 스레드

  • 장점
    • 응답성
      • 긴 작업을 수행하거나 프로그램의 일부분(스레드)이 중단되어도 프로그램의 수행이 계속 수행되므로 사용자에 대한 응답성이 증가하게 됩니다.
    • 자원 공유
      • 스레드는 그들이 속한 프로세스의 자원들과 메모리를 공유합니다. 따라서 한 응용 프로그램이 같은 주소 공간 내에 여러 개의 다른 활동성 스레드를 가지고 있을 수 있습니다.
    • 경제성
      • 프로세스를 새로 생성하는 것은 비용이 많이 듭니다. 따라서 속한 프로세스의 자원을 공유하는 스레드를 사용해 문맥교환(context switching)을 하는 것이 경제적으로 좋습니다.
    • 멀티프로세서 활용
      • 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있습니다.
  • 단점
    • 다중 스레드 환경에서 동시성 이슈, 데드락 등이 발생할 수 있습니다.
    • 시스템을 설계하기 어렵습니다.
    • 스레드 스케줄링을 고려해야 합니다.

 

 

싱글 스레드

  • 장점
    • 문맥 교환 작업을 요구하지 않습니다. 따라서 비용이 많이 들지 않게 됩니다.
    • 동시성 이슈가 발생하지 않으므로 동기화를 신경 쓰지 않아도 됩니다.
    • 멀티 스레드 환경에서 문맥 교환에 드는 시간 때문에 싱글 스레드가 더 빠른 경우가 있을 수 있습니다.
    • 비용이 적게 듭니다.
  • 단점
    • 멀티프로세서를 활용하지 못합니다.
    • 연산량이 많은 작업을 수행한다면 전체 수행 시간이 오래 걸립니다.
    • 스레드 중단 시 프로그램 자체가 멈추게 됩니다.

 

 

 

Comments