Live Today
[운영체제] 사용자 수준의 스레드(ULT) 와 커널 수준 스레드(KLT) 본문
반응형
사용자 수준 스레드와 커널 수준 스레드는 생성 주체가 누구냐에 따라 구분된다.
사용자가 라이브러리를 통해 만들고 관리하는 스레드는 사용자 수준 스레드이고,
OS의 커널이 만들고 관리하는 스레드는 커널 수준 스레드이다.
✅ 사용자 수준 스레드
사용자가 스레드 관련 라이브러리로 구현해 사용하는 스레드를 사용자 수준 스레드라고 한다.
- 스레드와 관련된 모든 행위를 사용자 영역에서 하기 때문에, 커널은 사용자 수준 스레드의 존재를 알지 못하고, 스레드 교환에 개입하지 않는다.
- 사용자 수준 스레드 N개가 커널 수준 스레드 1개에 매핑되므로, 다대일 스레드 매핑이라고 한다.
장점
- 커널에 독립적으로 스케줄링을 할 수 있어 모든 운영체제에 적용할 수 있다. 이식성이 높다.
- 스케줄링이나 동기화를 위해 커널을 호출하지 않으므로, 커널 영역으로 전환하는 오버헤드가 줄어든다.
- 커널이 아닌 스레드 라이브러리에서 스레드 스케줄링을 제어하므로, 유연한 스케줄링이 가능하다.
단점
- 하나의 프로세스로부터 할당된 여러개의 스레드들 중, 한 스레드가 대기 상태가 되면, 모든 스레드들을 실행시킬 수 없게 된다.
- 커널이 스레드 관리에 개입하지 않으므로, 스레드 간 보호에 커널의 보호 방법을 사용할 수 없다. → 라이브러리 수준의 보호 방법까지만 사용 가능하다.
✅ 커널 수준 스레드
커널이 스레드와 관련된 모든 작업을 관리하는 방식이다.
사용자 수준 스레드와 커널 수준 스레드가 1대1로 매핑된다.
장점 & 단점
- 커널이 직접 스케줄링하고 실행하기 때문에 커널의 관리 지원을 많이 받을 수 있지만, 그만큼 오버헤드가 늘어난다.
- 하지만 커널이 각 스레드들을 개별적으로 관리할 수 있으므로, 동일한 프로세스에서 할당된 여러 개의 스레드들 중 한 스레드가 대기상태가 되더라도, 다른 스레드들은 실행시킬 수 있다.
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 메모리 구조 (0) | 2023.01.31 |
---|---|
[운영체제] 프로세스 생성 단계 (0) | 2023.01.30 |
[운영체제] 프로세스 상태 (0) | 2023.01.29 |
[운영체제] PCB와 TCB (0) | 2023.01.27 |
[운영체제] 프로세스와 스레드 (0) | 2023.01.26 |