Escalonabilidade em tarefas
Dependentes: Compartilhamento de
Recursos
André Luis Meneses Silva
Agenda
• Deadline Arbitrário
• Protocolo Herança de Prioridade
• Protocolo Prioridade Teto
Deadline Arbitrário
• Em modelos de deadline arbitrário, podemos
ter (D > P).
• Tarefas com estas características sofrem
interferência interna.
• Logo, para cálculo do tempo de resposta,
também temos de levar em consideração a
interferência da própria tarefa sobre si
mesmo.
Deadline Arbitrário
• Antes nós tínhamos:
• E agora temos:
Deadline Arbitrário
• Antes nós tínhamos:
• E agora temos:
Onde,
q+1
representam
as
ativações de Ti que
podem se sobrepor.
Deadline Arbitrário
• Tempo de Resposta (q = 0, 1, 2, ...)
• Para calcular o número de auto-interferências.
Deadline Arbitrário
• Na presença de Jitter, basta adicionarmos o
Jitter em nossos cálculos.
Deadline Arbitrário
• Exemplo
Modelar no
Cheddar.
Usar algoritmo
Highest Priority
First.
Tar. Periódicas
Jitter
Período
T. de Computação
Deadline
Prioridade
Tarefa A
Tarefa B
Tarefa C
1
3
-
40
80
20
10
10
5
40
25
40
1
2
3
Deadline Arbitrário
25 <= (0 + 1) . 20
25 <= 20 (Falso, então continuamos).
Deadline Arbitrário
25 <= (1 + 1) . 20
30 <= 40 (Verdadeiro), achamos a
interferência.
Para o Cálculo de R, fazemos
R3(0) = W3(0) – 0 = 25
Tarefas Dependentes
• Podemos ter dois casos
– Compartilhamento de Recursos.
– Dependência entre Tarefas.
Compartilhamento de Recursos
• Imaginem o seguinte cenário:
Pedido de entrada em SC
Executando em SC
Compartilhamento de Recursos
• Este comportamento é denominado de
inversão de prioridade.
– Tarefas menos prioritárias bloqueiam mais
prioritárias por estar utilizando um recurso
compartilhado.
– Problemas?
Compartilhamento de Recursos
• Este comportamento é denominado de
inversão de prioridade.
– Tarefas menos prioritárias bloqueiam mais
prioritárias por estar utilizando um recurso
compartilhado.
– Problemas?
• Tarefas mais prioritárias podem ficar um longo período
de tempo bloqueadas.
– Tarefas intermediárias vão provocar sucessivas preempções
na tarefa em sessão crítica.
• Como resolver isso?
Compartilhamento de Recursos
• Algoritmos mais comuns:
– Protocolo Herança de Prioridade
– Protocolo de Prioridade Teto
Protocolo Herança de Prioridade (PHP)
• Tarefas possuem duas prioridades:
– Tarefas possuem prioridade nominal ou estática
(RM, DM, etc).
– Tarefas possuem prioridade dinâmica ou ativa.
• Derivadas das ações de bloqueio que ocorrem no
sistema.
Protocolo Herança de Prioridade (PHP)
• Funcionamento: Tarefas são escalonadas pela
sua prioridade estática enquanto não existir
recurso bloqueado.
• Quando existe recurso bloqueado, a tarefa em
sessão crítica herda prioridade das tarefas
mais prioritárias.
Protocolo Herança de Prioridade (PHP)
Pedido de entrada em SC
Entrada em SC
Herda Prioridade P1
Fim de Execução da Sessão
Crítica
Executando em SC
Protocolo Herança de Prioridade (PHP)
• Sob o PHP um tarefa pode sofrer três tipos de
bloqueios
– Bloqueio direto
• (T1 > T2) compartilham recursos.
• T2 bloqueia T1.
– Bloqueio por herança
• (T1 > T2 >T3) compartilham recursos.
• T3 bloqueia T1 e conseqüentemente T3 bloqueia T2.
– Bloqueio transitivo
• T1 bloqueia T2. T2 bloqueia T3. T1 bloqueia T3.
Identifique os Bloqueios
Bloqueio Direto
Bloqueio Herança
Bloqueio Herança
Identifique os Bloqueios
Bloqueio Transitivo Bloqueio Transitivo
Bloqueio Direto
Protocolo Herança de Prioridade (PHP)
• Teste de Escalonabilidade.
– Similar aos anteriores, mas leva em consideração
o bloqueio máximo (Bi) de cada tarefa.
– Bi = maior sessão crítica que bloqueia Ti.
Protocolo Herança de Prioridade (PHP)
• Modelar no Cheddar
Tar. Periódicas
Período
T. de Computação
Bi
Prioridade RM
Tarefa A
Tarefa B
18
20
6
4
2
4
1
2
Tarefa C
50
10
0
3
Usar algoritmo Rate Monotonic.
Bi = Blocking Time
Protocolo Herança de Prioridade (PHP)
Tar. Periódicas
Período
T. de Computação
Bi
Prioridade RM
Tarefa A
Tarefa B
Tarefa C
18
20
50
6
4
10
2
4
0
1
2
3
Protocolo Herança de Prioridade (PHP)
• Ou ainda poderíamos utilizar:
Atividade para Casa
• Calcular a utilização para cada uma das
tarefas.
• Compare os resultados com os obtidos pelo
cheddar.
Protocolo Herança de Prioridade (PHP)
• Qual o problema do PHP?
– PHP é sujeito a deadlock.
– Alguém consegue dar um exemplo?
Protocolo Herança de Prioridade (PHP)
Sofre Preempção
Entra em SC2
Pede para entra
em SC1
Deadlock
Inicia a Execução
Volta a executar
Pede para entrar
em SC2
Entra em SC1
Como resolver isso?
Idéias?
Protocolo de Prioridade Teto
• Limita o número de bloqueios ou inversões de
prioridade para evitar deadlocks.
• Dirigido para escalonamento de prioridade
fixa.
• Similar ao PHP, porém corrige suas falhas.
– Também trabalha com herança de prioridades.
Protocolo de Prioridade Teto
• Funcionamento:
– Cada recurso possui uma prioridade teto (prioridade
igual a da tarefa mais prioritária que pode alocar o
recurso).
– Se nenhum recurso compartilhado está bloqueado,
quem requisita é atendido.
– Se alguma tarefa bloqueia outra mais prioritária, a
menos prioritária herda sua prioridade.
– No caso de haver recurso em uso:
• A tarefa que solicita só consegue acesso ao recurso solicitado
se sua prioridade for maior que a prioridade teto de todos os
recursos em uso alocados por outras tarefas.
Protocolo de Prioridade Teto
Seja P1 > P2 > P3
Legenda para os recursos
RC1 (Prioridade Teto = P1)
RC2 (Prioridade Teto = P1)
RC3 (Prioridade Teto = P2)
Tempo de término
P1
P2
P3
P2
P3
Teste de Escalonabilidade no PCP.
• Mesmas fórmulas do PHP
• Só muda o conceito de bloqueio máximo (Bi).
– Duração da maior sessão crítica que pode
bloquear pelo algoritmo de Teto.
Teste de Escalonabilidade no PCP
P1
P2
P3
P2
P3
Modelar no Cheddar
Tar. Periódicas
Período
T. de Computação
Bi
Prioridade RM
Compartilhamento
Tarefa A
Tarefa B
Tarefa C
15
20
25
10
8
6
2
1
0
1
2
3
S1, S2
S1, S3
S2, S3
Tar. Periódicas
Recurso /Intervalo
Recurso /Intervalo
Tarefa A
Tarefa B
S1 (1-2)
S1(2-3)
S2(3-4)
S3(1-2)
Tarefa C
S2(3-7)
S3(2-8)
Atividades para Casa
• Modelar no Cheddar esta escala
P1
P2
P3
P2
P3
Referências
• Farines
– Seções 2.5.3 a 2.6
Download

Escalonabilidade em tarefas Dependentes