André Carvalho

19
Inversões de Inversões de Prioridade Não Prioridade Não Limitadas em Sistemas Limitadas em Sistemas de Tempo Real e um de Tempo Real e um Estudo das Possíveis Estudo das Possíveis Soluções… Soluções… (Ufa !) (Ufa !) André Carvalho Paulo Felício André Quinta João Lopes

description

Inversões de Prioridade Não Limitadas em Sistemas de Tempo Real e um Estudo das Possíveis Soluções… (Ufa ! ). João Lopes. Paulo Felício. André Quinta. André Carvalho. Inversões de Prioridade. Uso frequente de algoritmos de escalonamento por prioridade com preempção - PowerPoint PPT Presentation

Transcript of André Carvalho

Page 1: André Carvalho

Inversões de Prioridade Inversões de Prioridade Não Limitadas em Não Limitadas em

Sistemas de Tempo Sistemas de Tempo Real e um Estudo das Real e um Estudo das Possíveis Soluções… Possíveis Soluções…

(Ufa !)(Ufa !)

André Carvalho

Paulo Felício

André Quinta

João Lopes

Page 2: André Carvalho

Inversões de Inversões de PrioridadePrioridade

Uso frequente de algoritmos de Uso frequente de algoritmos de escalonamento por prioridade com escalonamento por prioridade com preempçãopreempção

Contenção no acesso a recursos Contenção no acesso a recursos partilhados por tarefas de diferentes partilhados por tarefas de diferentes prioridadesprioridades

Tarefas de elevada prioridade atrasadas Tarefas de elevada prioridade atrasadas pela execução de tarefas de menor pela execução de tarefas de menor prioridadeprioridade

Page 3: André Carvalho

Inversões de Inversões de PrioridadePrioridade

Na análise de escalonabilidade, cada tarefa Na análise de escalonabilidade, cada tarefa tem que acomodar, entre a activação e a tem que acomodar, entre a activação e a deadlinedeadline : : Tempo de execuçãoTempo de execução Tempo de preempçãoTempo de preempção Tempo de bloqueioTempo de bloqueio

É necessário minimizar a duração da É necessário minimizar a duração da inversão de prioridades, através do estudo inversão de prioridades, através do estudo da sua fonte, melhorando a previsibilidade.da sua fonte, melhorando a previsibilidade.

Page 4: André Carvalho

Fontes de Inversão de Fontes de Inversão de PrioridadePrioridade

Semáforos e regiões críticasSemáforos e regiões críticas Primitivas comuns de regulação do acesso a Primitivas comuns de regulação do acesso a

recursos a recursos partilhados recursos a recursos partilhados Regiões críticas : Regiões críticas :

Segmentos de código que acedem a recursos Segmentos de código que acedem a recursos partilhadospartilhados

Executados de forma mutuamente exclusivaExecutados de forma mutuamente exclusiva Cada tarefa tem que obter o bloqueio do Cada tarefa tem que obter o bloqueio do

semáforo pretendido antes de entrar na semáforo pretendido antes de entrar na região críticaregião crítica

É bloqueada caso não o consiga, ficando em É bloqueada caso não o consiga, ficando em fila de esperafila de espera

Será que é suficiente na limitação do atraso máximo ?

Page 5: André Carvalho

Fontes de Inversão de Fontes de Inversão de PrioridadePrioridade

Semáforos e regiões críticasSemáforos e regiões críticas

Pri

ori

dad

e

T1

T2

T3

Page 6: André Carvalho

Fontes de Inversão de Fontes de Inversão de PrioridadePrioridade

Semáforos e regiões críticasSemáforos e regiões críticas

Pri

ori

dad

e

T1

T2

T3

Page 7: André Carvalho

Fontes de Inversão de Fontes de Inversão de PrioridadePrioridade Filas deFilas de esperaespera

Q1

Q2

Q3

Page 8: André Carvalho

Primitivas de SincronizaçãoPrimitivas de SincronizaçãoInibição de PreempçãoInibição de Preempção

Como prevenir uma Como prevenir uma unbounded priority inversion unbounded priority inversion ??

Inibir a preempção na execução de uma tarefaInibir a preempção na execução de uma tarefa

Quando uma tarefa de prioridade inferior está dentro da Quando uma tarefa de prioridade inferior está dentro da sua região critica sua região critica não deixar que haja preempção por uma não deixar que haja preempção por uma tarefa que tenha prioridade maior.tarefa que tenha prioridade maior.

