SCHED_OTHER, SCHED_FIFO, SCHED_RR에 대해...

khk의 이미지

SCHED_FIFO는 스케줄링 큐에 먼저 들어온 놈을 해준다는 건 알겠는데
SCHED_OTHER와 SCHED_RR의 차이가 무엇인지요?
둘 다 RoundRobin인거 같긴한데..... 이 둘의 정확한 차이를 모르겠네요..

stoneshim의 이미지

SCHED_OTHER
: 일반적인 process/thread 의 정책. priority를 0만 가질 수 있음. timeshared.

SCHED_FIFO
: realtime을 위한 정책. priority 1~99. timeshared 아님. 오직 더 높은 priority를 가진 task에게만 선점됨. block, yield, terminate되기 전까지 계속 실행.

SCHED_RR
: realtime을 위한 정책. priority 1~99. 동일한 priority를 가진 waiting SCHED_RR task와 timeshared. timeshare할 대상이 없을 때 SCHED_FIFO와 동일하게 동작.

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자

partout의 이미지

khk700 wrote:
SCHED_OTHER와 SCHED_RR의 차이가 무엇인지요?
둘 다 RoundRobin인거 같긴한데..... 이 둘의 정확한 차이를 모르겠네요

시간을 분할해서 프로세스에 할당한다는 점에서는 유사합니다.
하지만, SCHED_RR/SCHED_FIFO가 SCHED_OTHER보다 높은 우선순위를 가집니다.
가령,.. 스케쥴링 정책이 SCHED_RR인 프로세스와 스케쥴링 정책이
SCHED_OTHER인 프로세스가 있다면, 우선 스케쥴링 정책이
SCHED_RR인 프로세스에 시간을 할당하고, 남는 시간을 쪼개서
SCHED_OTHER인 프로세스에 할당하는 것으로 알고 있습니다.

어찌나 졸린지..~~