리눅스 스케쥴링 질문이요 ^^
글쓴이: kimegoo / 작성시간: 목, 2009/02/05 - 3:15오후
요즘 "리눅스 커널의 이해"를 보면서 궁금한게 생겼습니다.
각 프로세스별로 스케쥴링 정책을 정할 수 있는걸로 알고 있는데요,
프로세스 A, B의 스케줄링 정책이 다음과 같다고 했을 때..
A: FIFO
B: RR
처음에 B가 수행되었다가 RR의 quantum을 모두 소모하면 A가 선택되었다고 합시다. 그러면 스케줄링 정책은 FIFO가 되어서 계속 진행되는 건가요?
구글링을 해보고 검색을 해봐도 해답이 나오질 않네요..
답변 부탁드리겠습니다 ^^
Forums:
네...
맞습니다.
'스케쥴링 정책이 FIFO가 되어서 계속 진행된다'라는 말이 약간 애매하긴 한데요.. 실제는 이렇습니다.
SCHED_RR task는 자신의 timeslice가 다하면 해당 우선순위 array의 queue 끝으로 가게 됩니다.
(그렇지만, 자신보다 높거나 같은 우선순위를 가진 task가 없다면 다시 스케쥴링되어 계속 수행이 되겠지요)
그러나 SCHED_FIFO task는 그런 작업을 하지 않습니다.
우선순위가 높은 task가 생성되거나 깨어나는 경우, 그리고 스스로 휴면하지 않는다면
SCHED_FIFO task는 계속 수행이 됩니다...
예를 드신 경우에, 만약 SCHED_FIFO task가 휴면하게 되면 SCHED_RR task는 동작하겠지만
SCHED_RR은 자신의 timeslice만큼 수행된 뒤 해당 우선순위 array의 queue 끝으로 가게 됩니다.
댓글 달기