Isto pode ser feito desactivando a preempção durante a Isto pode ser feito desactivando a preempção durante a execução de execução de todastodas as regiões criticas. as regiões criticas.

VantagensVantagens Implementação simplesImplementação simples Eficaz desde que a duração da maior região crítica seja menor Eficaz desde que a duração da maior região crítica seja menor que a mais pequena das que a mais pequena das deadlinesdeadlines

DesvantagensDesvantagens Tarefas de prioridade alta podem ser bloqueadas pelas de Tarefas de prioridade alta podem ser bloqueadas pelas de prioridade baixa.prioridade baixa.

Page 9: André Carvalho

Primitivas de SincronizaçãoPrimitivas de SincronizaçãoInibição de PreempçãoInibição de Preempção

Quando existe preempção provocada por um dispositivo externo.Quando existe preempção provocada por um dispositivo externo.

Podemos inibir a preempção através de InterruptsPodemos inibir a preempção através de Interrupts

O acesso com exclusão mútua será garantido se:O acesso com exclusão mútua será garantido se:A inibição das interrupções for feita antes da execução da região A inibição das interrupções for feita antes da execução da região critica.critica.Sendo activada, após execução da região critica.Sendo activada, após execução da região critica.

VantagensVantagens Não usa tempo de processador (ao desactivar e activar os Não usa tempo de processador (ao desactivar e activar os

interrupts)interrupts).. Pode ser usado por algoritmos de prioridades estáticas ou Pode ser usado por algoritmos de prioridades estáticas ou

dinâmicas.dinâmicas. Cada tarefa só pode bloquear uma vez, com a duração da maior das Cada tarefa só pode bloquear uma vez, com a duração da maior das

regiões críticas das tarefas de menor prioridade.regiões críticas das tarefas de menor prioridade.

DesvantagensDesvantagens Só deve ser usada com regiões criticas muito curtas.Só deve ser usada com regiões criticas muito curtas. Corre-se o risco de perder Corre-se o risco de perder interruptsinterrupts quando a inibição dos quando a inibição dos

interruptsinterrupts não é curta. não é curta.

Page 10: André Carvalho

Primitivas de SincronizaçãoPrimitivas de SincronizaçãoInibição de PreempçãoInibição de Preempção

Pri

ori

dad

e

T1

T2

T3

Page 11: André Carvalho

Primitivas de SincronizaçãoPrimitivas de SincronizaçãoInibição de PreempçãoInibição de Preempção

O O Priority Ceiling Protocol EmulationPriority Ceiling Protocol Emulation A ideia é fazer um disable selectivo da preempção.A ideia é fazer um disable selectivo da preempção.

Inibe-se as possíveis preempções de tarefas com prioridade média, Inibe-se as possíveis preempções de tarefas com prioridade média, elevando-se suficientemente a prioridade das tarefas de prioridade inferior.elevando-se suficientemente a prioridade das tarefas de prioridade inferior.

A prioridade mais alta de todas as tarefas em contenção (que fechará o A prioridade mais alta de todas as tarefas em contenção (que fechará o semáforo) será copiada para um campo associado ao semáforo (esta semáforo) será copiada para um campo associado ao semáforo (esta prioridade designa-se Priority Ceiling)prioridade designa-se Priority Ceiling)

Quando uma tarefa faz a chamada ao SO para abrir o semáforo fechado, o Quando uma tarefa faz a chamada ao SO para abrir o semáforo fechado, o SO atribui à tarefa a prioridade necessária para o abrir.SO atribui à tarefa a prioridade necessária para o abrir.

Apenas uma tarefa, de entre as que podem fechar o semáforo, pode estar na Apenas uma tarefa, de entre as que podem fechar o semáforo, pode estar na sua região critica em qualquer momento.sua região critica em qualquer momento.

VantagensVantagens método mais eficaz na inibição das preempçõesmétodo mais eficaz na inibição das preempções Livre de Deadlock - só uma tarefa pode estar na região criticaLivre de Deadlock - só uma tarefa pode estar na região critica

DesvantagensDesvantagens Uma tarefa pode ser bloqueada por uma tarefa de menor prioridade Uma tarefa pode ser bloqueada por uma tarefa de menor prioridade

(quando ocorre auto suspensão das tarefas de menor prioridade)(quando ocorre auto suspensão das tarefas de menor prioridade)

