Saltar para o conteúdo

Sistema operacional de tempo real

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado deSTR)
Nota:"STR" redireciona para este artigo. Para a equipe italiana de F-1, vejaScuderia Toro Rosso.
O Robô motorizado de pesquisa a Marte tem embutidos sistemas operacionais de tempo-real
O Robô motorizado de pesquisa aMartetem embutidos sistemas operacionais de tempo-real

UmSistema operativo em tempo real(português europeu)ouSistema operacional de tempo real(português brasileiro)(RTOS da sigla anglo-saxónicaReal Time Operating System) é umsistema operacional/operativodestinado à execução demúltiplas tarefasonde o tempo de resposta a umevento(externo ou interno) é pré-definido; não importando, como é comum pensar-se, se a velocidade de resposta é elevada ou não. Esse tempo de resposta é chamado de prazo da tarefa e a perda de um prazo, isto é, o não cumprimento de uma tarefa dentro do prazo esperado, caracteriza uma falha do sistema. Outra característica dos sistemas de tempo real é a sua interação com o meio ao redor. Os STR tem que reagir, dentro de um prazo pré-definido, a um estímulo do meio. Por exemplo, em um hospital, o sistema que monitora os batimentos cardíacos de um paciente deve avisar os médicos caso haja alteração nos batimentos. Outro aspecto importante dos STR é a previsibilidade. O sistema é considerado previsível quando podemos antecipar seu comportamento independentemente de falhas, sobrecargas e variações de hardware.

Um RTOS facilita a concepção de um sistema em tempo real, mas não garante que o resultado final seja um sistema de tempo real, para tal é necessário que o programa nele implementado tenha sido corretamente desenvolvido. Um RTOS não tem que ter necessariamente um elevadodébitonas saídas, ou um elevado número de saídas, no entanto, tem que garantir que certas tarefas sejam executadas em um determinado intervalo de tempo. Um RTOS é mais eficaz e é mais valorizado pela forma previsível e rápida na resposta a umevento,do que pela quantidade de dados que processa. Os fatores chave em um STR são, então, fornecerlatênciasde interrupções e de alternância de tarefas mínimas.

Filosofias de desenho

[editar|editar código-fonte]

Existem tipicamente duas arquiteturas:

O desenho baseado no evento, ouescalonamentoprioritário, alterna as tarefas somente, quando uma tarefa de maior prioridade necessita de ser executada, denominando-sepreemptividade.

O desenho baseado na partilha de tempo alterna as tarefas segundo os tiques do relógio doprocessador.

O desenho que se baseia na partilha de tempo, alterna entre tarefas mais frequentemente daquilo que é realmente necessário, no entanto dá a estas a ilusão de terem o monopólio do processador.

Os processadores mais antigos, necessitavam de muitos ciclos de relógio para alternarem entre tarefas, sendo que nesse intervalo de tempo não executavam nada. Então os RTOS dessa época tentavam minimizar o desperdício de tempo do processador através da diminuição de alternância entre tarefas. Os processadores mais recentes demoram muito menos tempo para mudarem de uma tarefa para outra. Quase todos os RTOS de hoje em dia implementam uma junção destes dois tipos de desenhos.

Como os demais sistemas operacionais, os RTOS têm uma fila onde se inserem todas as tarefas que estão prontas para serem executadas. Essa lista é conhecida como fila de prontos.

Osalgoritmos de escalonamentodesses sistemas visam, principalmente, satisfazer os requisitos temporais dos comandos dados pelo usuário. Como cada sistema implementa, na maioria das vezes, algoritmos de escalonamento diferentes, alguns são aptos para determinadas tarefas enquanto outros são melhores para outras aplicações. O RTLinux, utilizado nas indústrias para controle e automação, permite que um programador escreva seu próprioalgoritmo de escalonamento.

Osalgoritmos de escalonamentodos STR podem ser classificados em estáticos e dinâmicos. O primeiro é utilizado apenas em situações onde o trabalho a ser realizado e seus requisitos temporais são conhecidos previamente. O algoritmo estático mais implementado é o escalonamento por taxas monotônicas (rate monotonic schedulingRMS).

