2013-08-09 3 views
2

나는 스레드 대 프로세스 스케줄링 사이에 다소 혼란 스럽다.리눅스 프로세스 스케줄링 정책은 스레드 스케줄링 정책과 어떤 관련이 있습니까?

나는

http://man7.org/linux/man-pages/man2/sched_getscheduler.2.html

에서 프로세스 스케줄링 정책에 대해 읽은 나는 스레드가 자신의 과정에서 정책을 예약 상속 수행

http://man7.org/linux/man-pages/man3/pthread_getschedparam.3.html

에서 쓰레드 스케줄링에 대해 읽은? 프로세스 스케줄링을 SCHED_OTHER으로 설정하고 해당 프로세스 스레드 중 하나를 SCHED_FIFO으로 설정할 수 있습니까? 정책을 독립적으로 이해하지만 스레드/프로세스 관계를 이해하지 못합니다. 아뇨 통찰력?

+2

http://stackoverflow.com/questions/15601155/does-linux-schedule-a-process-or-a-thread 답장을 –

답변

3

Linux는 프로세스 스케줄링을 전혀 지원하지 않습니다. 스케줄링은 전적으로 스레드 기반입니다. sched_* 함수는 프로세스의 스케줄링 매개 변수 대신 대상 스레드 ID의 스레드 예약 매개 변수를 잘못 수정합니다. 참조 :

http://sourceware.org/bugzilla/show_bug.cgi?id=14829http://sourceware.org/bugzilla/show_bug.cgi?id=15088

+0

감사합니다, 내가 '생각하지만 더 혼란 스럽네! 커널이 우리가 무엇을 호출하는지에 관계없이 언제 어떤 프로세스를 실행할지를 결정하는 메커니즘이 있습니다. 프로세스 실행 시간을 변경하는 유일한 방법은 setpriority()로 niceness 레벨을 변경하는 것입니까? –

+1

각 스레드는 스케줄링 정책에 따라 독립적으로 스케줄됩니다. 모든 스레드는 동일한 프로세스 또는 다른 프로세스의 일부이든 관계없이 동일한 일정 범위 경합 범위에서 경쟁합니다. –

+0

그건 의미가 있습니다. 감사. 솔직히 말해서 그렇게하면 간단하고 간결합니다 ... 나는이 물건을 찾기가 너무 어렵다고 믿을 수 없습니다. –