[완료]리눅스 커널 프로세스 스케줄링 질문드립니다.
글쓴이: heartthief / 작성시간: 화, 2010/09/14 - 6:18오후
1. priority는 구체적으로 어떻게 계산되나요? nice값(-20~+19)과 task의 interactive한 정도에 따라 (-5~+5) 라고만 알고 있는데
priority array를 보면 0~139의 우선순위 레벨이 있던데 실시간 프로세스가 0~99 레벨, 일반 프로세스가 100~139레벨인데 nice값과 interactive 정도만 가지고 140 레벨이 다 나오게 되는 건 아닌것 같은데 혹시 priority 계산공식이 있나요?
2. 실시간 프로세스중 타임 퀀텀을 할당받는 RR방식의 타임퀀텀 할당 시간에 대한 기준이 어떻게 되나요? 일반 프로세스와 동일한 nice값 기준으로 할당받나요?
3. 타임퀀텀을 쓰지 않는 실시간 프로세스의 경우 만약에 중간에 무한루프를 돌아서 프로세서를 계속 점유하고 있으면 커널이 프로세스를 죽이거나 다른 프로세스로 스위칭할 수 있나요?
4. 선점이 발생한 경우, 선점된 프로세스의 운명은 어떻게 되나요? 남은 타임퀀텀을 가진채로 active queue에 남아 있나요, 아니면 wait queue로 들어가서 인터럽트를 기다리게 되는 건가요?
책으로 공부하고 있는데 여러번 읽어봐도 모르겠네요 ㅠㅠ
---------------------------------------------------------------------------------------
답변 감사합니다^^
Forums:
제가 알기론..
O(1) 스케줄러 공부하시는군요..
1. nice 값과 interactiveness(?)로 동적 우선순위를 계산하는 것은 일반 프로세스에만 해당하는 얘기입니다.
(실시간 프로세스는 정적 우선순위만 사용하는 것으로 알고 있습니다.)
일반 프로세스의 기본 우선순위는 120이고 nice를 통해 100 ~ 139 사이의 값으로 설정할 수 있으며
interactive한 정도에 따라 여기에 약간의 보너스가 주어질 수 있습니다만 저 범위를 넘어가진 않습니다.
2. 무조건 일정한 값(DEF_TIMESLICE)이 할당될 것입니다.
3. FIFO 정책의 경우 해당 프로세스보다 높은 프로세스가 없다면 선점이 불가능합니다.
4. 남은 퀀텀을 가지고 active queue로 들어갑니다.
댓글 달기