Como o kernel linux agendamento funciona no processador multi core? [fechadas]

1

Recentemente comecei a ler o livro de Robert Love "Linux Kernel Development 3rd edition" e mergulhei na parte do agendador, o que me deixou com muitas perguntas.

Então, primeiro, entendi que há dois casos em que o agendador altera a tarefa que está sendo executada atualmente (corrija-me se não for preciso), seja por uma tarefa que solicitou de bom grado reprogramar, pois bloqueia alguns / O ou dorme, ou uma interrupção do temporizador que fez com que a cpu saltasse para o código do agendador e antecipasse a tarefa atual se ela fosse interrompível.

  1. Cada núcleo de um processador multicore obtém a interrupção relacionada ao reprogramação? Cada um deles tem um temporizador diferente ou há uma interrupção que, em algum tipo de algoritmo, escolhe um núcleo específico para lidar com isso toda vez?

  2. Supondo que não apenas um núcleo re-agende cada interrupção (desde então eu imagino que pode demorar um pouco para trocar processos em todos os núcleos), o que acontece se dois núcleos remarcarem ao mesmo tempo? Porque, eu suponho que quando você executa a função de planejamento a lista de tarefas deve ser bloqueada, e então eu imagino alguns núcleos reprogramando sua tarefa atual simultaneamente resultando em apenas um núcleo realmente fazendo o trabalho de programação e todos os outros núcleos aguardando o bloqueio da lista de tarefas.

  3. Não apenas que o bloqueio da lista de tarefas é necessário para tocar na lista de tarefas real e dizer o estado das tarefas de mudança ou da ordem da fila de execução, e se um núcleo que planeja atualmente calcula qual tarefa deve ser executada ao lado e enquanto isso outro núcleo conclui o agendamento com êxito, o que faz com que o primeiro cálculo do núcleo seja totalmente equivocado, já que o reprogramação bem-sucedida alterou muito o estado do sistema?

  4. Eu entendi que no Linux a prioridade é dividida em "nice value", que é de -20 a 19 (maior significa menos prioridade e mais "legal") e prioridade em tempo real (0-99). os valores de prioridade em tempo real importam apenas para algumas políticas de agendamento, e cada processo pode se registrar em uma política de agendamento diferente. As políticas em tempo real sempre superam processos que não estão registrados em políticas em tempo real? Ou seja, se eu executar um processo em tempo real, nunca conseguirei executar processos normais? Como os valores "bons" de processos normais e valores de prioridade em tempo real de processos em tempo real funcionam juntos no algoritmo do planejador?

por Matan Peleg 02.10.2018 / 16:14

0 respostas