Um sistema operacional de uso geral oferece mecanismos de execução concorrente de processos, que disputam entre si o uso de recursos computacionais. Por sua vez, um Sistema Operacional em Tempo Real oferece suporte aos sistemas embarcados por meio de mecanismos de comunicação, sincronização, temporização e exclusão mútua. As principais características que diferem um RTOS de um sistema operacional de uso geral são: escalabilidade, políticas de escalonamento e suporte para ambientes embarcados (DOUGLASS, 1999).
A escalabilidade do RTOS se dá pela sua estruturação, que utiliza uma arquitetura de
microkernel. Nessa arquitetura, um módulo central (microkernel) é responsável pelo
gerenciamento de memória, comunicação entre tarefas, escalonamento e serviços de temporização, enquanto as demais funcionalidades do núcleo operacional são implementadas em módulos de software externos ao microkernel (MARWEDEL, 2006).
O escalonamento pode ser definido como o mapeamento do conjunto de tarefas para intervalos de tempo de execução. O escalonamento em Sistemas Operacionais em Tempo- Real deve ser determinado por meio de uma política de prioridades que define qual tarefa será executada, quando mais de uma tarefa encontra-se pronta para a execução. O RTOS deve disponibilizar meios para configurar com mais detalhes o processo de escalonamento das tarefas (MARWEDEL, 2006).
As restrições temporais, em um Sistema Operacional em Tempo-Real, podem ser classificadas como: restrições temporais rígidas (hard real-time), restrições temporais fortes (firm real-time) e restrições temporais flexíveis (soft real-time). Restrições temporais rígidas exigem que as tarefas sejam realizadas no prazo determinado. Os dois outros tipos de restrição toleram atraso.
32
2.1.5.1 Exemplos de Sistemas Operacionais em Tempo Real
Dentre os RTOS utilizados no desenvolvimento de sistemas embarcados é possível citar: QNX Neutrino, VxWorks, Nucleus e X Real-Time Kernel; todos de código proprietário e amplamente utilizados em ambientes comerciais e acadêmicos. Outros exemplos de RTOS podem ser encontrados em (SALEM et al., 2008; AROCA e CAURIN, 2009).
O VxWorks (Wind River VxWorks) utiliza arquitetura de microkernel de tempo real. Desta forma, este RTOS pode garantir um tempo de resposta determinístico. O VxWorks é disponibilizado para as seguintes plataformas: ARM, MIPS, PowerPC, x86, dentre outros. O ambiente de desenvolvimento deste RTOS é baseado na plataforma Eclipse e é compatível com compiladores para as linguagens de programação C, C++, Java e Ada. O VxWorks é amplamente utilizado pela indústria aeroespacial, automotiva, sistemas de defesa, dentre outras (TAO e SONG, 2011; BEHNAM et al., 2008; AROCA e CAURIN, 2009).
O QNX Neutrino, por sua vez, tem como base a arquitetura de microkernel de tempo real com memória protegida. Este RTOS é compatível com padrão POSIX (Portable
Operating System Interface) e oferece suporte para desenvolvimento nas linguagens de
programação C, C++ e Java. O QNX Neutrino suporta a arquitetura ARM, MIPS, PowerPC, SH4, dentre outras (KRTEN, 2009). Utilizado em aplicações da área automotiva, médica e de automação, possui um recurso chamado particionamento adaptativo que permite a criação de restrições de processamento por meio de tarefas (AROCA e CAURIN, 2009).
Ainda, o Nucleus possui arquitetura de microkernel de tempo real, compatível com padrão POSIX e com as linguagens de programação C, C++ e Assembler. O Nucleus oferece suporte para os seguintes processadores: ARM, MIPS, PowerPC e SuperH, dentre outros (MENTOR GRAPHICS, 2012).
Por fim, outro exemplo de núcleo operacional é o RTOS chamado X Real-Time
Kernel, de especial interesse para este trabalho de pesquisa e apresentado a seguir.
2.1.5.2 X Real-Time Kernel
O núcleo operacional X Real-Time Kernel, comercializado pela empresa brasileira eSysTech – embedded Systems Technologies, possui uma arquitetura de microkernel e está fundamentado na orientação a objetos e no princípio da adaptação do kernel à plataforma de
33
o RTOS X é voltado para o desenvolvimento de sistemas embarcados com severas restrições temporais e de recursos computacionais, denominados Deeply Embedded Systems (GÓES e RENAUX, 2006).
O X Real-Time Kernel é um núcleo em tempo real que oferece infraestrutura para gerenciamento de tarefas, sincronização e troca de mensagens em sistemas embarcados. Este RTOS é disponibilizado por meio de uma biblioteca de software que define o núcleo do X e oferece serviços compartilhados de gerenciamento de tarefas, temporização, sincronização e mensagens. Extensões do kernel podem ser utilizadas, agregando, assim, serviços à camada de aplicação. A camada de aplicação engloba as tarefas que implementam as funcionalidades específicas de cada sistema embarcado, como interações com usuários e algoritmos de controle.
Device drivers são módulos dedicados responsáveis pela interação do kernel com os
recursos de hardware. Cada device driver implementa rotinas de acesso e controle de operação de determinado periférico (como um teclado ou um display LCD) ou de um recurso de hardware (como memória flash). Os device drivers oferecem APIs (Application Program
Interfaces) para acesso às funcionalidades dos periféricos e recursos do hardware. Um
módulo dedicado, dependente de hardware e denominado BootLoader, é responsável pela inicialização da execução do sistema (ESYSTECH, 2012).
O kernel do X disponibiliza seus serviços para a aplicação por meio de métodos de um objeto global denominado “os”. Para o gerenciamento de tarefas, o X Real-Time Kernel permite a programação de múltiplas tarefas concorrentes (threads). Todas as tarefas compartilham a mesma área de dados e heap.
A política de escalonamento utilizada pelo X Real-Time Kernel para distribuição do tempo do processador entre as tarefas é do tipo Round Robin. Assim, a execução das threads é realizada de forma sequencial a partir de sua ordem de criação.
Funções de envio, recepção e monitoração fornecem os serviços para manipulação de canais de comunicação no X Real-Time Kernel. O tratamento de interrupções de hardware, interrupções de software e o uso de semáforos também são mecanismos oferecidos por este RTOS. Outras funções de temporização possibilitam que as aplicações realizem ações em tempos determinados ou controlem suas ações em função do tempo.
34
O X Real-Time Kernel oferece suporte a TCP/IP1, flash filesystem2 e USB STACK3. O RTOS X também possibilita a integração de outros módulos opcionais, como novos device
drivers e protocolos de comunicação.