Internals do switch de contexto do Linux: O que acontece quando o processo sai antes da interrupção do timer?

0

Como a mudança de contexto é feita no kernel do linux quando o processo sai antes da interrupção do timer?

Eu sei que se o processo estiver rodando e a interrupção do timer ocorrer, então schedule function é chamada automaticamente se o flag estiver setado, a função schedule então seleciona o próximo processo a ser executado. Basicamente, neste caso, a função de programação é executada no contexto do processo atual, mas o que acontece quando o processo sai mesmo antes da interrupção do temporizador? quem chama a função schedule neste caso? E em que contexto ele é executado?

Observação: eu fiz essa pergunta originalmente no stackoverflow, mas estou perguntando aqui novamente, pois não houve resposta no stackoverflow.

    
por Nullpointer 04.10.2016 / 18:02

1 resposta

2

A interrupção do timer não está relacionada a nenhum processo. Quando é atendido, o kernel executa uma rotina de serviço de interrupção. Esse código e todas as funções que ele chama executam em um "contexto de interrupção".

Uma interrupção pode ser atendida no meio de quase qualquer coisa: a execução do código do kernel, incluindo o código atendendo a outra interrupção, pode ser suspensa para atender uma interrupção.

Quando o agendador é chamado, ele simplesmente leva em consideração os processos que existem naquele momento e são executáveis.

    
por 04.10.2016 / 18:32