Skip to content

스레드

스레드

스레드(Thread)프로세스(Process) 내에서 실행되는 흐름 단위이다. 하나의 프로세스는 두 개 이상의 스레드를 가질 수도 있다. 이러한 멀티 스레드는 운영체제(OS) 내에서 동시성을 처리하는 방법이다.

스레드의 구분

스레드는 관리 주체에 따라 커널 수준사용자 수준으로 구분된다.

커널 수준 스레드(Kernel Level Thread)

커널 수준 스레드

운영체제(OS)에서 지원하는 스레드로 커널에서 스레드의 생성 및 스케줄링이 이루어진다.

  • 매핑 관계
    • 일대일(One-to-One) 모델
  • 장점
    • 커널의 스레드 자체를 사용하므로 성능이 우수함
    • 스레드가 중단(Block)되는 경우 다른 스레드에는 영향이 없음
  • 단점
    • 스레드 생성 및 스케줄링이 빠름

사용자 수준 스레드(User Level Thread)

사용자 수준 스레드

사용자에 의해 구현되는 스레드로 라이브러리를 통해서 스레드 생성 및 스케줄링이 이루어진다. 커널 수준 스레드를 나누어 사용하는 방식이므로 경량 스레드(Light-weight Thread)라고도 한다.

  • 매핑 관계
    • 일대다(One-to-Many)
  • 장점
    • 실제 스레드보다 더 많은 스레드를 생성할 수 있음
    • 스레드 생성 및 스케줄링이 빠름
  • 단점
    • 커널 스레드를 나누어 사용하므로 성능이 떨어짐
    • 커널 수준 스레드가 중단(Block)되는 경우, 사용자 수준 스레드 또한 사용하지 못함

혼합형 스레드(Combined Thread)

Combined

커널 수준 스레드와 사용자 수준 스레드를 혼합한 모델이다. 커널 수준에서 존재하는 스레드들을 사용자 수준에서 관리한다.

  • 매핑
    • 다대다(Many-to-Many)
  • 장점
    • 실제 스레드보다 더 많은 스레드를 생성할 수 있음
    • 유저 수준 스레드 대비 높은 성능을 가짐
  • 단점
  • 구현이 복잡함

참고문헌


Last update : 21 octobre 2023
Created : 26 mai 2023