스레드
스레드(Thread)
는 프로세스(Process)
내에서 실행되는 흐름 단위이다. 하나의 프로세스는 두 개 이상의 스레드를 가질 수도 있다. 이러한 멀티 스레드는 운영체제(OS) 내에서 동시성을 처리하는 방법이다.
스레드의 구분¶
스레드는 관리 주체에 따라 커널 수준
과 사용자 수준
으로 구분된다.
커널 수준 스레드(Kernel Level Thread)¶
운영체제(OS)
에서 지원하는 스레드로 커널
에서 스레드의 생성 및 스케줄링이 이루어진다.
- 매핑 관계
일대일(One-to-One)
모델
- 장점
- 커널의 스레드 자체를 사용하므로 성능이 우수함
- 스레드가 중단(Block)되는 경우 다른 스레드에는 영향이 없음
- 단점
- 스레드 생성 및 스케줄링이 빠름
사용자 수준 스레드(User Level Thread)¶
사용자
에 의해 구현되는 스레드로 라이브러리
를 통해서 스레드 생성 및 스케줄링이 이루어진다. 커널 수준 스레드를 나누어 사용하는 방식이므로 경량 스레드(Light-weight Thread)
라고도 한다.
- 매핑 관계
일대다(One-to-Many)
- 장점
- 실제 스레드보다 더 많은 스레드를 생성할 수 있음
- 스레드 생성 및 스케줄링이 빠름
- 단점
- 커널 스레드를 나누어 사용하므로 성능이 떨어짐
- 커널 수준 스레드가 중단(Block)되는 경우, 사용자 수준 스레드 또한 사용하지 못함
혼합형 스레드(Combined Thread)¶
커널 수준 스레드와 사용자 수준 스레드를 혼합한 모델이다. 커널 수준에서 존재하는 스레드들을 사용자 수준에서 관리한다.
- 매핑
다대다(Many-to-Many)
- 장점
- 실제 스레드보다 더 많은 스레드를 생성할 수 있음
- 유저 수준 스레드 대비 높은 성능을 가짐
- 단점
- 구현이 복잡함
참고문헌¶
- 위키피디아 - 스레드
- Tutorialwing - User Level Thread and Kernel Level Thread With Example
- 플로리다 주립대학 - Threads
Last update :
21 octobre 2023
Created : 26 mai 2023
Created : 26 mai 2023