Sie sind auf Seite 1von 33

CURSO DE ESPECIALIZAO EM AUTOMAO INDUSTRIAL

Fundamentos e Aplicaes de Sistemas de Automao

Mdulo 7: Programao em Tempo Real

Just predictable and reliable (Nossa definio)

Professor: Constantino Seixas Filho Professor: Constantino Seixas Filho

sbado, 30 de outubro de 2004 sbado, 30 de outubro de 2004


1

Programao em Tempo Real


O nosso programa deve interagir com o ambiente e dar respostas adequadas a eventos que ocorrem e que no esto sincronizados com as operaes internas do sistema

Exemplos Sistema de controle de processos industriais


PID n PID Mestre operador Varivel de Sada REM + SP Algortmo de Otimizao operador Varivel Varivel de Entrada FT Manipulada Erro PID MAN AUT

Um sistema de controle de um processo amostra com uma freqncia definida as variveis que desejamos controlar, por exemplo a temperatura de um forno. Objetivos: Manter a varivel de processo (PV) estvel apesar das perturbaes do processo. Aumentar e diminuir a PV acompanhando mudanas no valor do Set-Point (SP) atuando sobre uma varivel manipulada (MV). Como todos sabemos de nossa aulas de controle, a varivel tempo entra na equao do algoritmo de controle. A velocidade da amostragem funo da constante de tempo do sistema.
3

Exemplo - Sistema supervisrio

Sistema de controle incorporado de um mssil

Um sistemas de msseis Patriot deve localizar e perseguir um alvo mvel de alta velocidade, e destrui-lo, explodindo uma carga nas suas proximidades. O sistema de radares localiza e rastreia at 50 msseis simultaneamente. O mssil recebe do sistema de radares a posio do alvo, determina a sua prpria posio continuamente e atua nas aletas de posicionamento em tempo real para diminuir sua distncia em relao ao alvo.
5

Vdeo game interativo

Definio de sistema de tempo real


A primeira definio foi extrada de [Bennet 88]: "Dizemos que um computador opera em tempo real quando as aes realizadas por ele esto relacionadas com as escalas de tempo dos processos externos" . Em geral existem alguns tempos a serem respeitados e existe um certo consenso na comunidade de automao sobre os valores a serem atingidos: a) Tempo entre o comando de uma funo da console de operao, por exemplo o acionamento do boto de liga de um equipamento, e a correspondente efetivao do comando no campo (1 segundo). b) Tempo entre a ocorrncia de um evento de processo e a sinalizao de alarme na sala de operao (1 segundo). c) Tempo entre a solicitao de um sinptico e sua apario na tela (1 segundo). d) Tempo entre a modificao do status de um equipamento em uma console e sua atualizao no vdeo do micro reserva (2 segundos). Tempo entre o comando de um equipamento e a atualizao de seu status na tela aps retorno do campo (2 segundos).

Definio de sistema de tempo real


"Sistemas de tempo real so sistemas computacionais em que podemos garantir que todas as funes programadas sero executadas em um intervalo mximo de tempo definido para cada funo em toda e qualquer ocasio. Isto inclui as computaes disparadas em resposta a eventos externos previstos no sistema"

Sistemas operacionais de tempo real


Os sistemas operacionais que garantem condies de tempo real para seus processos ou threads so chamados de Sistemas operacionais de tempo real ou RTOS (Real time operating systems) Sistema operacionais hard real time: Sistemas hard real time so os que conseguem comprovar teoricamente a sua performance no pior caso Sistemas operacionais soft real time: So aqueles cuja performance no pior caso foi observada, mas no provada

Sistemas Sncronos e Assncronos

Texec

Uma vez definido um Hardware, ns podemos assumir para cada thread uma durao que corresponda ao pior caso. Este tempo ser chamado de Texec Cada thread necessita ser escalonada e ter sua execuo completada dentro de um tempo mximo estipulado. Por exemplo um algoritmo de controle PID para uma determinada malha ser executado a cada 100 ms. A rotina, para verificar se todos os sensores esto operando normalmente, pode ser executada mais raramente, a cada 10 min e assim por diante. A este tempo chamaremos de perodo de escalonamento ou simplesmente T

Lembra-se do Tamagoshi ?

10

Sistemas sncronos ou clock-driven


