2012-10-25 3 views
1

나는 sched.h로 리눅스 스케줄링을하고 놀고있다.리눅스 프로세스와 쓰레드 스케줄링

Linux 스케줄러는 스케줄링 할 때 스레드와 프로세스를 다르게 처리하지 않습니다. 스레드는 공통 자원을 공유하는 프로세스와 같습니다.

좋아요, 프로세스 A가 있는데 CPU 코어 0으로 설정되고 SCHED_FIFO 속성이 설정되어 있다고 가정합니다. 다른 높은 우선 순위의 작업이 시작될 때까지 실행됩니다. Process-A가 새 스레드를 만드는 경우 스레드가 동일한 속성을 상속합니까? (즉, SCHED_FIFO 속성을 사용하여 CPU 0에 바인딩되거나 기본값이됩니까?)

고마워요!

답변

4

당신은 실제로 간단한 프로그램이 테스트를하지만, 여러 사람이 페이지에서 할 수 있습니다

sched_setaffinity을 :

포크 (2)로 생성 한 자식은 부모의 CPU 선호도 마스크를 상속합니다. 선호도 마스크는 execve (2)를 통해 유지됩니다.

pthread_create :

새로운 스레드가 호출 스레드의 능력의 복사본을 상속는 설정 및 CPU 선호도 마스크 ( 기능 (7) 참조) (sched_setaffinity (2) 참조).

sched_setscheduler :

자식 프로세스는 포크 (2)에서 스케줄링 정책 및 매개 변수를 상속합니다. 스케줄 정책 및 매개 변수는 execve (2)에서 보존됩니다.