Q) 사용자 수준에서 지원되는 스레드(Thread)가 커널에서 지원되는 스레드에 비해 가지는 장점으로 옳은 것은?
1) 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다.
2) 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다.
3) 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다.
4) 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.
스레드
- 프로세스 내 작업 단위
- 스레드는 여러 개가 존재할수도 있다. 이를 멀티 스레드라고 한다.

< 커널 수준 스레드 >
- 커널 수준 스레드는 커널 레벨에서 생성되는 스레드이다.
- 운영체제 시스템 내에서 생성되어 동작하는 스레드로, 커널이 직접 관리한다.
- 커널 수준에서는 프로세스가 주기억 장치에 여러 개가 적재되어 CPU 할당을 기다리며 동작한다.
- CPU에서 인터럽트 발생으로 현재 작업 중인 프로세스가 Block되고 다른 프로세스로 변경할 때, CPU 내 재배치 레지스터에 다음에 실행할 프로세스 정보들로 교체를 하고 캐시를 비운다. 이 것을 Context Switching이라고 한다.
- Context Switching이 일어날 때는 CPU가 일을 못한다.
- 컨텍스트 스위칭이 자주 발생하면 성능에 영향이 간다는 단점이 있다.
- 커널이 직접 관리하므로 특정 스레드가 Block이 되어도 다른 스레드들은 독립적으로 일을 할 수 있다.

< 사용자 수준 스레드 >
- 사용자 수준 스레드는 스레드를 관리하는 라이브러리로 인해 사용자 단에서 생성 및 관리되는 스레드이다.
- 그래서 커널이 따로 관리하지 않고, 커널이 이 스레드에 대해서 알지도 못한다
- 한 마디로 커널 레벨 밖에 있는 스레드이다.
- 실제 물리적으로 커널 밖에 있다는 것이 아니다. 커널 내부에 존재하지만 커널의 통제권 안에 없을 뿐이다
- 커널에는 '커널 모드'와 '사용자 모드' 2가지가 있고, 여기서 '사용자 모드'에서 동작하는 스레드가 사용자 수준 스레드인 것이다.
- 입출력 인터럽트가 발생하면 커널은 '사용자 모드'가 되어서 사용자 수준 스레드의 응답을 기다린다.
- 사용자 수준 스레드의 응답이 오면 다시 '커널 모드'로 변환되어 이어서 커널 스레드가 일 처리를 하게 되는 것이다.
| 사용자 수준 스레드 ULT | 커널 수준 스레드 KLT | |
| 관리 | 사용자 프로그램에서 관리 | 커널에서 관리 |
| 스케줄링 | 커널이 스레드를 인식하지 않음 프로세스 내의 한 스레드가 커널로 진입하는 순간, 나머지 스레드들도 전부 정지됨 |
커널이 스레드를 인식하고 개별적으로 스케줄링 |
| 성능 | 빠른 스레드 전환 context switching이 없어서 커널 스레드보다 오버헤드가 적음 |
context switching이 발생 스레드 전환시 커널 모드 전환으로 오버헤드 발생 |
| 멀티코어 | 멀티코어 시스템에서 병렬 처리 불가 | 멀티코어 시스템에서 병렬 처리 가능 |
| 시스템콜 | 스레드 간 시스템 콜 처리에 제한 있음 | 스레드마다 독립적인 시스템 콜 처리 가능 |
프로그래밍 언어 활용
25년 필기 1회차 1178번
답: 4) 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.
refer to
'IT > 정보처리기사' 카테고리의 다른 글
| [필기] 감성공학의 접근 방법 (0) | 2025.02.05 |
|---|---|
| [필기] CASE (0) | 2025.02.05 |
| [필기] IPv6 (0) | 2025.02.04 |
| [필기] CMMI 성숙도 (0) | 2025.02.04 |
| [필기] 데이터 수집 관련 기술 (0) | 2025.02.04 |