System tick timer prioridade de interrupção e interrupções bloqueadas

0

Suponha que temos um sistema operacional rodando em uma CPU totalmente compatível com seus requisitos. Este sistema operacional é dirigido por ticks. A interrupção do tick do sistema chega do temporizador externo (modo periódico) que é conectado a algum pino IRQn da CPU para simplificar.

Os pinos de IRQ são classificados por prioridade de interrupção. O IRQ0 tem a prioridade mais alta e o IRQn tem a menor prioridade. A prioridade existe pelo menos por dois motivos. Primeiro, é claro, quando chegam duas interrupções juntas, uma com maior prioridade é selecionada. A segunda razão é a seguinte: quando a interrupção ocorre, outras interrupções são desativadas pelo hardware. Quando as interrupções estão ativadas para ISR (possíveis interrupções de aninhamento), apenas interrupções com maior prioridade podem ocorrer. E tenho algumas dúvidas sobre isso.

Minha primeira pergunta provavelmente é muito simples e posso respondê-la sozinha (talvez), mas quero ler uma resposta confiável.

  • Como escolher a prioridade do tick timer? É a menor prioridade de interrupção no sistema? *

Aqui está a segunda pergunta.

  • E se a interrupção do temporizador ocorrer exatamente enquanto a CPU estiver servindo outra (s) interrupção (s) e interrupções posteriores estiverem desabilitadas?

E aqui está a adição por mim. Se pode acontecer a situação acima (na segunda pergunta), há uma chance de perda do tick do sistema. Pode causar grandes problemas?

* Se a prioridade do tick timer não era a prioridade de interrupção mais baixa no sistema, pode ocorrer situação quando a CPU está em ISR com menor prioridade que a interrupção de tick do sistema e permite mais interrupções e processos do usuário, é armazenado em algum lugar na pilha, onde não podemos encontrá-lo na rotina de ticks do sistema.

Sei que tudo pode depender do sistema, mas estou interessado em soluções típicas semelhantes a essa situação.

Desculpe pelo meu inglês.

    
por Nik Novák 14.12.2015 / 01:26

0 respostas