Eu tenho aprendido alguns conceitos de programação. Atualmente, meu entendimento até agora é o seguinte.
- Existem processos em tempo real e processos em tempo não real.
- Processos não em tempo real podem ter
nice
valores para sua prioridade no intervalo de -20 a +20 . O valor positivo mais alto indica que o processo tem prioridade mais baixa. - Os processos em tempo real terão um valor de gentileza listado
-
conforme explicado nesta resposta aqui . Isso ocorre principalmente porque os processos em tempo real têm prioridades mais altas do que os processos em tempo não real e o valor da gentileza não se aplica a eles. - Agora, eu posso usar
chrt
para ver os atributos em tempo real de um processo.
Para um processo em tempo real, o chrt
resultado é dado como,
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Como podemos ver no processo 5 , a prioridade é 99, que é a mais alta. Além disso, a política de agendamento éSCHED_FIFO
Agora, para um processo não em tempo real, o chrt
resultado é dado como,
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Como podemos ver no processo 22383 , a prioridade é 0 e a política de agendamento é SCHED_OTHER
.
Questões
- É possível fazer qualquer processo como processo em tempo real?
- É possível definir outro algoritmo de agendamento que
SCHED_OTHER
não seja um processo em tempo não real? A partir daqui , também vejo que eu poderia modificar o atributo para um processo em execução como,
chrt -p prio pid
Além disso, vejo
chrt -m
a lista de algoritmos de agendamento. O comando me dá a saída como,SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
Agora, como sugerido acima, se eu definir
chrt -p 55 22383
qual algoritmo será usado?