Существует много материалов, касающихся приоритетного приоритетного планирования в Google и Stackoverflow, но у меня все еще есть путаница в отношении планирования задач с бесконечным циклом в ядре приоритетного приоритетного планирования. Давайте рассмотрим следующий случай:
ОСРВ запускает две задачи T1
и T2
с приоритетом 50
и 100
соответственно. Обе задачи выглядят так:
void T1()
{
while(1)
{
perform_some_task1();
usleep(100);
}
}
и
void T2()
{
while(1)
{
perform_some_task2();
usleep(100);
}
}
Насколько я понял, ядро будет планировать T2
из-за его более высокого приоритета и приостанавливать T1
из-за его более низкого приоритета. Теперь, поскольку T2
является бесконечным циклом, он никогда не опустошит процессор до T1
, пока не выполнится какая-либо другая высокоприоритетная задача T2
.
НО, похоже, мое понимание неверно, потому что я проверил вышеописанный случай в ОСРВ и у меня вывод на консоль распечатан обеими задачами.
Может ли кто-нибудь прокомментировать мое понимание по данному вопросу и фактическое поведение ОСРВ в вышеуказанном случае?