Study Output for Myself/Computer Science

[CS]스레드와 멀티스레딩

Dahyee 2022. 8. 19. 15:05

스레드란?

스레드는 프로세스(인스턴스)가 실행 가능한 가장 작은 단위(프로세스내 작업의 흐름)

프로세스가 할당받은 자원을 이용하는 실행의 단위

프로세스는 여러개의 스레드를 가질 수 있음

스레드 기준으로 프로세스

  1. 싱글 스레드 프로세스
  2. 멀티 스레드 기반 프로세스

스레드와 프로세스를 비교해보기

프로세스 vs 스레드

  • 프로세스
  • 코드, 데이터, 스택, 힙 독립적으로 각각 생성
  • 스레드
  • 코드, 데이터, 힙은 스레드끼리 공유, 스택 등 다른 영역은 각각 생성
  • 멀티스레딩이란?장점
    1. 스레드끼리 서로 자원을 공유 ⇒ 효율성 ⬆️
    2. ex) 요청 처리시 새 프로세스 생성 < 스레드 사용 : 훨씬 적은 리소스, 중단(blocked)돼도 다른 스레드는 실행 상태(running)일 수 있음
    3. 동시성에서도 큰 장점 → 동시에 처리할 수 있다.
      1. 동시성 : 서로 독립적인 작업들⇒작은 단위로 나눔⇒동시 실행처럼 보여주는 것동기화, lock 등의 문제
      2. → 병렬처리
    but
    • 멀티프로세싱 vs 멀티스레딩 비교
    • 멀티 프로세스 vs 멀티 프로세싱 (or 멀티 스레드 vs 멀티 스레딩)vs +ing : 그걸 기반으로 해서 동작하는 것을 의미
      • 멀티 프로세싱(웹 브라우저 내 브라우저 프로세스, 렌더러 프로세스, 플러그인 프로세스, GPU 프로세스)하나의 일 병렬 처리, 한 프로세스 문제 발생해도 대체 가능 ⇒ 신뢰성
      • 두가지 이상의 일을 여러개의 프로세스를 통해서 수행할 수 있는 것
      • 멀티 스레딩(웹 브라우저의 렌더러 프로세스 내 메인 스레드, 워커 스레드, 컴포지터 스레드, 레서트 스레드 등)스레드끼리 서로 자원을 공유 ⇒ 효율성
      • 한 프로세스 내 작업을 여러개의 스레드로 처리하는 기법
      • vs
        • 멀티 프로세싱 :한 프로세스 문제 생겨도 다른 프로세스 영향 X (공유 메모리 문제 발생시 문제 발생?)
        • 여러 프로세스 생성하는 멀티프로세싱은 비용 ⬆️ (IPC)
        • 멀티 스레딩 :한 스레드가 망가진다고 다른 스레드가 망가지는 것은 아니지만 영향 O
        • 한 프로세스 내 자원 공유, 비용 ⬇️
    • 여러개의 프로세스(or 스레드)로 구성된 것(or 프로세스)
  • 한 스레드 문제 ⇒ 다른 스레드 영향 ⇒ 스레드 영향 단점
  • 프로세스 내 작업을 여러 개의 스레드로 처리하는 기법