Я не совсем понимаю, как sched_setscheduler()
работает в Linux.
Насколько я понимаю, Linux использует CFS (SCHED_NORMAL)
для планирования процессов ядра. Когда пользовательское пространство запускает программу (процесс), вызывается вызов clone()
для создания соответствующего объекта планирования в пространстве ядра.
Итак, предположим, что есть пользовательский процесс A и процесс B.
Процесс A вызывает sched_setscheduler(pid_A, SCHED_RR)
и порождает дочерние процессы A1, A2.
Процесс B вызывает sched_setscheduler(pid_B, SCHED_NORMAL)
и порождает дочерние процессы B1, B2.
Как Linux будет планировать обработку A и B в этом случае, поскольку они используют разные политики планирования? Использует ли Linux свою внутреннюю политику планирования по умолчанию для выбора между A и B, но оставляют A, A2, A1 конкурировать друг с другом, используя SCHED_RR
, а B, B1, B2 с SCHED_NORMAL
?