리눅스에서 프로세스 스케줄링 방식 변경 가능한가요?
글쓴이: kingofkobo / 작성시간: 금, 2012/02/17 - 2:10오후
요세 OS를 다시 한번 공부해보고 있는데요. 졸업한지 좀 되니까 잘 기억이 안나서.. ^^
근데 학교 다닐때야 이런것들이 있구나 하고 그냥 넘어갔는데.
실무를 하는 입장이 되니까 궁금한 것들이 있네요.
서론은 그만 자르고....
프로세스 스케줄링 방식에 보면 선점 비선점 부터 시작해서 FCFS / SJF 등등 여러가지 방식이 있자나요?
이제 이건 이론적인 이야기이고 실제 리눅스에서 어떠한 방식을 사용하는지?
또 스케줄링 방식을 커널 옵션에서 변경이 가능한지?
궁금하네요. ^^
Forums:
리눅스 커널은 크게 2가지 방식으로 프로세스를
리눅스 커널은 크게 2가지 방식으로 프로세스를 스케쥴링합니다.
1. Real Time Scheduling(RTS)
2. Completely Fair Scheduling(CFS)
커널소스 linux/include/linux/sched.h 파일에 보면 스케쥴정책이 다음과 같이 정의되어 있습니다.
32 /*
33 * Scheduling policies
34 */
35 #define SCHED_NORMAL 0
36 #define SCHED_FIFO 1
37 #define SCHED_RR 2
38 #define SCHED_BATCH 3
39 /* SCHED_ISO: reserved but not implemented yet */
40 #define SCHED_IDLE 5
위에서 SCHED_NORMAL, SCHED_FIFO, SCHED_RR는 Real Time Scheduling(RTS)에 해당하고
SCHED_BATCH, SCHED_IDLE는 Completely Fair Scheduling(CFS)에 해당합니다.
RTS는 리눅스 커널 초기부터 도입된 스케쥴링 정책이고
프로세스 우선순위(prio)에 따라서 plist 자료구조를 통하여 관리하고,
CFS는 2007년도(커널2.6 이후인듯) 부터 도입되었고
프로세스 대기시간을 공평(Fair)하게 관리하기 위해서 rbtree 자료구조가 도입된듯 합니다.
요즘 저도 이것들을 좀 분석해 보고 있네요...
아래는 스케쥴링을 담당하는 커널소스의 처음 헤더부분의 주석입니다.
(한글은 제가 번역해본 것임)
위의 주석을 보면, CFS는 2007년도에 Con Kolivas가 설계하여 적용했고
Mike Galbraith가 좀더 기능을 향상 했음을 알 수 있습니다.
2007년도에 많은 변화가 있었네요....
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
로버트 러버가 쓴 리눅스 커널 책 보시면 좋을듯
로버트 러버가 쓴 리눅스 커널 책 보시면 좋을듯
http://www.informit.com/articles/article.aspx?p=101760
울랄라~ 호기심 천국~!!
http://www.ezdoum.com