Beruflich Dokumente
Kultur Dokumente
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
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
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
11
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
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
Processo P1 P2
T (ms) 5 3
texec (ms) 3 1
P2 P1 t
P1 P2
15
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
16
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
solicitaes
17
Processo P1 P2 P3
T (ms) 3 8 6
texec (ms) 1 2 1
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
1 2 3 4 5 6 7 8 9 10 11
P3 P2 P1 P2 P1 P3 P2 P1 P2 19
20
10
Inverso de prioridades
Prioridades A L T A
M D I A B A I X A B Seo crtica
BLOQUEADO
EM EXECUO
21
22
11
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
24
12
25
26
13
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
Privilgio 3
ISR
1
2 2
2 1
DPC RT
Privilgio 1
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
Thread B
30
15
INT
INT
ISR
31
INT
INT
Tdispat_int
32
16
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
2. 3. 4. 5.
36
18
37
19
4.
5.
6.
7.
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
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
[DSEd 01]
Plataforma:
41
Relatrios da GM-Powertrain
LabView
NI PCI-DIO-96
Sistema RTOS
NI PCI-MIO-16E-1
+5V
+5V
21
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
44
22
45
0 1 2 3 4 5 6 7
Kernel
Outras aplicaes
46
23
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
48
24
Windows CE - Interrupes
0 ISR0 Prioridades
1 ISR1
2 ISR2
IRQs
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
51
52
26
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
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
[DSEb 01]
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
CPU
RxReady TxEmpty
Status
RxReady
TxEmpty
Interrupt
USART
p r i o r i d a d e s
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
65
33