-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathA inversão de prioridade.txt
14 lines (9 loc) · 3.31 KB
/
A inversão de prioridade.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A inversão de prioridade é um problema que ocorre ao competir por recursos. Por outro lado, um agendador de tarefas é responsável por resolver o problema assim que isso acontece, tentando reduzir a quantidade de comutadores de contexto e a latência das tarefas com maior prioridade.
Uma tarefa de baixa prioridade pode interromper a execução de uma tarefa de alta prioridade por competir pelo mesmo recurso. Além disso, uma tarefa de prioridade média pode interromper a execução de uma tarefa de alta prioridade sem competir pelo mesmo recurso.
Essas anomalias fazem com que a tarefa de alta prioridade seja afetada tanto pelo aumento do tempo total de execução quanto pela latência até que ela entre na seção crítica. Para a tarefa de baixa prioridade, o aumento do tempo é observado correndo dentro de sua seção crítica (Fig. 2.a).
O RTAI implementa dois mecanismos para controlar a inversão de prioridades: Prioridade de Herança e Prioridade de Teto. Ao usar a Herança de Prioridade, uma tarefa de baixa prioridade que contém um recurso compartilhado que é requerido por uma tarefa de alta prioridade “herda” a prioridade dessa tarefa de alta prioridade a partir do momento da solicitação.
Uma tarefa de baixa prioridade pode interromper a execução de uma tarefa de alta prioridade mantendo um recurso compartilhado, mas herdar a prioridade mais alta evita que uma tarefa de prioridade média antecipe a tarefa de baixa prioridade; Dessa forma, a tarefa de prioridade média não pode interromper a execução de uma tarefa de alta prioridade sem competir pelo mesmo recurso. Na verdade, a prioridade média não pode solicitar o uso da CPU (Fig. 2.b).
O mecanismo Priority Ceiling, também implementado no RTAI, funciona de maneira diferente. Antes da execução, o agendador deve saber quais recursos devem ser mais usados e quais tarefas os usará. Dessa forma, uma tabela para mapear recursos-tarefas é criada antes de o tempo de execução ser consultado durante a execução.
Nesse caso, uma tarefa de baixa prioridade pode interromper a execução de uma prioridade alta que compete pelo mesmo recurso, mas herdando imediatamente a prioridade mais alta que o recurso pode ter evita a situação de uma tarefa de prioridade média interrompendo a execução de uma prioridade alta tarefa. A tarefa de prioridade média não tem o direito de solicitar o uso da CPU, evitando, assim, a perda de tempo, decidindo se ela corresponde ou não à tarefa ativa. Uma das anomalias desse mecanismo é que a execução das tarefas de média prioridade pode ser atrasada devido a tarefas de menor prioridade (Fig. 2.c).
-- Conclusão
O funcionamento do escalonador sem controle de inversão de prioridade tem um desempenho muito fraco comparado com aquele que implementa um mecanismo de controle. Porém, para este caso, a latência das tarefas é quase zero, o tempo total de uma tarefa de alta prioridade será excessivamente alto, causando atraso na liberação de algum recurso bloqueado. A falta de um mecanismo de controle faz com que o agendador faça mais comutadores de contexto, aumentando o tempo de execução de todas as tarefas. O tempo de bloqueio de um recurso por uma tarefa de baixa prioridade afeta significativamente o desempenho do sistema; cada tarefa de prioridade mais alta que solicita a CPU assume o controle ativo.