Tenho uma pergunta sobre o suporte "Realtime" no Linux/Ubuntu:
Após alguma pesquisa sobre o tópico, parece que o suporte "em tempo real" no Linux é duplo: por um lado, há o patch PREEMPT_RT , que traz recursos de "computação em tempo real" para o kernel do Linux; por outro lado, há as chamadas estratégias de agendamento "em tempo real" , como SCHED_FIFO
, SCHED_RR
e SCHED_DEADLINE
, que estão disponíveis há muito tempo.
Mas como tudo isso acontece?
O que acontece se eu usar uma das estratégias de agendamento "em tempo real" (por exemplo, SCHED_DEADLINE
) em um kernel "vanilla", ou seja, um que não tenha PREEMPT_RT
habilitado? Alguém poderia supor que isso nem seja possível. Mas parece que é possível, de acordo com meu teste em um kernel "vanilla" (não em tempo real)! O que isso significa? As estratégias de agendamento "em tempo real" ainda funcionam com o kernel "não em tempo real", mas não "tão bem"? Ou isso significa que as estratégias de agendamento "em tempo real" silenciosamente são as mesmas de SHED_OTHER
quando executadas em um kernel "não em tempo real"?
Além disso, supondo que eu esteja usando um kernel "em tempo real", ou seja, um que tenha habilitadoPREEMPT_RT
: haverá alguma diferença, em comparação com um kernel "vanilla" (não em tempo real), se eu não iniciar explicitamente nenhum processo com uma das estratégias de agendamento "em tempo real"?
(Pergunta bônus: como a "gentileza" interage com o agendamento "em tempo real"? Tenho procurado informações, mas todas as fontes explicam "gentileza" apenas no contexto de SHED_OTHER
)