O RMS atribui prioridades aos processos dependendo do número de vezes que eles serão executados por segundo. Quanto maior a frequência de execução, maior a prioridade. O escalonamento por taxas monotônicas é preemptivo.

Os algoritmos de escalonamento dinâmicos não atribuem prioridades fixas aos processos. As decisões de escalonamento são tomadas em tempo de execução e as prioridades dos processos podem mudar. Os critérios para essas decisões variam de algoritmo para algoritmo. O algoritmo de escalonamento dinâmico mais utilizado é o “prazo mais curto primeiro” (Earliest Deadline FirstEDF).

OEDFescolhe na fila de prontos o processo que tenha o prazo de vencimento mais curto. Se chegar na fila um processo que tenha um prazo menor ainda, ocorrerá preempção. Ao contrário doRMS,oEDFnão necessita que os processos sejam periódicos. OEDFtem a grande vantagem de ser capaz de manter aCPUtodo o tempo ocupada; porém o algoritmo é extremamente complexo.

Sistemas de tempo real críticos e não críticos

[editar|editar código-fonte]
Um caçaF-16tem embutido sistemas de tempo real rígidos

Os STR são classificados, basicamente, em:

- Críticos (hardRTS - também chamados derígidos)

- Não-Críticos (softRTS - também chamados demoderados)

A severidade da pena pelo não cumprimento das tarefas num determinado intervalo de tempo é o fator que os distingüe.

Os leitores deCDe deDVDpossuem sistemas de tempo real moderados.

O STR Crítico é aquele que tem um comportamento determinístico, ou seja, o prazo para execução de uma tarefa (deadline) não pode ser violado. Se o sistema de um freio ABS, por exemplo, falhar ou demorar demais para responder, uma pessoa poderá se machucar. Essa classe de STR tem que ser ultra confiável, ou seja, o tempo médio entre falhas tem que ser maior que 10 elevado a 9 horas. Outros exemplos de STR Rígido são: o sistema embarcado denavegaçãode uma aeronave, o sistema embarcado de proteção de linhas dealta tensão.Em ambos os exemplos, se o sistema falhar, pessoas poderão se machucar.

O STR Não-Crítico é aquele que também tem o tempo como parâmetro fundamental, mas uma falha é aceitável. O sistema que funciona em um leitor deDVDnão é crítico, pois o não cumprimento de uma tarefa em resposta e umeventoem um determinado intervalo de tempo não provoca danos irreversíveis. Ao contrário dos sistemas críticos, esses sistemas normalmente trabalham com um grande volume de dados.

Em um STR rígido os cálculos efetuados peloprocessadordepois de findado oprazo da tarefasão pouco ou nada úteis; já nos STR moderados a utilidade dos dados lidos pelo processador e dos cálculos efetuados não é considerada nula depois do prazo da tarefa terminar

Os RTS rígidos são inflexíveis, pois oprazo da tarefa(deadline) não pode ser ultrapassado. Já os RTS moderados oferecem alguma flexibilidade no não cumprimento de prazos das tarefas que executam. Em um RTS moderado pode-se efetuar um cálculoestatístico,para obter o grau de validade e utilidade dos dados lidos depois do prazo da tarefa terminar.

Comunicação entre tarefas, sincronização e partilha de recursos

[editar|editar código-fonte]

A partilha derecursosé delicada de se usar num ambientemultitarefas,como tal um cuidado acrescido deve ter-se em consideração. Quando uma tarefa está a utilizar um dado recurso, a ler, ou a escrever, convém bloquear as outras tarefas de utilizarem esse mesmorecurso;se tal não for feito os resultados podem ser imprevisíveis. Os métodos utilizados para uma eficiente partilha de recursos incluem:

  • Mascaramento temporário /Desabilitar interrupções
  • Semáforos binários
  • Mensagens trocadas

Mascaramento temporário / Desabilitar interrupções

[editar|editar código-fonte]