Page 12: André Carvalho

Priority Inheritance Priority Inheritance ProtocolProtocol

Protocolo de Herança de PrioridadesProtocolo de Herança de PrioridadesA tarefa T3 começa a executar, usando um determinado recurso partilhado.A tarefa T1, após ter iniciado, precisa de aceder à região crítica “ocupada” por T3. É bloqueada e dá a T3 prioridade P1 HERANÇA de PRIORIDADEEnquanto T3 executa, T2 fica pronta mas é bloqueada por T3. T3 sai da região crítica e volta logo a ter prioridade P3. T1 executa até ao fim, não deixando T2 executar (P1>P2). T2 executa (P2>P3), e por último T3 termina.

T1

T2

T3

Pri

ori

dad

e

Page 13: André Carvalho

Priority Inheritance Priority Inheritance ProtocolProtocol

Protocolo de Herança de PrioridadesProtocolo de Herança de Prioridades

Quando T1 quer aceder ao recurso, esta é bloqueada de forma directa (Direct Blocking)

Nao consigo aceder ao recurso. Estou a ser bloqueado de forma directa!!!

Quando T2 quer executar, está impedida devido a T1 que por sua vez também o está devido a T3. Diz-se que T2 bloqueia de forma indirecta (Push Through Blocking).

Até queria executar mas tenho duas tarefas à minha frente!!!

É óbvio que a duração do “Push Through Blocking” depende da região crítica.

T1

T2

T3

Pri

ori

dad

e

Page 14: André Carvalho

Priority Inheritance Priority Inheritance ProtocolProtocol

Protocolo de Herança de PrioridadesProtocolo de Herança de PrioridadesEste protocolo é “bom”, porque torna-se Este protocolo é “bom”, porque torna-se

fácil de compreeder e concretizar.fácil de compreeder e concretizar.

Por outro lado (Há sempre outro lado!!! Por outro lado (Há sempre outro lado!!! ))

Este protocolo Este protocolo nãonão resolve problemas de: resolve problemas de: ““Chained blocking” (bloqueio em cadeia)Chained blocking” (bloqueio em cadeia) ““Deadlock”Deadlock”

Page 15: André Carvalho

Priority Ceiling ProtocolProtocolo de Tecto de Prioridade

Elimina a possibilidade de ocorrer chained blocking e deadlocks

O tecto de prioridade de um semáforo ( S ) é a prioridade mais alta de entre as tarefas que o podem fechar

Regras do PCP:

• Uma tarefa pode interromper outra de menor prioridade;

• Uma tarefa não pode entrar numa região crítica a não ser que a sua prioridade seja maior do que os tectos de prioridades dos semáforos fechados por outras tarefas;

• Uma tarefa que bloqueie outra de maior prioridade, herda a sua prioridade (herança de prioridades)

Page 16: André Carvalho

Uma tarefa apenas pode fechar um semáforo quando todos os semáforos de que essa tarefa vai precisar estejam livres.

Uma tarefa pode ser bloqueada por outra de menor prioridade que use um semáforo que tenha um tecto pelo menos igual à sua prioridade.

Priority Ceiling ProtocolProtocolo de Tecto de Prioridade

Page 17: André Carvalho

S0 = P1 S1 = P1 S1 = P2

Mais à frente vou usar um recurso que está fechado, não posso continuar

Alguém com maior prioridade interrompeu-me

Esta tarefa tem a

prioridade superior aos tectos dos semáforos fechados

A seguir vou usar um recurso

que está fechado, vou dar

a minha prioridade

Priority Ceiling ProtocolProtocolo de Tecto de Prioridade

Page 18: André Carvalho

Pros and cons:

• Ao contrário do PIP, não há chained blocking nem deadlocks • De concretização mais difícil, uma vez que são necessários novos campos tanto para o TCB como para os semáforos• É necessária uma programação mais cuidada por parte do programador

Priority Ceiling ProtocolProtocolo de Tecto de Prioridade

Page 19: André Carvalho

Frase do dia:

“Priority Ceiling means that while a thread owns the mutex it runs at a priority higher than any other thread that may acquire the

mutex.”

Bibliografia:Artigo de Sadegh Davari, Lui Sha

"Sources of Unbounded Priority Inversions in Real-Time Systems and a Comparativ Study of Possible Solutions"Operating Systems Review, 26(2):110-120. ACM Press. April 1992.