싱글 스레드와 멀티 스레드

jindory·2022년 8월 1일
0

싱글 스레드(Single-Thread)

프로세스가 단일 스레드로 동작하는 방식으로 일련의 처리를 단일 스레드만으로 직렬 처리 하는 프로그래밍 방법. 하나의 레지스터, 스택으로 표현한다.

싱글 스레드의 장점

  • 자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
  • 자원 접근에 대한 동기화를 신경쓰지 않아도 되므로 문맥 교환(context switch) 작업 또한 요구하지 않는다. 문맥 교환은 여러개의 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업
  • 프로그래밍 난이도가 쉽고, CPU 메모리를 적게 사용한다.

싱글 스레드의 단점

  • 여러 개의 CPU를 호라용하지 못한다. 하나의 물리적 코어밖에 사용하지 못해 멀티 코어 머신에서 CPU 사용을 최적화할 수 없다.
  • 연산량이 많은 작업을 하는 경우, 그 작업이 완료되어야만 다른 작업 수행 가능.
  • 에러 처리를 못하는 경우 멈춰버리게 됨. 멀티 스레드 모델은 에러 발생 시 새로운 스레디를 생성하여 극복한다.

멀티 스레드(Multi-Thread)

하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.
시스템 자원의 활용 극대화 및 처리량을 증대할 수 있어서 단일 프로세스 시스템의 효율성을 높일 수 있다.

멀티 스레딩의 장점

  • 작업을 분리해서 수행하므로 실시간으로 사용자에게 응답할 수 있다.
  • 멀티 스레드는 프로세스를 여러 프로세서에서 수행할 수 있으므로 훨씬 효율적이다.

멀티 스레딩의 문제점

  • 주의 깊은 설계가 필요하며 디버깅이 까다롭다.
  • 다른 프로세스에서 스레드를 제어할 수 없다. (즉, 프로세스 밖에서 스레드 각각을 제어할 수 없음)
  • 자원 공유의 문제가 발생. 하나의 스레드가 문제가 발생하면 전체 프로세스가 영향을 받는다.
  • 문맥 교환 작업을 요구. 다른 태스크(프로세스, 스레드)가 시작할 수 있도록 이미 실행중인 태스크를 멈추는 것을 말한다.
  • 프로세서(Processor)
    프로세서는 하드웨어적인 측면과 소프트웨어적인 측면으로 나누어 볼 수 있습니다.
    하드웨어적인 측면 : 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛으로, 중앙처리장치(CPU)를 의미하며 적어도 하나 이상의 ALU와 레지스터를 내장하고 있습니다.
    소프트웨어적인 측면 : 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템을 의미합니다. 워드프로세서나 컴파일러 등이 여기에 속합니다.
  • 프로세스(Process)
    프로세스는 특정 목적을 수행하기 위해 나열된 작업의 목록을 의미합니다. 메모리에 적재 되어 프로세서에 의해 실행 중인 프로그램을 프로세스라고 볼 수 있습니다.

node.js

node.js의 Event loop는 싱글 스레드로 작동되지만, Worker pool은 멀티 스레드로 작동된다.
즉, node.js의 초기화와 callback은 Event loop라는 하나의 프로세스, 하나의 스레드에서 작동되지만 I/O intensive, CPU intensive한 모듈은 Worker pool에서 작동.

profile
메모장/ FE연습장

0개의 댓글