<ul>Escalonamento de Processos em Tempo Real  </ul>
Tempo real <ul><li>Não crítico ( soft ): processos críticos devem receber prioridade sobre outros
e.g.: Linux e Windows
Crítico ( hard ): tarefas críticas  devem  executar dentro um período de tempo </li></ul>estabelecido ( deadline ) <ul><ul...
Dinâmico: as decisões são tomados em tempo de execução </li></ul></ul><ul>Algoritmos de Escalonamento  </ul>
É difícil prever o pior caso de programas concorrentes de tempo real quando a  complexidade aumenta -> impõe-se restrições...
uso geral onde os processos são criados e destruídos dinamicamente
Todos processos são periódicos com períodos conhecidos
Os processos são completamente independentes i.e. não se comunicam/sincronizam
entre si (são concorrentes mas não são cooperantes) </li><ul><li>Instante crítico: instante em que todos processos são dis...
Todos processos  tem um  deadline  igual ao seu período  (i.e. o processo deve completar
antes ser  novamente disparado)
Todos os processos tem tempo de execução de pior caso (WCET) fixo </li></ul>Ci Di=Ti Um modelo simples de processo
Notação Descrição B tempo de bloqueio de pior caso (se aplicável) C tempo de computação de pior caso (WCET) D deadline I t...
<ul><li>alternativa a um RTOS
conjunto de tarefas puramente periódicas
implementado como laço infinito na  main  (C, C++)
Ex: sensor de temperatura deve ser lido a cada 50ms e LCD dever ser atualizado a </li></ul>cada 100ms. main() { // initial...
Cyclic Executive Ex: Considere o seguinte conjunto de tarefas Tarefa T (ms) C (ms) a 25 10 b 25 8 c 50 5 d 50 4 e 100 2 25...
Processos com longos períodos </li></ul><li>Os períodos tem que ser múltiplos
do ciclo menor </li></ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>a </ul><ul>b </ul><ul>d </ul><ul>e </ul><ul>a </ul><ul>b </u...
Estados de um processo <ul><li>Em execução
Pronto: escalonados por prioridade (obtida das restrições temporais) </li><ul><li>Não-preemptivo
Preemptivo -> preferível (processos prioritários mais reativos) </li></ul><li>Suspenso (bloqueado) </li><ul><li>aguardando...
aguardando evento não-temporal -> processos esporádicos </li></ul></ul><ul>Escalonamento baseado em processo </ul>
Atribuição de prioridade por taxa monotônica Para o modelo simples previamente apresentado, a atribuição de prioridade bas...
Se a seguinte condição for verdadeira, todos os processos cumprirão seus  deadlines : N Limite utilização (%) Uso da CPU (...
Exemplo: Conjunto de tarefas  A :  três processos cujas prioridades foram definidas pela taxa monotônica <ul><li>A utiliza...
Isto é acima do limiar para 3 tarefas (0,78) e, portanto, este conjunto de
tarefas falha no teste de utilização </li></ul><ul>Atribuição de prioridade por taxa monotônica </ul><ul>Task  Period  Com...
<ul>Linha de tempo para o conjunto de tarefas A </ul><ul>Time </ul><ul>task </ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>Task...
<ul>Diagrama de Gantt para o conjunto de tarefas A </ul><ul>c </ul><ul>b </ul><ul>a </ul><ul>c </ul><ul>b </ul><ul>0 </ul>...
<ul>Conjunto de tarefas B </ul><ul><li>A utilização combinada é de 0,775
Que está abaixo do limiar para três tarefas (0,78) e, portanto, este conjunto de tarefas atenderá todos os seus  deadlines...
<ul>Conjunto de tarefas C </ul><ul><li>A utilização combinada é 1,0
Que está acima do limiar para três tarefas (0,78), ou seja, o teste falha  mas, apesar disso, o conjunto de tarefas atende...
<ul>Linha de tempo para o Conjunto de Tarefas C </ul><ul>Time </ul><ul>task </ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>70 <...
<ul>Análise do Tempo de Resposta </ul><ul><li>O tempo de resposta de pior caso da tarefa I (Task_i), Ri, é calculado e com...
<ul>Cálculo do tempo de resposta R </ul><ul>Durante Ri, cada tarefa mais prioritária Task_j executará um certo número de v...
<ul>Equação do Tempo de Resposta </ul><ul>onde  hp ( i ) é o conjunto de tarefas mais prioritárias do que Task_i </ul><ul>...
<ul>Algoritmo para o Tempo de Resposta </ul><ul>for  i  in  1..N  loop  -- for each process in turn n := 0 loop calculate ...
<ul>Conjunto de Tarefas D </ul><ul>Task  Period  ComputationTime  Priority </ul><ul>T  C  P  a  7  3  3  b  12  3  2  c  2...
 
<ul>Revendo o conjunto de Tarefas C </ul><ul><li>A utilização combinada é 1,0
Que está acima do limiar de utilização para 3 tarefas (0,78), portanto o teste de utilização falhou
A análise do tempo de resposta mostra que o conjunto de tarefas atenderá todos os seus  deadlines ! </li></ul><ul>Process ...
Próximos SlideShares
Carregando em…5
×

Parte1e

453 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
453
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Parte1e

  1. 1. <ul>Escalonamento de Processos em Tempo Real </ul>
  2. 2. Tempo real <ul><li>Não crítico ( soft ): processos críticos devem receber prioridade sobre outros
  3. 3. e.g.: Linux e Windows
  4. 4. Crítico ( hard ): tarefas críticas devem executar dentro um período de tempo </li></ul>estabelecido ( deadline ) <ul><ul><li>Estático: as previsões são feitas antes da execução
  5. 5. Dinâmico: as decisões são tomados em tempo de execução </li></ul></ul><ul>Algoritmos de Escalonamento </ul>
  6. 6. É difícil prever o pior caso de programas concorrentes de tempo real quando a complexidade aumenta -> impõe-se restrições na estrutura de tais programas: <ul><li>A aplicação consiste de um conjunto fixo de processos, bem diferente dos SOs de
  7. 7. uso geral onde os processos são criados e destruídos dinamicamente
  8. 8. Todos processos são periódicos com períodos conhecidos
  9. 9. Os processos são completamente independentes i.e. não se comunicam/sincronizam
  10. 10. entre si (são concorrentes mas não são cooperantes) </li><ul><li>Instante crítico: instante em que todos processos são disparados simultaneamente </li></ul></ul>(carga máxima processador) <ul><li>Todos os overheads do sistema são desprezados (e.g. tempo chaveamento contexto)
  11. 11. Todos processos tem um deadline igual ao seu período (i.e. o processo deve completar
  12. 12. antes ser novamente disparado)
  13. 13. Todos os processos tem tempo de execução de pior caso (WCET) fixo </li></ul>Ci Di=Ti Um modelo simples de processo
  14. 14. Notação Descrição B tempo de bloqueio de pior caso (se aplicável) C tempo de computação de pior caso (WCET) D deadline I tempo de interferência J jitter de disparo N número de processos no sistema P prioridade atribuída ao processo (se aplicável) R tempo resposta de pior caso T tempo mínimo entre disparos de um processo (período) U utilização de cada processo (U=C/T)
  15. 15. <ul><li>alternativa a um RTOS
  16. 16. conjunto de tarefas puramente periódicas
  17. 17. implementado como laço infinito na main (C, C++)
  18. 18. Ex: sensor de temperatura deve ser lido a cada 50ms e LCD dever ser atualizado a </li></ul>cada 100ms. main() { // initialization code here while (1) // major cycle { currTemp = tempRead(); lcdWrite(currTemp); // waste CPU cycles until 50 ms // minor cycle currTemp = tempRead(); // do other stuff // waste CPU cycles until 100 ms } } Fonte: Wikipedia http://en.wikipedia.org/wiki/Cyclic_executive Sistemas determinísticos: aqueles cujos resultados são determinados por leis de evolução bem definidas <ul>Cyclic Executive </ul><ul>Tem a vantagem de ser completamente determinístico! </ul>
  19. 19. Cyclic Executive Ex: Considere o seguinte conjunto de tarefas Tarefa T (ms) C (ms) a 25 10 b 25 8 c 50 5 d 50 4 e 100 2 25ms 25 25 50 25 10 25 8 5 4 2 Loop Wait_For_Interrupt Procedure_For_A Procedure_For_B Procedure_For_C Wait_For_Interrupt Procedure_For_A Procedure_For_B ... End loop Desvantagens <ul><li>Dificuldade de se incorporar </li><ul><li>processos esporádicos
  20. 20. Processos com longos períodos </li></ul><li>Os períodos tem que ser múltiplos
  21. 21. do ciclo menor </li></ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>a </ul><ul>b </ul><ul>d </ul><ul>e </ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>Interrupt </ul><ul>Interrupt </ul><ul>Interrupt </ul><ul>Interrupt </ul>
  22. 22. Estados de um processo <ul><li>Em execução
  23. 23. Pronto: escalonados por prioridade (obtida das restrições temporais) </li><ul><li>Não-preemptivo
  24. 24. Preemptivo -> preferível (processos prioritários mais reativos) </li></ul><li>Suspenso (bloqueado) </li><ul><li>aguardando evento temporal -> processos periódios
  25. 25. aguardando evento não-temporal -> processos esporádicos </li></ul></ul><ul>Escalonamento baseado em processo </ul>
  26. 26. Atribuição de prioridade por taxa monotônica Para o modelo simples previamente apresentado, a atribuição de prioridade baseada no período do processo é ótima -> se um conjunto de processos puder ser escalonado utilizando algum algoritmo preemptivo com atribuição fixa de prioridades então também será escalonado utilizando a taxa monotônica Prioridade baseada no período: Exemplo: quanto maior o inteiro, maior a prioridade (Isto não é consenso!) Processo T P A 25 5 B 60 3 C 42 4 D 105 1 E 75 2 <ul>Escalonamento baseado em processo </ul>
  27. 27. Se a seguinte condição for verdadeira, todos os processos cumprirão seus deadlines : N Limite utilização (%) Uso da CPU (%) Condição do escalonamento 1 100 0-25 Poder de processamento excessivo 2 82,8 26-50 Muito seguro 3 78,0 51-68 Seguro 4 75,7 69 Limite teórico 5 74,3 70-82 Questionável 10 71,8 83-99 Perigoso Inf 69,3 >100 Sobrecarrgado Obs: qualquer conjunto processos com utilização combinada < 69,3%, sempre será escalonável pelo esquema preemptivo baseado em prioridades, onde estas são atribuídas pelo algoritmo de taxa monotônica. <ul>Teste de escalonabilidade baseado na utilização da CPU </ul>
  28. 28. Exemplo: Conjunto de tarefas A : três processos cujas prioridades foram definidas pela taxa monotônica <ul><li>A utilização combinada é de 0,82 (ou 82%)
  29. 29. Isto é acima do limiar para 3 tarefas (0,78) e, portanto, este conjunto de
  30. 30. tarefas falha no teste de utilização </li></ul><ul>Atribuição de prioridade por taxa monotônica </ul><ul>Task Period ComputationTime Priority Utilization </ul><ul>T C P U a 50 12 1 0.24 b 40 10 2 0.25 c 30 10 3 0.33 <li>---------------------------------------------------------- </li><ul><ul><ul><ul><ul><li>Utilização combinada = 0,24+0,25+0,33 = 0,82 </li></ul></ul></ul></ul></ul></ul>
  31. 31. <ul>Linha de tempo para o conjunto de tarefas A </ul><ul>Time </ul><ul>task </ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>Task Release Time </ul><ul>Task Completion Time Deadline Met </ul><ul>Task Completion Time Deadline Missed </ul><ul>Executing </ul><ul>Preempted </ul><ul>0 </ul><ul>10 </ul><ul>20 </ul><ul>30 </ul><ul>40 </ul><ul>50 </ul><ul>60 </ul>
  32. 32. <ul>Diagrama de Gantt para o conjunto de tarefas A </ul><ul>c </ul><ul>b </ul><ul>a </ul><ul>c </ul><ul>b </ul><ul>0 </ul><ul>10 </ul><ul>20 </ul><ul>30 </ul><ul>40 </ul><ul>50 </ul><ul>Time </ul>
  33. 33. <ul>Conjunto de tarefas B </ul><ul><li>A utilização combinada é de 0,775
  34. 34. Que está abaixo do limiar para três tarefas (0,78) e, portanto, este conjunto de tarefas atenderá todos os seus deadlines </li></ul><ul>Task Period ComputationTime Priority Utilization </ul><ul>T C P U a 80 32 1 0.400 b 40 5 2 0.125 c 16 4 3 0.250 </ul>
  35. 35. <ul>Conjunto de tarefas C </ul><ul><li>A utilização combinada é 1,0
  36. 36. Que está acima do limiar para três tarefas (0,78), ou seja, o teste falha mas, apesar disso, o conjunto de tarefas atenderá seus deadlines </li></ul>suficiente – passar no teste inplica em atender os deadlines necessário – falhar no teste implica em não atender os deadlines <ul>Task Period ComputationTime Priority Utilization T C P U a 80 40 1 0.50 b 40 10 2 0.25 <li>c 20 5 3 0.25 </li></ul><ul>O teste é suficiente mas não necessário! </ul>
  37. 37. <ul>Linha de tempo para o Conjunto de Tarefas C </ul><ul>Time </ul><ul>task </ul><ul>a </ul><ul>b </ul><ul>c </ul><ul>70 </ul><ul>80 </ul><ul>0 </ul><ul>10 </ul><ul>20 </ul><ul>30 </ul><ul>40 </ul><ul>50 </ul><ul>60 </ul>
  38. 38. <ul>Análise do Tempo de Resposta </ul><ul><li>O tempo de resposta de pior caso da tarefa I (Task_i), Ri, é calculado e comparado com seu deadline </li></ul><ul><ul><li>Tempo de resposta : tempo entre solicitação de um serviço e sua execução </li></ul></ul><ul>onde Ii é a interferência que a Task_i sofre de tarefas mais prioritárias Task_j (causada pela preempção de Task_i por Task_j) </ul>
  39. 39. <ul>Cálculo do tempo de resposta R </ul><ul>Durante Ri, cada tarefa mais prioritária Task_j executará um certo número de vezes: </ul><ul>A interferência que Task_i sofre pela preempção de Task_j é dada por: </ul><ul>A função ceiling (teto) produz o menor inteiro que é maior do que o número fracionário sobre o qual ela atua. Então o ceiling de 1/3 é 1, de 6/5 é 2, e de 6/3 é 2. </ul>
  40. 40. <ul>Equação do Tempo de Resposta </ul><ul>onde hp ( i ) é o conjunto de tarefas mais prioritárias do que Task_i </ul><ul>Resolve-se formando uma relação de recorrência: </ul><ul>O conjunto de valores é monotonicamente não-decrescente. Quando a solução para a equação foi encontrada; não deve ser maior do que do que (e.g. 0 ou ) </ul>
  41. 41. <ul>Algoritmo para o Tempo de Resposta </ul><ul>for i in 1..N loop -- for each process in turn n := 0 loop calculate new if then exit value found end if if then exit value not found end if n := n + 1 end loop end loop </ul>
  42. 42. <ul>Conjunto de Tarefas D </ul><ul>Task Period ComputationTime Priority </ul><ul>T C P a 7 3 3 b 12 3 2 c 20 5 1 </ul>
  43. 44. <ul>Revendo o conjunto de Tarefas C </ul><ul><li>A utilização combinada é 1,0
  44. 45. Que está acima do limiar de utilização para 3 tarefas (0,78), portanto o teste de utilização falhou
  45. 46. A análise do tempo de resposta mostra que o conjunto de tarefas atenderá todos os seus deadlines ! </li></ul><ul>Process Period ComputationTime Priority Response time </ul><ul>T C P R a 80 40 1 80 b 40 10 2 15 c 20 5 3 5 </ul>
  46. 47. <ul>Análise do Tempo de Resposta </ul><ul><li>O teste é suficiente e necessário (é exato)
  47. 48. Se o conjunto de tarefas passar no teste, todas elas atenderão seus prazos; se o teste falhar, pelo menos uma tarefa deixará de cumprir seu prazo </li></ul>
  48. 49. <ul>Tarefas esporádicas e não-periódicas </ul><ul><li>Para processos esporádicos, T é interpretado como o intervalo mínimo (ou médio) entre chegadas i.e. garante-se que um processo esporádico de valor T não ocorrerá mais de uma vez neste intervalo
  49. 50. O pressuposto D=T não é razoável (e.g. rotina de tratamento de erro, violação de sensor em sistema de alarme) -> a invocação é infrequente mas, quando ocorre, deve ser atendida prontamente ( deadline bem pequeno), ou seja, D<T (ou ainda D<<T)
  50. 51. O algoritmo do tempo de resposta para escalonamento com prioridade fixa funciona perfeitamente para D<T desde que o critério de parada seja </li></ul>
  51. 52. <ul>Tarefas críticas e não-críticas </ul><ul><li>Para tarefas esporádicas, as taxas de chegada definidas como sendo de pior caso estão, em muitas situações, muito acima da média realmente observada. Para alguns dispositivos, isso pode ocorrer porque as interrupções chegam em rajadas ( bursts ) ou, talvez, porque o dispositivo esteja gerando interrupções espúrias.
  52. 53. O descuido na definição dos valores de pior caso pode levar a baixa utilização do processador do sistema implementado </li></ul>
  53. 54. <ul>Orientações gerais </ul><ul>Regra 1 — todas as tarefas devem ser escalonáveis utilizando tempos de execução médios e taxas de chegada médias Regra 2 — todas as tarefas de tempo real crítico devem ser escalonáveis utilizando tempos de execução de pior caso e taxas de chegada de pior caso </ul><ul><li>Uma consequência da regra 1 é que podem haver situações onde não é possível atender a todos os prazos -> esta é a sobrecarga transiente
  54. 55. A regra 2, contudo, assegura que nenhuma tarefa de tempo real crítico perderá seu prazo. Se a regra 2 levar a utilizações inaceitáveis da CPU em execução normal, então deve-se tomar ações para tentar reduzir os tempos de execução (ou taxas de chegada) de pior caso </li></ul>
  55. 56. <ul>Conjunto de tarefas com D < T </ul><ul><li>Para D = T, a ordenação de prioridade por taxa monotônica é ótima
  56. 57. Para D < T, a ordenação de prioridade por prazo monotônico (DMPO: Deadline Monotonic Priority Ordering ) é ótima </li></ul>
  57. 58. <ul>Exemplo: conjunto de tarefas D < T </ul><ul>Task Period Deadline ComputationTime Priority Response time </ul><ul> T D C P R a 20 5 3 4 3 b 15 7 3 3 6 c 10 10 4 2 10 d 20 20 3 1 20 </ul>
  58. 59. <ul>Interação entre tarefas e bloqueio </ul><ul><li>Na prática os processos não são independentes: se uma tarefa estiver suspensa aguardando outra de menor prioridade completar algum processamento necessário (e.g. exclusão mútua), tem-se a inversão de prioridade o que mina o modelo visto até então
  59. 60. Se uma tarefa estiver aguardando outra de menor prioridade, diz-se que a primeira está bloqueada </li></ul>
  60. 61. <ul>Exemplo de inversão de prioridade </ul><ul><li>Para dar um exemplo extremo de inversão de prioridade, considere a execução de 4 tarefas periódicas: a , b , c , e d ; e dois recursos: Q e V </li></ul><ul>Task Priority Execution Sequence Release Time a 1 EQQQQE 0 b 2 EE 2 c 3 EVVE 2 d 4 EEQVE 4 </ul><ul>onde: E: tempo executando (processando sem utilizar nenhum recurso) Q: tempo usando o recurso Q V: tempo usando o recurso V </ul>
  61. 62. <ul>Exemplo de inversão de prioridade </ul>E E E E E E E E E Q Q Q Q Q V V V Bloqueia aguardando Q Q é compartilhado por a e d a travou Q e foi preemptado d não pode avançar porque necessita de Q que está travado por a Rd=16-4=12 Rc=8-2=6 Rb=10-2=8 Ra=17-0=17 <ul>a </ul><ul>b </ul><ul>c </ul><ul>d </ul><ul>0 </ul><ul>2 </ul><ul>4 </ul><ul>6 </ul><ul>8 </ul><ul>10 </ul><ul>12 </ul><ul>14 </ul><ul>16 </ul><ul>18 </ul><ul>Executando com V travado </ul><ul>Executando </ul><ul>Executando com Q travado </ul><ul>Preemptado </ul><ul>Bloqueado </ul>
  62. 63. <ul>Exemplo de inversão de prioridade </ul><ul><li>d é bloqueado por a (compartilham Q ) mas também por b e c
  63. 64. Algum bloqueio é inevitável para manter a integridade das regiões críticas (dados compartilhados)
  64. 65. Mas o bloqueio de d por b e c é improdutivo e pode afetar a escalonabilidade do sistema
  65. 66. Problema: esquema de prioridades fixas. Solução: prioridades dinâmicas -> herança de prioridade </li></ul>
  66. 67. <ul>Herança de Prioridade </ul><ul><li>Se a tarefa p estiver bloqueando a tarefa q , então q rodará com a prioridade de p </li></ul>E E E E E E E E E Q Q Q Q Q V V V Pa ← Pd Bloqueia aguardando Q (de posse de a) Bloqueia aguardando V (de posse de c) Pd ← Pd stat Pd ← Pd stat Pc ← Pd Bloqueia aguardando tarefa menos prioritária a (estaticamente) Rd=13-4=9 <ul>a </ul><ul>b </ul><ul>c </ul><ul>d </ul><ul>0 </ul><ul>2 </ul><ul>4 </ul><ul>6 </ul><ul>8 </ul><ul>10 </ul><ul>12 </ul><ul>14 </ul><ul>16 </ul><ul>18 </ul>
  67. 68. <ul>Herança de Prioridade </ul><ul><li>A prioridade (dinâmica) de um processo é o máximo entre sua prioridade default (estática) e as prioridades de todos os outros processos que estão dependendo do primeiro naquela instante
  68. 69. Se um processo L4 estiver esperando por L3 e este, por sua vez estiver esperando por L2, então L2 e L3 deverão receber a prioridade de L4 </li></ul>
  69. 70. <ul>Missão Path-Finder a Marte </ul><ul><li>Um problema provocado por inversão de prioridade quase causou a perda da missão Path-finder
  70. 71. Um barramento compartilhado estava sobrecarregado e dados críticos não estavam sendo transferidos
  71. 72. Time-out no acesso a estes dados estavam indicando falha e levavam ao reboot
  72. 73. A solução foi um patch que ativou a herança de prioridade </li></ul>
  73. 74. <ul>O cálculo do bloqueio </ul><ul><li>Se uma tarefa tem m regiões críticas, então o número máximo de vezes que ela pode bloquear (limite superior) é m </li></ul><ul><li>É possível refinar este limite e obter o tempo de bloqueio máximo ( Bi), considerando apenas as regiões críticas que podem, efetivamente, causar bloqueio: </li></ul><ul>onde: K : número de regiões críticas k : recurso (região crítica) que está sendo considerado i : tarefa sendo considerada usage(k,i): função 1/0 tal que usage(k,i)=1 se k é utilizado por, pelo menos, uma tarefa com prioridade menor do que i e por, pelo menos, uma tarefa com prioridade maior ou igual a de i ; do contrário é 0. CS(k): custo computacional de se executar a k -ésima região crítica </ul>
  74. 75. <ul>Tempo de resposta e bloqueio </ul>
  75. 76. <ul>Protocolos com prioridade-teto ( Priority Ceiling Protocols ) </ul><ul>O modelo anterior pode levar a valores de pior caso pessimistas e inaceitáveis devido ao encadeamento de bloqueios. Solução : tetos de prioridade <li>Duas formas </li></ul><ul><li>Original ceiling priority protocol (OCPP)
  76. 77. Immediate ceiling priority protocol (ICPP) </li></ul>
  77. 78. <ul>Características do CPP (num único processador) </ul><ul><li>Uma tarefa de alta prioridade pode ser bloqueada no
  78. 79. máximo uma vez, por tarefas menos prioritárias, durante sua execução
  79. 80. Previnem-se os deadlocks
  80. 81. Previne-se o bloqueio transitivo
  81. 82. Assegura-se a exclusão mútua no acesso aos recursos </li></ul>
  82. 83. <ul>OCPP </ul><ul><li>Cada processo Pi tem uma prioridade estática pi stat
  83. 84. Cada recurso Rj tem um teto cj que é dado pela maior prioridade entre todos os processos que o utilizam
  84. 85. Um processo Pi tem uma prioridade dinâmica pi que é o máximo entre sua prioridade estática pi stat e qualquer prioridade herdada pk de outro processo mais prioritário Pk, devido a Pi ter bloqueado Pk
  85. 86. Um processo pode obter um recurso apenas se sua prioridade dinâmica for maior do que o teto de todos os recursos travados (excluindo quaiquer recursos que tenham sido travados pelo próprio processo). A posse do primeiro recurso é assegurada (ceil=0) </li></ul>
  86. 87. <ul>OCPP </ul>ceil = 0 pa ← pa stat =1 pa ← pc stat =3 Como é o primeiro recurso, a atribuição é garantida (ceil=0) pa=pa stat =1 > ceil=0 pd=pd stat =4 > ceil=0 ceil = cQ=max(pa stat ,pd stat )=max(1,4)=4 ceil =0 pc=pc stat =3 > ceil=0 ceil = cV = =max(pc stat , pd stat )=max(3, 4 )=3 pb=pb stat =2 ≤ pa(=pc stat =3) pc=pc stat =3 ≤ ceil=4 pd=pd stat =4 ≤ ceil=4 pa ← pd stat =4 ceil=cQ=max(pa stat , pd stat )=max(1,4)=4 Q Q E Q Q E E E E E V Q E <ul>a </ul><ul>b </ul><ul>c </ul><ul>d </ul><ul>0 </ul><ul>2 </ul><ul>4 </ul><ul>6 </ul><ul>8 </ul><ul>10 </ul><ul>12 </ul><ul>14 </ul><ul>16 </ul><ul>18 </ul>V V E E
  87. 88. <ul>ICPP </ul><ul><li>Cada processo Pi tem uma prioridade estática pi stat
  88. 89. Cada recurso Rj tem um valor de teto estático cj dado pela prioridade máxima entre todos os processos que o utilizam
  89. 90. Um processo Pi tem uma prioridade dinâmica pi que é dada pelo máximo entre sua prioridade estática pi stat e os valores de teto cj de quaisquer recursos que ele travar </li></ul>
  90. 91. <ul>Propriedades do ICPP </ul><ul><li>Um processo sofrerá bloqueio apenas no início de sua execução
  91. 92. Uma vez que um processo comece de fato a executar, todos os recursos que ele necessita devem estar livres; se não estiverem , então outro processo terá um prioridade maior ou igual à do primeiro e a execução do primeiro será adiada </li></ul>
  92. 93. <ul>ICPP </ul>ceil=cQ=max(pa stat ,pd stat )=4 pa ← ceil=4 pa=pa stat =1 pa ← pa stat =1 ceil=cQ=max(pa stat ,pd stat )=4 pd ← ceil=4 Q Q Q Q E E E E V Q E E <ul>a </ul><ul>b </ul><ul>c </ul><ul>d </ul><ul>0 </ul><ul>2 </ul><ul>4 </ul><ul>6 </ul><ul>8 </ul><ul>10 </ul><ul>12 </ul><ul>14 </ul><ul>16 </ul><ul>18 </ul>V V E E E
  93. 94. <ul>OCPP versus ICPP </ul><ul><li>Embora o comportamento de pior caso dos dois protocolos seja idêntico (do ponto de vista do escalonamento), há algumas diferenças: </li><ul><li>ICCP é mais fácil de implementar porque as relações de bloqueio não precisam ser monitoradas
  94. 95. ICPP leva a menos chaveamentos de contexto já que os bloqueios ocorrem antes da primeira execução
  95. 96. ICPP requer mais alterações de prioridade já que isso ocorre em todos os usos de recurso; OCPP altera a prioridade apenas quando um bloqueio ocorre </li></ul></ul>
  96. 97. <ul>[1] Real-Time Systems and Programming Languages . Burns A., Wellings A. 2nd edition [2] Análise de Sistemas Operacionais de Tempo Real Para Applicações de Robótica e Automação. Aroca R. V. Dissertação de Mestrado. [3] Operating System Concepts . Silberschatz, Galvin, Gagne. 8 th edition [4] Sistemas Operacionais Modernos. Tanenbaum A. 2a edição </ul><ul>Bibliografia </ul>

×