본문 바로가기

전공/운영체제

[운영체제] CPU 스케줄링: 스레드 스케줄링

 

현대의 운영체제에서는 프로세스가 아닌 커널 수준의 스레드가 스케줄링된다.

 

사용자 수준의 스레드는 스레드 라이브러리에 의해 관리되고 커널은 사용자 수준 스레드를 알 지 못한다.

 

사용자 수준 스레드는 CPU상에서 실행되기 위해서 커널 수준 스레드에 매핑되어야 한다.

 

 

 

 

 

 

contention scope(경쟁 범위)


 

사용자 수준 스레드와 커널 수준 스레드의 스케줄링 방식의 차이

 

1. 프로세스 경쟁 범위(process contention scope, PCS)

다대일과 다대다 모델에서 사용자 수준 스레드를 가용한 LWP에 스케줄링한다.

이때, 동일한 프로세스 내 스레드 간 CPU를 경쟁하기 때문에 프로세스 경쟁 범위라 한다.

 

2. 시스템 경쟁 범위(system contention scope, SCS)

일대일 모델에서 커널 수준 스레드를 CPU에 스케줄링한다.

이때, 시스템상의 모든 스레드에서 CPU를 경쟁하기 때문에 시스템 경쟁 범위라 한다.

 

 

 

 

 

 

Pthread 스케줄링


 

POSIX Pthreads API를 통해 스레드를 생성하면서 PCS 또는 SCS를 지정할 수 있다.

 

PCS 스케줄링 - PTHREAD_SCOPE_PROCESS

SCS 스케줄링 - PTHREAD_SCOPE_SYSTEM