Parte Geral de Direito Civil André de Carvalho Pagnoncelli [email protected].
André Carvalho
description
Transcript of 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
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
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.
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 ?
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
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
Fontes de Inversão de Fontes de Inversão de PrioridadePrioridade Filas deFilas de esperaespera
Q1
Q2
Q3
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.
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.
Primitivas de SincronizaçãoPrimitivas de SincronizaçãoInibição de PreempçãoInibição de Preempção
Pri
ori
dad
e
T1
T2
T3
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)
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
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
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”
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)
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
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
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
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.