운영체제

[운영체제] 4. 스레드 관리 - (3) 스레드 구현 유형

NoDapKeepGoing 2025. 4. 17. 14:36

📍0. TCB를 생성하고 관리하는 주체에 따라

1️⃣ 커널 레벨 스레드(kernel-level thead, KLT)

2️⃣ 사용자 레벨 스레드(user-level thread, ULT)

 

 

📍1. 커널레벨 스레드(KLT)

✔️ 스레드에 대한 정보(TCB)는 커널 공간에 생성되며 커널에 의해 소유됨
✔️ 응용프로그램이 시스템호출을 통해 커널 레벨 스레드 생성
✔️ 커널이 만들고, 커널에 의해 관리(스케줄링 등)
✔️ 스레드 코드와 데이터: 사용자 공간에 존재
✔️ main 스레드는 커널 스레드
✔️ 응용프로그램을 적재하고 프로세스를 생성할 때 커널은 자동으로 main 스레드 생성
✔️ main 스레드의 TCB는 커널에 생성
✔️ Windows, Linux, iOS, macOS 등

 

 

 

📍2. 사용자 레벨 스레드(user-level thread, ULT)

✔️ 응용프로그램이 스레드 라이브러리함수를 호출하여 사용자 레벨 스레드 생성
✔️ 스레드 라이브러리 가스 레드 정보(U-TCB)를 사용자 공간에 생성하고 관리
✔️ 스레드 라이브러리는 사용자 공간에 존재
✔️ 커널은 사용자 레벨 스레드의 존재에 대해 알지 못함
✔️ 스레드는 라이브러리에 의해 스케줄 됨
✔️ 스레드 코드와 데이터: 사용자 공간에 존재
✔️ Solaris, Linux2.6 등

 

 

e.g.) 스레드 상태와 프로세스 상태 사이의 관계의 예

 

 

 

 

📍3. KLT와 ULT의 비교

 

 

3-1. ULT, KLT, 프로세스 연산 지연(us) 비교

✔️ Null Fork: Null 프러시저를 호출하는 프로세스/스레드 생성, 스케줄, 수행, 완료까지 걸린 시간
✔️ Signal-Wait: 프로세스/스레드가 대기 중인 한 프로세스/스레드에게 신호를 보낸 다음 특정 조건을 기리는 데 걸린 시간