O tempo real do Linux não é uma emulação, existem chamadas do sistema afetando o agendamento. Veja man sched(7)
. Não está claro pela sua pergunta o que você está tentando fazer e qual é o seu problema exato. O valor de sched_priority
é relevante apenas em relação às prioridades de outros segmentos. Por exemplo, se houver apenas um thread com prioridade > 0, não importa se a prioridade é 1 ou 40; um valor mais alto não dará "impulso" extra ao encadeamento. Você terá que determinar a prioridade relativa exigida pelos seus tópicos e atribuir-lhes os valores de prioridade de acordo.
Observe que não há quantum de tempo associado a SCHED_FIFO
threads. Um encadeamento SCHED_FIFO
é executado até que uma das ações a seguir ocorra: o encadeamento está bloqueado porque está aguardando E / S, um encadeamento de maior prioridade está pronto para ser executado ou o encadeamento voluntariamente produz o processador. Você terá que levar isso em consideração se tiver vários encadeamentos com igual prioridade, caso contrário, um encadeamento poderá sobrecarregar a CPU dos outros encadeamentos. Em uma máquina multiprocessador, vários encadeamentos podem, é claro, ser executados simultaneamente, cada um em sua própria CPU.