Escalonador_Sncrono { int pagina = 0; const int NumPaginas = 4; loop { Espera_Sinalizao_de_Tempo(); switch (pagina) { case 0: // Pgina 0 Leitura(); Controle(); Sada(); break; case 1: // Pgina 1 Aceita_cmd(); break; case 2: // Pgina 2 Entrada(); Controle(); Sada(); break; case 3: // Pgina 3 Testa_hard(); Comunica(); break; default: break; } //end_switch pagina = (pagina + 1) % NUM_PAGINAS; } // end_loop } // end_process

Encontre exemplos no seu quotidiano !

11

Sistemas sncronos ou clock-driven Diagrama Temporal

Tarefa/Pgina Entrada (20) Controle (25) Sada (10) Aceita_cmd (55) Testa_hard (26) Comunica (28)

12

Sistema sncronos
Mecanismo adicional switch (pagina) { case 0: // Pgina 0 if (Lflag) Leitura(); if (Cflag) Controle(); if (Sflag) Sada(); break;

13

Sistemas assncronos ou event-driven

Para que as tarefas sejam escalonadas sem que haja nenhum planejamento inicial, como nos sistemas sncronos, e sem que tenhamos que medir a durao de cada tarefa, vamos precisar de dois conceitos auxiliares: Programa privilegiado que haja como rbitro: escalonador preemptivo Prioridade O chaveamento de contexto representa um overhead j que se traduz em trabalho intil, sob o ponto de vista do que queremos realizar, e deve ser minimizado. Na verdade ...
P2 executa at completar Thread_P2 Thread_P1

Preempo

14

Algoritmos de escalonamento de tempo real

Processo P1 P2

T (ms) 5 3

texec (ms) 3 1

P2 P1 t

Diagrama temporal de alocao de tarefas para Pr_2 > Pr_1


0 1 2 7 3 tempo 4 5 6

P1 P2

Diagrama temporal de alocao de tarefas para Pr_1 > Pr_2


0 1 2 7 3 tempo 4 5 6 t

15

Escalonador RM (Rate Monotonic)


Foi desenvolvido em 1973 por Liu e Layland. Aloca prioridades estaticamente na ordem inversa aos perodos de solicitao. Quanto mais rapidamente um processo precisa ser executado, maior a sua prioridade. RM timo no sentido de que ele sempre capaz de escalonar uma tarefa se um outro algoritmo esttico o consegue. 1 t _ exec O teste de factibilidade para um conjunto de tarefas dado por: n * ( 2 n 1)

Processo P1 P2 P3
0 P1 P1 P2 P3 P3 P2 P1 3 P1

T (ms) 3 8 6
6 P2 P1 P3 solicitaes P1

texec (ms) 1 2 1
9 P3 P2 P2 P1 P1

Carga 33.3% 25% 16.7%


12 P2 P1 t P1 P3

16

Escalonador EDF: (Earliest Deadline First)


Escalona primeiro a tarefa cuja data limite ir se expirar primeiro O raciocnio por trs deste algoritmo muito semelhante ao que praticamos em vrias situaes de nossa vida real: ns geralmente estudamos para a prova que est mais prxima, fazemos primeiro a proposta cuja data limite est mais prxima, e assim por diante Este algoritmo dinmico porque avalia a situao a cada instante para decidir que tarefa ser escalonada primeiro no atribuindo prioridades estticas s tarefas t _ exec 1 O teste de factibilidade para um dado conjunto de tarefas dado por:
i

Processo P1 P2 P3
0 P1 P1 P2 P3 P3 P2 P1 3 P1

T (ms) 3 8 6
6 P2 P1 P3 P1

texec (ms) 1 2 1
9 P3 P2 P2 P1 P1

Carga 33.3% 25% 16.7%


12 P2 P1 t P1 P3

solicitaes
17

Escalonador LLF (Least Laxity)


O escalonador de margem de tempo mnima estuda a tarefa que oferece menor flexibilidade para ser escalonada. A margem de tempo corresponde diferena entre: tempo para data limite e o tempo para completar a tarefa. Este tempo computado dinamicamente. Se a margem negativa ento a tarefa j no conseguir cumprir sua data limite e o escalonador falhou. A carga total deve ser menor que 1

Processo P1 P2 P3

T (ms) 3 8 6

texec (ms) 1 2 1

Carga 33.3% 25% 16.7%

0 P1 P1 P2 P3 P3 P2

3 P1 P1 P2

6 P1 P1 P3 solicitaes P3 P2 P2

9 P1 P1 P2

12 P1 t P1 P3

18

Escalonador LLF (Least Laxity)


Tempo 0 Demanda P1 P2 P3 P2 P3 P2 P1 P2 P2 P1 P3 P3 P2 P1 P2 P2 Deadline 3 8 6 7 5 6 3 5 4 3 6 5 8 3 7 6 Restante para terminar 1 2 1 2 1 2 1 1 1 1 1 1 2 1 1 1 Margem 2 6 5 5 4 4 2 4 3 2 5 4 6 2 6 5 Tarefa a ser escalonada P1

1 2 3 4 5 6 7 8 9 10 11

P3 P2 P1 P2 P1 P3 P2 P1 P2 19

Escalonador MUF (Maximum Urgency First)


baseado num duplo critrio. A criticidade de cada tarefa (alta ou baixa) definida pelo programador para cada tarefa do sistema e constitui a parte esttica da anlise. Ela tem precedncia sobre a parte dinmica. Primeiro as tarefas so ordenadas em ordem crescente do seu perodo. As N primeiras tarefas que tenham o atributo crtico e cujo somatrio da carga seja menor que 1 so selecionadas e forma o task set. A tarefa de alta criticidade com a menor margem escalonada. As tarefas de baixa criticidade s so analisadas caso no haja mais tarefas de alta criticidade. O overhead como se nota muito alto.

20

10

Inverso de prioridades

Prioridades A L T A

M D I A B A I X A B Seo crtica

Recurso Compartilhado Objeto de Sincronizao

BLOQUEADO

EM EXECUO

21

Como evitar que a inverso de prioridades ocorra ?


A melhor soluo um mecanismo denominado de herana de prioridade. Ao se criar um objeto de sincronizao, devemos definir um parmetro adicional chamado de herana de prioridade. Com este parmetro ativado, o processo que detm a posse de um objeto de sincronizao, herda a prioridade do processo que fica bloqueado. Desta forma, B herdaria a prioridade de A e no seria preemptado por C. Infelizmente este recurso no existe no Windows NT, mas apenas no Windows CE. Segundo a documentao da Microsoft [Microsoft 95a], o WNT sai da situao de inverso aumentando randomicamente a prioridade das threads prontas para executar (B). Quando a prioridade de B se igualar de C, B consegue sair da seo crtica. O Windows 95 detecta a situao A bloqueado por B e faz prioridade(B) = prioridade(A) at B sair da seo crtica. Isto corresponde a uma herana de prioridade automtica.

22

11

O que aconteceu em Marte ?

From: Mike Jones <mbj@microsoft.com> Sent: Sunday, December 07, 1997 6:47 PM Subject: What really happened on Mars? The Mars Pathfinder mission was widely proclaimed as "flawless" in the early days after its July 4th, 1997 landing on the Martian surface. Successes included its unconventional "landing" -- bouncing onto the Martian surface surrounded by airbags, deploying the Sojourner rover, and gathering and transmitting voluminous data back to Earth, including the panoramic pictures that were such a hit on the Web. But a few days into the mission, not long after Pathfinder started gathering meteorological data, the spacecraft began experiencing total system resets, each resulting in losses of data. The press reported these failures in terms such as "software glitches" and "the computer was trying to do too many things at once".

A nave espacial norte americana Mars Pathfinder realizou um pouso em Marte no dia 4 de julho de 1997 liberando o jipe Sojouner para um passeio no solo marciano. Este robot deveria enviar um grande volume de dados e imagens para a Terra. Depois de alguns dias, a nave passou a sofrer resets espontneos e aleatrios que causavam a total reinicializao do sistema. Os dados armazenados em RAM no eram perdidos, mas a atividade de aquisio s era recomeada no dia seguinte.
23

O que aconteceu em Marte - Anlise


A nave possui uma CPU como o RTOS VxWorks da Wind River. Os demais componentes do computador, cmera e rdio se comunicam com a CPU via barramento VME e com o barramento 1553 que serve para conectar a parte mvel do mdulo de aterragem. O sistema constitudo por diversas tarefas que executam ciclicamente com um perodo de 125 ms, de acordo com uma ordem pr estabelecida. Existem trs tarefas principais em ordem crescente de prioridades: ASI/MET que coleta dados dos acelermetros, radar altimtrico e instrumentos meteorolgicos do mdulo de pouso. bc_dist que distribui os dados coletados colocando-os em uma memria compartilhada. bc_sched que prepara as transaes para o prximo ciclo. bc_sched deve executar sempre em seguida a bc_dist uma vez a cada ciclo. Se bc_sched detecta que bc_dist no conseguiu terminar, reseta o computador (funo watch dog). A anlise do log da seqncia de instrues, momentos antes da ocorrncia da falha, revelou um caso tpico de inverso de prioridades. ASI/MET e bc_dist sincronizavam o acesso a uma lista de descritores compartilhada, atravs de um semforo. Quando ASI/MET conquistava a posse do semforo antes de bc_dist, algumas tarefas de mdia prioridade podiam ser escalonadas impedindo bc_dist de executar e assim fazendo com que a tarefa no cumprisse o seu limite de prazo. Quando bc_sched, de alta prioridade, entrava no final do ciclo e percebia que bc_dist no havia terminado, reinicializava o sistema.

24

12

O que aconteceu em Marte - Soluo


Detectado o problema, o parmetro de herana de prioridade dos semforos foram ativados e o novo cdigo foi transmitido para a nave, que voltou a funcionar sem erros. A primeira pergunta que fazemos por que este parmetro no fora ativado como default ? A resposta que programadores de tempo real esto sempre, na vida real, muito preocupados com o tempo de execuo de suas tarefas e a ativao da herana de prioridades representava um pequeno aumento de overhead.

25

O que aconteceu em Marte lies:


So muitas as lies que tiramos deste episdio: 1. Primeiro, que no devemos negligenciar a chance de ocorrncia da inverso de prioridades, mesmo que isto nos parea extremamente improvvel. 2. Segundo, que devemos estar preparados para rastrear a nossa aplicao mesmo depois dela ser considerada depurada e em sua verso final. 3. Terceiro, que para sistemas crticos no tempo, temos que considerar a hiptese de ter de corrigir um software remotamente.

26

13

O tratamento de interrupes no WNT

IRQL 31 30 29 28 27 12 11 4 3 2 1 0

Funo Interrupo de erro de hardware (NMI) Falha de alimentao Comunicao entre processadores Interrupo de Clock Interrupo de Hardware IRQL 15 Interrupo de Hardware IRQL 0 Livre Interrupo do depurador de software Interrupes de SW para sincronizao do sistema (priorizao de trabalho em device drivers e componentes do executivo)

27

Device Drivers
Um device driver no WNT possui quatro componentes:

Rotina de inicializao Rotina de servio de interrupo (ISR) Chamada adiada a procedimento (DPC Deferred Procedure Call) Thread do sistema

Inicializa o hardware e define as estruturas de dados a serem usadas pelo driver Trata a interrupo do dispositivo controlado Realiza atividades menos crticas no tratamento da interrupo. Alguns drivers completam suas atividades utilizando uma thread de menor nvel de prioridade.

Uma DPC no pode executar instrues de wait e deve ter toda a memria de que necessita alocada a priori na memria fsica, com paginao desabilitada Esta regra em geral recomendada a toda tarefa de tempo real. Faltas de pgina trazem um overhead desaconselhvel a qualquer aplicao hard real time

28

14

Atividade de rotinas de interrupo e DPCs

Privilgio 3

ISR
1

2 2

2 1

DPC RT

Privilgio 1

HIGH NORM LOW

Tarefa de tempo real de mxima prioridade foi preemptada

tempo

29

Anlise de Desempenho Latncia de escalonamento / latncia de troca de contexto (Scheduling Latency / Thread Switch Latency) (Scheduling Latency / Thread Switch Latency)

Thread A

Interrupes + DPCs Tst Chaveamento de contexto

Thread B

30

15

Anlise de Desempenho Tempo de latncia de interrupo (Interrupt latency) (Interrupt latency)

INT

INT

Interrupo Outra Rotina de Tlat Despacho de Interrupo

ISR

31

Tempo de latncia de despacho de interrupo (Interrupt Dispatch Latency)

INT

INT

Interrupo ISR Outra Rotina de Interrupo

Tdispat_int

Interrupes desabilitadas DPC Escalonamento Thread

32

16

Tempo de resposta do kernel: atividades cclicas


5V

tempo (s) 0 1000 2000 3000

Uma tarefa de tempo real de alta prioridade colocada para ativar uma sada para o valor um durante um tempo definido, digamos 500s ou na mxima velocidade possvel. Depois deste tempo ela deve forar a mesma sada para zero. O que se testa a capacidade de uma dada tarefa de repetir um objetivo temporal especificado exercitando chamadas bsicas do kernel (timer + I/O). As larguras de pulso so medidas para se verificar o desvio em ralao ao valor projetado. Quanto maior a variao (jitter), pior o determinismo do sistema. O sistema submetido a carga externa de diversas naturezas para exame do seu comportamento. Interrupes, DPCs e tarefas de maior prioridade so as causas da variabilidade dos tempos de resposta. Este tipo de medida pode ser feito com um instrumento de medio externo, o que traz a vantagem de no utilizar nenhum recurso de software do sistema sob teste, o que perturbaria a medida.
33

Caractersticas de um RTOS
Sistemas Soft Real Time: SCADA MES PIMS LIMS

34

17

Caractersticas de um RTOS
1. 2. Ser multihreaded e preemptivo. Alm de possuir threads, cada thread deve ter uma prioridade exclusiva. Quanto maior o nmero de prioridades disponveis, melhor. tarefa do projetista converter os requisitos de deadline das tarefas em prioridades das threads. Quando duas threads possuem a mesma prioridade, elas executam em regime de time slicing, prejudicando a condio de preemptividade. Possuir mecanismos determinsticos de sincronizao de threads Estes mecanismos incluem solues para o problema da excluso mtua, gerenciamento de eventos, comunicao entre threads, etc. Possuir um sistema de herana de prioridades para todos os seus objetos de sincronizao. O objetivo aqui prevenir a inverso de prioridades. Ter um comportamento temporal previsvel, apresentando um limite superior conhecido: tempo de latncia de interrupo, tempo de latncia de escalonamento, etc. fundamental saber quando um pedido, uma vez colocado, ser efetivamente atendido. Ser capaz de temporizar atividades assncronas em relao ao clock da CPU na faixa de sub milisegundo e escalonar tarefas peridicas nesta base de tempo. Algumas aplicaes requerem o uso de temporizadores precisos, com boa repetibilidade de comportamento. Na ocorrncia de uma interrupo de timer, uma ISR ser escalonada, ou uma thread despertada para realizar alguma atividade crtica.

3. 4. 5. 6. 7.

8.

35

O Windows NT como RTOS


1. O Windows NT multithreaded e preemptivo. As threads da classe de tempo real no podem ter sua prioridade modificadas pelo sistema operacional e seriam adequadas para uso em aplicaes hard real time. A grande limitao que existem apenas 5 nveis de prioridades para estas threads (7 se considerarmos os dois nveis extremos). Isto muito pouco para aplicaes reais. Tambm, como vimos, mesmo uma thread de prioridade 31 pode ser preemptada pelas rotinas de interrupo e DPCs o que prejudica a previsibilidade do seu comportamento. O WNT possui mecanismos sofisticados de sincronizao entre threads. Uma limitao que as filas de espera dos objetos como Mutex so do tipo FIFO, portanto sem prioridade. O Windows NT no implementa herana de prioridades. O comportamento temporal do WNT considerado bom para aplicaes no crticas, mas apresenta grande variabilidade (desvio padro). O mecanismo de temporizao denominado timers multimdia no WNT depende da implementao dos timers no HAL. A interrupo de clock pode ser gerada por um temporizador assncrono externo ou por um RTC que fornece interrupes sncronas com o clock do micro. Depois de receber a interrupo, o HAL chama o kernel que decrementa os temporizadores pendentes e acorda os processos enfileirados, quando o tempo programado espira. Medidas efetuadas no range de 1ms [Jones & Regehr 98] demonstram uma grande variabilidade no valor obtido, que muitas vezes chega a ser o dobro do esperado (2ms). Os estudos realizados por Bruno Bittencourt [Bittencourt 00] com os sistema operacionais WNT e Windows 98, demonstraram que os demais processos de temporizao, incluindo os waitable timers, apresentavam problemas semelhantes. Este trabalho utilizou o relgio interno do Pentium como referncia. Um estudo mais conclusivo deveria utilizar um dispositivo temporizador externo, como por exemplo, um analisador de barramento.

2. 3. 4. 5.

36

18

Como melhorar a performance do WNT em aplicaes crticas ?


Uma forma de fazer um uso mais otimizado do WNT seria observar os seguintes critrios: Executar as aplicaes crticas como threads da classe real time. Forar todo o cdigo da aplicao a ficar residente na memria fsica para evitar a ocorrncia de page faults (instruo VirtualLock) Manter as rotinas de interrupo (ISR) pequenas. Homologar todo o hardware e device drives utilizados para prevenir aplicaes que desabilitem interrupes ou que executem muito tempo em nvel privilegiado (ISRs e DPCs longas). Os maiores responsveis por DPCs longas so: drives de disco, drives de rede e drives de vdeo. Fazer uso do cache. O WNT tenta executar uma thread no mesmo processador onde executou por ltimo para tirar proveito do princpio da localidade de referncia.

37

Extensores de Tempo Real


O WNT no satisfaz as aplicaes hard real time. Os programadores deste tipo de software tinham como nicas opes escolher um RTOS que melhor se adequasse aos seus projetos, usar uma API Win32 sobre um RTOS de mercado [Hildebrand 97a], ou fazer coexistir o NT com um RTOS, se possvel sem modific-lo. Entretanto a alternativa NT parecia muito atrativa. Trata-se de uma commodity que oferece inmeras vantagens: 1. Grande nmero de aplicativos existentes para esta plataforma. 2. Uso de uma API consagrada: Win32. 3. Grande aceitao por parte do mercado em geral. 4. Existncia de uma suite de aplicativos que constituem o pacote Microsoft Office com grande sinergia em relao a aplicaes de controle de processos. Hoje a maior parte dos usurios prefere gerar os seus prprios relatrios utilizando o Excel como ferramenta de formatao ao invs de geradores de relatrios dedicados. 5. Existncia de um grande repertrios de drives para os principais perifricos do mercado: disco rgido, impressoras, monitores, etc. e para equipamentos industriais: CLPs, balanas, leitores de cdigo de barras, etc. 6. Baixo custo. 7. Disponibilidade de um grande nmero de compiladores para as principais linguagens utilizadas. 8. Etc.
38

19

Extensores de Tempo Real Pontos Negativos


1. 2. 3. Uso no previsto do HAL. Problema de compatibilidade quando a Microsoft modifica o HAL. Perda de confiabilidade, primeiro devido ao fato de se fazer o WNT funcionar fora de suas especificaes de projeto, depois por inserir cdigo que aumenta a complexidade do sistema como um todo. Os crticos dos extensores argumentam que dificilmente o nmero de homens hora despendidos no teste destas solues inferior ao que a Microsoft investiu. No portabilidade dos dois ambientes. O programador deve utilizar um conjunto diferente de instrues quando estiver codificando uma aplicao de tempo real. Isto tambm inclui o uso de um segundo sistema de desenvolvimento: compiladores, depuradores, etc. Uso de uma biblioteca proprietria do lado do extensor, o que exige comprometimento com o fornecedor. O Windows NT considerado um sistema aberto no sentido de que a documentao de apoio disponvel a desenvolvedores muito extensa. Falta de reconhecimento e comprometimento formal da Microsoft com os fornecedores de extensores. A Microsoft no garante manter a compatibilidade e caractersticas de nenhum componente de seu software a fim de garantir a permanncia destes produtos no mercado. Falta de conexo entre a parte NT e o extensor. As aplicaes de tempo real no podem fazer uso do COM (Componet Object Model), Active X, Direct X [Malina 97] e consequentemente dos drives OPC (OLE for Process Control) que tendem a se tornar padres na indstria.
39

4.

5.

6.

7.

Extensores de Tempo Real Principais Produtos


RTX 4.2 da VenturCom INTime 1.20 da Radisys Hyperkernel 4.3 da Imagination Systems
Processos Win32 usando RTAPI

Win32/RTAPI
User Mode Kernel Mode

Servios do Sistema IO Manager Windows NT Kernel Processos usando apenas RTAPI (Driver) Real Time Subsystem (RTSS) Executivo WNT Real Time HAL
40

20

Desempenho dos extensores

QNX 4.21 Indicador (s) Latncia de interrupo Latncia de despacho de interrupo Latncia de escalonamento Fonte Tmed 2.0 2.1 1.2 Tmax 3.6 3.2 8.0

WNT2 Tmed 3.9 10.8 5.5 Tmax 22.8 29.0 12.7

RTX2 Tmed 8.6 5.3 3.8 Tmax 14.8 10.5 9.3

INTime2 Tmed 11.0 25.9 4.5 Tmax 19 39 24.2

Hyperkernel2 Tmed 7.4 6.3 2.0 Tmax 18.9 18.4 4.8

[DSEd 01]

[RTM 98b] (NT) e [DSEc 01] (Extensores)

Plataforma:

1: Pentium 200Mhz 2: Pentium 200Mhz MMX

41

Relatrios da GM-Powertrain

3COM 3C905 Armazena resultados (Teste 1)

3COM 3C905 Executa WNT 4.0 + extensor

LabView

NI PCI-DIO-96

NI PCI-MIO-16E-1 Sistema de aquisio de dados (Teste 2)

Sistema RTOS

NI PCI-MIO-16E-1

+5V

Interrupo Tempo (s)

+5V

Sada Tempo (s) Tempo de latncia


42

21

Tempo de resposta do kernel: atividades cclicas


5V

tempo (s) 0 1000 2000 3000

Uma tarefa de tempo real de alta prioridade colocada para ativar uma sada para o valor um durante um tempo definido, digamos 500s ou na mxima velocidade possvel. Depois deste tempo ela deve forar a mesma sada para zero. O que se testa a capacidade de uma dada tarefa de repetir um objetivo temporal especificado exercitando chamadas bsicas do kernel (timer + I/O). As larguras de pulso so medidas para se verificar o desvio em ralao ao valor projetado. Quanto maior a variao (jitter), pior o determinismo do sistema. O sistema submetido a carga externa de diversas naturezas para exame do seu comportamento. Interrupes, DPCs e tarefas de maior prioridade so as causas da variabilidade dos tempos de resposta Este tipo de medida pode ser feito com um instrumento de medio externo, o que traz a vantagem de no utilizar nenhum recurso de software do sistema sob teste, o que perturbaria a medida.
43

Relatrios da GM-Powertrain

Dell XPS H266 128M RAM Mdia Mximo Mnimo Desvio padro Amostragens

NT Nativo 999.95 1711.10 238.05 45.72 500 000

ISI HyperKernel 499.48 505.70 493.70 0.78 500 000

Radisys INTime 499.48 521.45 486.10 1.30 500 000

VenturCOM RTX 499.48 508.10 490.75 0.38 500 000

Resultado ideal para largura do pulso: 500s


Nematron PentiumPro 200 32MRAM Mdia Mximo Mnimo Desvio padro Amostragens NT Nativo 999.98 3141.65 271.05 59.42 250 000 ISI HyperKernel 499.49 507.20 489.55 0.80 500 000 Radisys INTime 499.49 540.10 450.80 1.24 500 000 VenturCOM RTX 499.49 507.00 492.00 0.60 500 000

44

22

Windows CE Caractersticas Bsicas


O Windows CE um sistema operacional multithreded de 32 bits derivado do Windows 95 e NT. Mercado alvo: aplicaes embedded e uso em computadores de pequeno porte mais especificamente o Pocket PC e computadores de bordo (Auto PC) que passaro a equipar nossos carros no futuro. A Microsoft define que o Windows CE ser o seu sistema operacional para as aplicaes de tempo real, inclusive as aplicaes de telefonia e telecomunicaes. A verso 3.0 veio a corrigir os maiores problemas da verso 2.1 e colocou o Windows CE no mesmo nvel dos sistema operacionais mais especializados em aplicaes embedded [Van Beneden 01].

45

Caractersticas para aplicaes de tempo real:

0 1 2 3 4 5 6 7

THREAD_PRIORITY_CRITICAL THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_NORMAL THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_LOWEST THREAD_PRIORITY_ABOVE_IDLE THREAD_PRIORITY_IDLE

Real time & Device Drives

Kernel

Outras aplicaes

Prioridades de threads no Windows CE verso 2.x

46

23

Prioridades de threads no Windows CE verso 3.0

0 1 2 3 *** 248 249 250 251 252 253 254 255 Prioridade 0 v2.x Prioridade 1 v2.x Prioridade 2 v2.x Prioridade 3 v2.x Prioridade 4 v2.x Prioridade 5 v2.x Prioridade 6 v2.x Prioridade 7 v2.x

47

Caractersticas para tempo real


O Windows CE 3.0 evita a inverso de prioridades atravs da implementao da herana de prioridades Em sua verso 3.0 o Windows CE apresenta quatro objetos de sincronizao: CriticalSections Eventos nomeados e no nomeados Mutexes Semforos contadores O valor do tick de 1 ms permite uma menor granularidade das operaes de temporizao (funo Sleep, WaitForSingleObject, etc.) Ao contrrio do Windows NT, no Windows CE a fila de espera por um objeto de sincronizao organizada como uma FIFO com prioridade. Assim no ocorre inverso de prioridades na espera de um recurso

48

24

Windows CE - Interrupes

0 ISR0 Prioridades

1 ISR1

2 ISR2

IRQs

ISRs associadas Interrupt Id 0 1 2 * * 7 Event B IST2 Signal IST1 Kernel CE

Event A

49

Windows CE - Interrupes
O servio das interrupes baseado em Rotinas de Tratamento de interrupes (ISR) e em threads especiais denominadas IST (Interrupt Service Threads). O objetivo manter as ISRs o menor possvel para se obter tempos de latncia mais baixos Cada IRQ (Intrerupt Request Line) est associada a uma ISR especfica. Quando a interrupo ocorre, a ISR correspondente acionada. Esta rotina executa em modo kernel e muito breve, retornando ao kernel a identificao da interrupo (Interrupt Id) O kernel sinaliza um evento que est associado a uma IST. A IST deve estar esperando por este evento. Ela ser ento acordada para execuo de acordo com sua prioridade Como as ISTs so associadas aos nveis mximos 0 ou 1 elas sero rapidamente escalonadas para execuo. Assim que a IST iniciada, o sistema de interrupes est habilitado a aceitar e tratar outro pedido de interrupo O Windows CE 3.0 j permite interrupes aninhadas, o que constitua uma das grandes limitaes da verso anterior Na verso 2.1, cada ISR executava at completar e disparar a IST. Isto prejudicava o tempo de latncia das interrupes de mais alto nvel. O tempo de latncia de interrupo da verso 3.0 j comparvel ao de outros RTOS
50

25

Desempenho do Windows CE Tempo de latncia de criao


Consta da criao repetida de uma thread por milhares de ciclos O tempo mdio de criao foi de 100s. O tempo mximo foi de 1s, verificado em apenas 0.01 % dos casos (2 casos)

51

Desempenho do Windows CE Tempo de latncia de Interrupo


O resultado para o tempo de latncia foi compatvel com o de outros RTOS do mercado

O que falta de informao neste grfico segundo sua opinio ?

52

26

Tempo de latncia de escalonamento

Dez threads de igual prioridade pertencentes ao mesmo processo executam. Quando a thread se torna ativa, ela abandona o processador em prol da prxima thread da fila. O tempo de latncia se mostrou independente do nmero de threads utilizado. O tempo mximo de 32s foi observado quando uma thread se tornava ativa pela primeira vez em uma srie.

53

Inverso de prioridade
Foi medido o tempo desde o momento em que uma thread de alta prioridade solicitava um recurso compartilhado, utilizando um Mutex, at o momento em que a thread era escalonada para execuo. Como o Windows CE 3.0 usa um mecanismo de herana de prioridade, isto envolve elevar a prioridade da thread de menor prioridade, esperar que ela termine de executar e chavear o contexto para a thread de maior prioridade. Os resultados foram satisfatrios

54

27

Performance do Windows CE verso 3.x

QNX 6.11 Indicador (s) Tempo de latncia de interrupo Tempo de latncia de escalonamento Tempo de troca de contexto Fonte Tmed 1.7 1.8 2.0 Tmax 4.1 2.1 8.1

Windows CE 3.01 Tmed 2.4 2.5 Tmax 5.1 29.5

[DSEb 01]

Plataforma: 1: Pentium 200Mhz MMX, placa me Chaintech

55

Polling x Interrupes
Sistemas Assncronos: A operao de I/O corresponde a uma thread assncrona de alta prioridade. Quando o dispositivo est pronto para disponibilizar os dados, a tarefa escalonada preemptivamente. A tarefa de I/O especial recebe nome de tratador de interrupes (Interrupt Handler) ou ISR (Interrupt Service Routine). A ISR, como j vimos, deve ser o mais breve possvel. Sistemas Sncronos (Polling): O device driver l os registros de status do dispositivo de entrada periodicamente at detectar o evento esperado. O tempo de polling pode ser fixo, sendo ditado por uma interrupo de relgio, ou varivel. Neste ltimo caso a tarefa de amostragem executada ciclicamente em sua velocidade mxima. O dispositivo externo deve reter o dado at a leitura pelo driver. Caso outro dado se torne disponvel, antes que o anterior seja lido, o dado mais velho ser destrudo (erro de overrun), a menos que o dispositivo tenha alguma capacidade de armazenamento temporrio (buffer).

56

28

Polling x Interrupes Exemplo

CPU
RxReady TxEmpty

Status

RxReady

TxEmpty

Interrupt

USART

p r i o r i d a d e s

ISR 2 1 thread t1 t2 t3 t4 ISR 1 thread tempo


57

Interrupes so sempre melhores que leitura cclica (polling) ?


Comunicao serial: Dados (7/8)b Paridade Stop

Transmisso: 1. O device driver recebe mensagem solicitando a transmisso de um bloco de dados. 2. Os dados so copiados para um buffer interno do driver. 3. Os dados so pr processados. O driver pode inserir caracteres de controle de erro especiais como 2 ou 4 bytes de CRC (Cyclic Redundant Code) ou check sum. Alguns caracteres especiais como Record Separator (0x1E) do Unix podem ser expandidos para CR/LF de uso mais geral, etc. 4. O primeiro byte carregado na UART. 5. O driver entra em espera e fica bloqueado. O S.O. carrega outra thread para executar. 6. LOOP: 6.1. A UART transmite o dado e ativa o bit TxReady em uma palavra de status (flag), ou causa uma interrupo de TxReady. 6.2. Ao receber a interrupo, a ISR do driver do dispositivo ativada. 6.3. A ISR verifica se existem mais dados para serem transmitidos e neste caso copia mais um byte no buffer da UART.
58

29

Comunicao Serial
Recepo: 1. A UART recebe um byte bit a bit e gera uma interrupo, ou sinaliza uma flag (RxReady) 2. A ISR recebe o byte e o coloca em um buffer interno do drive. Toda vez que o usurio solicitar dados ao driver, os dados do buffer sero entregues. Estes dados tambm podem ser recebidos at algum caracter especial de final de bloco ser encontrado, ou a cada t ms.

59

Anlise de desempenho:
Vamos assumir que a UART foi configurada para: 10 bits/caracter: 7 bits de dado, 1 bit de paridade, 1 stop bit e 1 start bit velocidade = 9600 bps = 960 caracteres/s Isto representa uma carga de 960 interrupes por segundo. Se a linha for full duplex, o computador ir receber 1920 interrupes por segundo ! Esta carga representa um grande overhead para a CPU principal. Por outro lado se sabemos que a comunicao se dar todo o tempo em sua taxa mxima, seria mais eficiente se buscssemos os caracteres, por exemplo, uma vez a cada 50 ms. O nmero de interrupes cairia de 9600 para 20. Mas isto implica em ter que manipular 48 caracteres por transao.

60

30

Anlise de desempenho:
Para se obter um bom desempenho na transmisso serial fundamental utilizar UARTS com buffers internos de vrios caracteres Se a taxa de recepo for fixa e alta, polling ser a melhor estratgia. Se os caracteres chegam esporadicamente, ento a interrupo o critrio de escolha.

61

Exerccios
1) Marque os sistemas que na sua opinio so de tempo real: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Marcapasso cardaco de demanda (emite pulso s quando a conduo do impulso eltrico da aurcula para o ventrculo falha). Sistema de reserva de passagens areas. Sistema de venda de livros pela Internet. Operao cardaca a distncia por controle remoto. Controlador de robot industrial numa linha de pintura. Videoconferncia Sistema de controle do nvel de acar no sangue humano. Comando remoto do robot Sojourner no solo de Marte. Sistema de monitorao de incndio de um prdio. Sistema de monitorao de variveis clnicas dos pacientes de um hospital. Sistema de controle de vo de um aeroporto. Sistema de controle de abertura da pupila no ser humano.

62

31

Exerccios

2) De o valor verdade das seguintes afirmativas: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Devemos concentrar todo o processamento do nosso device driver na rotina de interrupo (ISR). O kernel pode despachar trs tipos de rotinas: ISRs, DPCs e threads do sistema e do usurio. Uma DPC de alta prioridade sempre preemptar uma DPC de baixa prioridade. Para que o WNT se comportasse como um RTOS seria desejvel que todo o processamento da interrupo fosse feito num determinado nvel de prioridade. O WNT permite interrupes aninhadas. DPCs tm prioridade mais alta que as threads do sistema Um device driver mal comportado, ligado a uma linha de interrupo de baixa prioridade, pode afetar o comportamento de um device driver ligado a uma IRQL de alta prioridade. ISRs e DPCs executam em modo privilegiado (ring 0) e portanto podem executar instrues privilegiadas tais como CLI (desabilita interrupes) ou STI (habilita interrupes). No Windows CE um processo pode ter uma thread na prioridade 0 e outra na prioridade 50.

63

Exerccios

3) Classifique as aplicaes abaixo em Hard Real Time (H) ou Soft Real Time (S): ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Software de gerao da folha de pagamentos Injeo eletrnica microprocessada Sistema de gerenciamento de Manuteno (MMS) Sistema SCADA Sistema de suspenso ativa de um carro de Frmula I Sistema de gerenciamento de armazns WMS (Warehouse Management System) Sistema de arquivamento de dados histricos - PIMS (Plant Information Management System) Sistema de acompanhamento da manufatura MES (Manufacturing Execution System) Sistema de controle baseado em SoftLogic Processamento de udio e vdeo

64

32

Muito Obrigado

Constantino Seixas Filho constantino.seixas@task.com.br

65

33

Das könnte Ihnen auch gefallen