싱글 스레드와 멀티 스레드

Bin2·2022년 8월 1일
0

⭐️ 싱글 스레드(Single-Thread)

프로세스가 단일 스레드로 동작하는 방식으로 일련의 처리를 단일 스레드만으로 직렬 처리하는 프로그래밍 방법이다.
하나의 레지스터, 스택으로 표현한다. 자바스크립트가 가장 대표적인 싱글 스레드 언어이다.

싱글 스레드의 장점

  • 자원 접근에 대한 동기화를 신경쓰지 않아도 된다. 여러 개의 스레드가 프로세스의 자원을 공유할 경우, 각 스레드가 원하는 결과를 얻게 하려면 공용 자원에 대한 접근을 제어해야 한다.

  • 지원 접근에 대한 동기화를 신경쓰지 않아도 되므로 문맥 교환(context switch) 작업 또한 요구하지 않는다. 문맥 교환은 여러 개의 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업으로 많은 비용을 필요로 한다.

  • 프로그래밍 난이도가 쉽고, CPU 메모리를 적게 사용한다.

싱글 스레드의 단점

  • 여러 개의 CPU를 활용하지 못한다. 싱글 스레드는 하나의 물리적 코어밖에 사용하지 못해 멀티 코어 머신에서 CPU 사용을 최적화할 수 없다.

  • 연산량이 많은 작업을 할 경우, 그 작업이 완료되어야 다른 작업을 수행할 수 있다.

  • 싱글 스레드 모델은 에러 처리를 못하는 경우 멈춰버리게 된다.

⭐️ 멀티 스레드(Multi-Thread)

멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.
또한, 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미한다.

멀티 스레드의 장점

  • 싱글 스레드의 경우, 작업이 끝나기 전까지 사용자에게 응답하지 않지만 멀티스레드인 경우 작업을 분리해서 수행하므로 실시간으로 사용자에게 응답할 수 있다.

  • 한 프로세스를 여러 프로세서에서 수행할 수 있으므로 싱글스레드에 비해 효율적이다.

멀티 스레드의 단점

  • 주의 깊은 설계가 필요하며, 디버깅이 까다롭다.

  • 단일 프로세스 시스템의 경우 효과를 기대하기 어려우며 다른 프로세스에서 스레드를 제어할 수 없다.

  • 자원 공유의 문제가 발생한다. 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받게 된다.

  • 문맥 교환 작업을 요구한다. 문맥 교환이란 다른 태스크(프로세스, 스레드)가 시작할 수 있도록 이미 실행 중인 태스크를 멈추는 것을 말한다.

profile
Developer

0개의 댓글