O mascaramento temporário consiste em desabilitar temporariamente os serviços de atendimento às interrupções efectuados pelo processador. Enquanto as interrupções estão desabilitadas, uma tarefa pode passar uma seção crítica de uma dado programa embarcado sem ser interrompida, ou seja, obtém temporariamente o monopólio de uma dadorecurso.Como tal, o código inserido numa seção crítica deve ser curto, e deve durar poucos ciclos de relógio; se tal não for feito, as rotinas de interrupção precisarão esperar algum tempo até serem atendidas, o que provoca um aumento dalatênciade interrupção.

Semáforos binários

[editar|editar código-fonte]

Umsemáforobinário tem os estados de bloqueado ou desbloqueado. É usado para partilhar recursos, e para comunicação entre tarefas. Enquanto uma tarefa utiliza um dado recurso pode bloquear um semáforo; outra tarefa antes de utilizar esse recurso verifica o estado do semáforo, e se estiver bloqueado, não utiliza o recurso. Pode esperar que, o recurso fique liberto, ou pode executar outras funções.

Surgem no entanto alguns problemas relacionados com ossemáforosbinários, entre os quais aprioridade invertidae oentrave.

Naprioridade invertidauma tarefa de alta prioridade é obrigada a esperar porque uma tarefa de baixa prioridade bloqueou um semáforo. Se uma tarefa de baixa prioridade bloquear um semáforo, impede que uma tarefa que verifica o estado desse semáforo, seja executada, mesmo sendo de prioridade superior.

Um solução pode ser, atribuir temporariamente uma prioridade elevada, à tarefa que está a bloquear o semáforo, por forma a que esta desimpeça o recurso o mais rapidamente possível.

Numentrave,duas ou mais tarefas bloqueiam uma série de semáforos binários e esperam infindavelmente pelo desbloqueio de outros semáforos, criando assim ciclos infinitos. Se uma tarefaAbloquear o semáforof1e depois esperar pelo desbloqueio do semáforof2,e uma tarefaBestiver bloqueada no semáforof1para desbloquear osemáforof2,cria-se umentrave.

Outra forma de partilha de recursos assenta no envio de mensagens. Neste paradigma, um recurso específico é gerido por apenas uma tarefa, e as outras tarefas interrogam sobre o estado do recurso através de mensagens. Normalmente o sistema que assenta na troca de mensagens não causa entraves, e tem um comportamento mais estável que o sistema baseado nos semáforos.

Exemplos de RTOS

[editar|editar código-fonte]
  • TI-RTOS- TI-RTOS é um SO criado pelaTexas Instruments(TI) para uso em uma grande variedade de processadores embarcados.
  • X-Real Time Kernel- um STR desenvolvido pela eSysTech voltado a processadores ARM
  • FreeRTOS- um RTOS de código aberto e que já foi portado para diversas plataformas (ARM,MSP430,PIC,etc).
  • QNX- RTOS comercial bastante utilizado em aplicações embarcadas.
  • RTA-OSEK- Um RTOS voltado a aplicações automotivas.
  • AIX - Advanced Interactive eXecutive- Uma versão do Unix executados em computadores de médio porte da IBM.
  • AMX- um STR fornecido pela KADAK
  • CMX- fornecido pela CMX Company
  • BRTOSBasic RTOS - Pequeno e robusto RTOS (ARM,AVR,PIC,MSP430)
  • VxWorks- RTOS comercial líder de mercado da Wind River
  • RHEL- Em sua versão Red Hat Enterprise Linux for Real Time[1]
  • Zephyr- RTOS Open-Source mantido pela Linux Foundation com foco em IOT[2]

Referências

  1. «Red Hat Enterprise Linux for Real Time».redhat.Consultado em 9 de maio de 2017.Arquivado dooriginalem 8 de novembro de 2017
  2. «Zephyr Project | Learn About | Vision».Zephyr Project(em inglês).Consultado em 15 de setembro de 2020

TANE NBA UM, A. S. Sistemas Operacionais Modernos. 2ª ed. São Paulo, Pearson Prentice Hall, 2003.

Ligações externas

[editar|editar código-fonte]