Linux 글로벌 스케줄링 전략은 무엇입니까?

Linux 글로벌 스케줄링 전략은 무엇입니까?

저는 운영체제를 배우고 있어요. 질문이 있습니다. 예를 들어, 특정 프로세스 그룹(그룹 1)의 스케줄링 정책은 이고, SCHED_RR다른 프로세스 그룹(그룹 2)의 스케줄링 정책은 입니다 SCHED_FIFO.

이제 커널이 이 두 그룹에서 프로세스를 선택해야 할 때 Linux는 어떤 스케줄링 정책을 사용합니까?

이 정책을 변경할 수 있나요? 그렇다면 어떻게 해야 할까요?

답변1

man sched

개념적으로 스케줄러는 가능한 각 sched_priority 값에 대해 실행 가능한 스레드 목록을 유지 관리합니다. 다음에 실행할 스레드를 결정하기 위해 스케줄러는 정적 우선순위가 가장 높은 비어 있지 않은 목록을 찾고 해당 목록의 선두에 있는 스레드를 선택합니다.

스레드의 예약 정책은 동일한 정적 우선순위를 가진 스레드 목록에 스레드가 삽입될 위치와 이 목록 내에서 이동하는 방법을 결정합니다.

실시간 전략도 있지만 우선 순위는 (전혀?) 중요하지 않습니다.

스레드가 SCHED_DEADLINE 정책에 포함될 때 보장을 달성하기 위해 SCHED_DEADLINE 스레드는 시스템에서 가장 높은 우선순위(사용자 제어 가능) 스레드입니다. SCHED_DEADLINE 스레드가 실행 가능하면 다음 중 하나에 따라 예약된 모든 스레드를 선점합니다. 다른 정책.

관련 정보