RTOS – Sistemas Operacionais de Tempo Real

A evolução dos sistemas embarcados resultou no aumento na quantidade e complexidade dos sensores e atuadores conectados ao controlador, fazendo com que o controle de todas as tarefas necessárias se tornasse complexo através da estrutura comum de superloop, e ainda assim, resultasse em um sistema impreciso em relação ao tempo de execução das tarefas. Contudo, alguns sistemas trabalham com eventos que possuem restrições de tempo, ou seja, possuem um tempo-limite para uma tarefa ser processada.

Para lidar com os resquisitos de tempo e também para produzir um ambiente multitarefas no projeto, pode-se fazer o uso de sistemas operacionais embarcados no microcontrolador. Mas o que efetivamente são sistemas operacionais?

Sistemas operacionais

De modo geral, um sistema operacional nada mais é que conjunto de códigos cuja principal função é gerenciar os recursos de hardware do sistema, tais como: o processador, a memória e os dispositivos de entrada/saída (I/O), fornecendo uma interface entre a aplicação final e o hardware.

Aplicação do sistema operacional

Elementos de um sistema operacional

  • Kernel: Componente central do sistema operacional, responsável por fazer a interação entre software e hardware.
  • Scheduler: Software do sistema operacional responsável por administrar as tarefas a serem executadas pela CPU, geralmente são selecionadas de acordo com o nível de prioridade. Em caso de prioridades iguais o scheduler fará a alternância entre as tarefas.
  • Tarefas: São pequenos trechos de programa com responsabilidades específicas e bem definidas. Cada tarefa possui um nível de prioridade, que é atribuída de acordo com sua importância. No caso de sistemas com apenas uma CPU, apenas uma tarefa é executada por vez, no entanto, o scheduler fará a alternância entre elas tão rapidamente que teremos a impressão de estarem sendo executadas simultaneamente.

GPOS x RTOS

Os sistemas operacionais podem ser divididos em dois grandes grupos: Os GPOS (sistemas operacionais de propósito geral), muito utilizados em computadores, focam na execução de inúmeras tarefas paralelamente, sem tempo limite para que elas sejam concluídas. Já nos sistemas operacionais de tempo real (RTOS) o tempo de execução das tarefas é considerado mais importante do que executar centenas de tarefas ao mesmo tempo. O termo “tempo real” sugere erroneamente a idea de um sistema extremamente rápido, quando na verdade o que realmente interessa é que o tempo de execução das tarefas seja previsível e esteja dentro de um limite pré-determinado de tempo.

Restrições de tempo

Para entendermos a importância de um Sistema Operacional de Tempo Real, precisamos entender o conceito de restrição de tempo para tarefas computacionais. Todo evento computacional recebe um estímulo (entrada) executa o processameto de uma tarefa e produz uma saída. Um evento com restrição de tempo conta com um tempo limite (deadline) para que o processamento ocorra e a saída seja gerada. Como exemplo de sistema de tempo real podemos citar um sensor de temperatura que gera uma entrada em um microcontrolador. Se um nível crítico de temperatura for atingido, o sensor deve gerar um estímulo no microcontrolador para que ele atue sobre o sistema de refrigeração. Caso o microcontrolador nao cumpra os requisitos de tempo a temperatura pode atingir níveis muito elevados e acabar danificando todo o sistema. Um RTOS, portanto, minimiza o risco de falhas que poderiam danificar componentes ou até mesmo causar riscos à vidas humanas.

Vantagens em utilizar um sistema operacional embarcado

  • Confiabilidade: Com o gerenciamento do hardware sendo realizado pelo sistema operacional, os bugs relacionados a estes tópicos tendem a diminuir à medida que o sistema operacional é testado, tornando o sistema como um todo mais confiável.
  • Portabilidade: Portar um projeto de um dispositivo para outro se torna algo simples se ambos utilizarem o mesmo sistema operacional embarcado.
  • Reaproveitamento de código: Uma mesma função do sistema pode ser executada utilizando diferentes parâmetros, gerando assim resultados diferentes, isso significa reutilizar o código fonte para realizar mais tarefas.
  • Segurança: Se descoberta alguma brecha na segurança do sistema a correção será feita a nível de sistema operacional, não sendo necessário alterar o código fonte da aplicação em si.

Conceitos de projeto utilizando RTOS

Em um ambiente em que se utiliza RTOS toda e qualquer funcionalidade do sistema é definida como uma tarefa (task). Cada tarefa é vista como uma rotina isolada, e se trata de uma funcionalidade do sistema. Como exemplo de tarefas podemos citar a leitura de sensores, acionamento de led’s, escrita em displays, comunicação serial e etc. Portanto, um Sistema de Tempo Real é modelado através da divisão da aplicação em um conjunto de pequenas tarefas individuais, que podem ou nao interagirem entre si.

Caso seja necessária a interação entre tarefas, os RTOS contam com o mecanismo de filas. As queues, como também podem ser chamadas, são o meio de comunicação entre tarefas, com essa comunicação sendo feita em via única, ou seja: Uma fila deve ser usada pra transmitir dados da tarefa_1 para a tarefa_2 e outra para transmitir da tarefa_2 para a tarefa_1. O uso de filas visa evitar o uso de variáveis globais como interface de comunicação.

Um ponto a se atentar em sistemas de tempo real é o compartilhamento recursos entre as tarefas. Existe a possibilidade de uma tarefa requerer algum recurso, como um periférico por exemplo, que já esteja sendo utilizado por outra. Para que este compartilhamento seja feita de forma segura, os RTOS proveem um recurso chamado semáforo. Como um semáforo de trânsito, ele sinaliza se uma via, neste caso um recurso do sistema, está ou nao disponível para ser utilizado.

Escolha de um RTOS

Uma vez identificada a necessidade e a viabilidade da utilização de um RTOS, é preciso definir qual sistema será utilizado. Para isso alguns fatores devem ser levado em conta, como por exemplo: A arquitetura do processador, a memória RAM disponível, a memória Flash disponível e o custo do sistema. Confira a seguir a lista dos RTOS mais utilizados atualmente:

  • VxWorks: RTOS comercial líder de mercado
  • FreeRTOS: um RTOS de código aberto e que já foi portado para diversas plataformas (ARM, MSP430, PIC, etc).
  • TI-RTOS: Criado pela Texas Instruments para uso em uma grande variedade de processadores.
  • X-Real Time Kernel: Desenvolvido pela eSysTech voltado a processadores ARM.

Referências

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será publicado.


*