avaliação e comparação de desempenho de sistemas operacionais

Propaganda
AVALIAÇÃO E COMPARAÇÃO DE DESEMPENHO DE SISTEMAS
OPERACIONAIS DE TEMPO REAL (RTOS) COM FOCO DE APLICAÇÃO EM
SISTEMAS EMBARCADOS CRÍTICOS
Guilherme C. de Oliveira, Daniel F. Pigatto, Kalinka R. L. J. C. Branco
Universidade de São Paulo/Instituto de Ciências Matemáticas e de Computação
[email protected], [email protected], [email protected]
Resumo
Sistemas embarcados críticos são um tipo particular de sistema embarcado onde falhas podem acarretar
perdas humanas ou de ativos de alto valor. Normalmente, esses sistemas trabalham com tarefas que
demandam respostas rápidas, i.e., em tempo real. Para atender os diversos deadlines dessas tarefas, o
hardware e o software utilizado nesses dispositivos devem considerar necessidades mais robustas e operar
em tempo real para não prejudicar o sistema como um todo. Um elemento importante na concepção desses
sistemas é o sistema operacional, que deve ser de tempo real (do inglês, real time operating system, ou
RTOS). A escolha de um RTOS adequado ao tipo de sistema embarcado é essencial para que o conjunto
possa atingir um bom desempenho. Efetuando um levantamento dos RTOSes disponíveis na atualidade,
este trabalho foca então em identificar os recursos oferecidos por cada sistema operacional, avaliando-os e
comparando-os usando um protótipo real de experimentações. Com base nos resultados obtidos, pode-se
definir os RTOSes mais indicados para uso em cada tipo de sistema embarcado crítico.
Palavras chave: sistemas operacionais, sistemas embarcados, RTOS.
Abstract
Critical embedded systems are a specific type of embedded system where failures may result in human or
high value assets damages. Usually these systems deal with tasks that require quick responses, i.e., in real
time. Therefore, to meet the deadlines imposed by these tasks, hardware and the software used in these
devices should consider more robust requirements and operate in real time in order not to harm the system
as a whole. An important element in the design of these systems is the operating system, which should be a
real-time operating system (RTOS). Choosing an adequate RTOS for the specific type of embedded system
is essential for achieving good performance. Thus, making a survey of RTOSes available today, this paper
focuses on identifying the features offered by each operating system to evaluate and compare them using a
real experimental prototype. Based on the results, it’s defined the RTOSes best suited for use in each type of
critical embedded systems.
Key words: operating systems, embedded systems, RTOS.
SIICUSP 2014 – 22º Simpósio Internacional de Iniciação Científica e Tecnológica da USP
Introdução
Dispositivos responsáveis por realizar funções dedicadas são chamados de sistemas embarcados. Um
conversor digital é um exemplo: sua função é converter o sinal enviado pelas emissoras em um formato que
possa ser reproduzido por um televisor. Na maioria dos casos, os sistemas embarcados são realmente
“embarcados”, onde vários sistemas menores compõem um sistema maior. O decodificador áudio/vídeo
(responsável por receber um único sinal multimídia e produzir sinais de áudio e vídeo) e o decodificador de
canais (responsável por “quebrar” o sinal multimídia em canais separados) são sistemas embarcados
menores que compõem o sistema embarcado maior do conversor digital. Há também aqueles que
trabalham como um sistema independente, por exemplo, um roteador de rede. Pode-se generalizar a
definição de um sistema embarcado (embedded system, em inglês) como: sistemas computacionais com
forte integração entre hardware e software, desenhados para realizar uma função dedicada.
Dentre os sistemas embarcados, há aqueles que são chamados de críticos. Os sistemas embarcados
críticos são aqueles em que falhas podem levar a perdas humanas e ou de ativos de alto valor. Os domínios
da aviação e automobilística são exemplos clássicos onde custos, ciclos de produção curtos, robustez,
segurança, controle de emissão de poluentes e demandas específicas de cada cenário influenciam na
obtenção do produto final. Devido ao alto investimento em pesquisas nesta área, o comprometimento de um
produto destes leva a perdas financeiras consideráveis.
Sistemas embarcados críticos são comumente submetidos a situações extremas, como altas e baixas
temperaturas, altas velocidades e operações perigosas. O uso de tarefas em tempo real (i.e., que devem
executar suas funções em tempo determinado) é essencial. Caso contrário, o sistema como um todo pode
não prover as respostas necessárias em um tempo hábil, tornando-o sem utilidade e passível de falhas
(indesejável em embarcados críticos). Nessas condições, é inevitável projetar sistemas embarcados
considerando requisitos mais rígidos de tempo, desde o projeto até a concepção final dos mesmos.
Considerando essa necessidade específica, um passo importante para que a característica de tempo real
seja atingida é a escolha de um sistema operacional, que deve ser de tempo real (RTOS), adequado ao tipo
de sistema embarcado em questão.
Trabalhos correlatos
Existem vários RTOS na literatura e alguns estudos têm mostrado resultados comparativos sobre os
mesmos. O artigo de Parikh et. al. (2013) trata de parâmetros e fatores considerados fundamentais para
que os desenvolvedores de RTOS obtenham o melhor desempenho possível para o sistema como um todo.
Fornece ainda métodos de benchmarking para aferição de parâmetros aplicáveis a qualquer RTOS. Tan e
Nguyen (2009) discutem as diferenças entre RTOS e sistemas operacionais convencionais, evidenciando as
vantagens e desvantagens do uso de RTOS. Mostra ainda os métodos utilizados para avaliação, e concluise que não há um vencedor, pois cada RTOS pode ser mais indicado para um cenário em específico.
Objetivos
Embora os resultados dos estudos comparativos sejam relevantes, não existe um trabalho que compare os
principais RTOSes que determine qual é o mais indicado para cada tipo de sistema embarcado crítico.
Dessa forma, este trabalho possui como principal objetivo avaliar e comparar os principais sistemas
operacionais de tempo real disponíveis na atualidade em um protótipo real de sistema embarcado,
identificando assim as principais características e obtendo resultados práticos a respeito do desempenho
dos sistemas, auxiliando então na escolha do RTOS adequado para cada tipo de sistema embarcado.
Para atingir o objetivo principal, alguns objetivos específicos foram definidos: estudo do funcionamento de
sistemas operacionais em geral e especificamente dos RTOS; levantamento dos RTOS disponíveis na
atualidade, identificando os recursos e destaques de cada um; identificação dos requisitos mais comuns de
sistemas embarcados críticos e onde eles influenciam na decisão sobre os melhores RTOS aplicáveis a
estes sistemas; definição de um método de experimentação prática a fim de avaliar o desempenho dos
RTOSes; e por fim, com base nos resultados obtidos, conclusão de quais são os mais indicados para cada
aplicação de sistemas embarcados críticos.
SIICUSP 2014 – 22º Simpósio Internacional de Iniciação Científica e Tecnológica da USP
Materiais e Métodos
O estudo dos sistemas operacionais de tempo real permite identificar uma série de recursos que são
oferecidos pela maioria desses sistemas. Tratando-se de um sistema de tempo real, é essencial que o
gerenciamento desses recursos seja feito de forma eficiente a fim de que o sistema como um todo possa ter
um bom resultado final. Dessa forma, é importante avaliar individualmente o desempenho desses
componentes para obter uma comparação mais profunda entre os RTOSes. A aferição dos componentes é
feita com base em repetidos testes que permitirão uma avaliação estatística e válida dos resultados.
Após o levantamento inicial de RTOSes, com base em recursos-chave de sistemas de tempo real, uma
filtragem é realizada. Dessa forma garante-se que apenas os sistemas que possam fornecer as
características vitais aos sistemas embarcados críticos passarão pelo processo de benchmarking. É
importante ressaltar que alguns RTOSes podem não passar por avaliação prática por questões de
licenciamento, o que não é determinante para descartá-los do uso em sistemas embarcados.
Os RTOSes selecionados passarão pelo benckmarking em kits Gumstix Overo EVM. Esse kit é composto
por uma placa Overo Fire COM (computer on-module) com processador ARM Cortex-A8 OMAP3530 (720
MHz), memória RAM de 256MB e suporte a cartão de memória MicroSD e conexões Bluetooth e Wireless.
Acompanha uma placa de expansão Chestnut43 com conexões Ethernet, USB e console serial via miniUSB. Um monitor LCD touchscreen também integra o kit.
Resultados
Inicialmente buscou-se estudar as principais características do RTOS, a fim de identificar os componentes
que impactam no desempenho do sistema. O kernel de um RTOS deve fornecer as seguintes funções
essenciais: escalonamento de tarefas (scheduling method, i.e., determina qual task será executada na
CPU), despacho (i.e., trabalho necessário para transacionar a execução de uma task para outra),
intercomunicação e sincronização (troca de informações entre as diversas tasks).
No que diz respeito ao método de escalonamento de tarefas, são comumente encontrados os métodos:
preemptive scheduling e round-robin scheduling. O preemptive scheduling é baseado em prioridades: cada
task possui uma prioridade definida em sua criação, e a task em execução é aquela que possui a maior
prioridade entre as que estão prontas para executar. O round-robin scheduling fornece a cada task um
tempo de execução igual, partilhando a CPU entre elas. O despacho, seguindo o método de
escalonamento, realiza o trabalho de transacionar a execução de uma task para outra, transição chamada
de context switch.
Para intercomunicação e sincronização, os RTOSes geralmente oferecem: semáforos (binários, contadores
e mutex); filas de mensagens (para transferência de dados estruturada); pipes (para transferência de dados
serial); registradores de eventos, sinais e variáveis condicionais (para notificações); timers (para controle de
tempo); bloqueio de escalonamento (scheduler lock, ou também preemption lock); e bloqueio de
interrupções (interrupt lock).
À medida que a complexidade do sistema embarcado crítico aumenta, é importante lembrar e dar destaque
a alguns problemas que comumente aparecem no desenvolvimento de sistemas de tempo real: deadlock
(quando o sistema entra em um estado de bloqueio de tempo indeterminado ou infinito, podendo atrasar a
execução das tarefas) e priority inversion (quando uma task de maior prioridade é bloqueada em função da
execução de uma task de menor prioridade que guarda um recurso compartilhado). Se esses casos forem
ignorados, o sistema embarcado pode não atender suas expectativas.
Em levantamento inicial dos RTOSes, são notáveis as diferenças entre os sistemas. Os mais simples
(geralmente de licença de uso livre), mas não menos importantes, oferecem as características essenciais de
um RTOS, mas deixam a desejar em documentação, não facilitam a configuração, e possuem escassos
recursos de destaque. Os mais robustos (geralmente pagos) possuem documentação detalhada e uma
grande quantidade de recursos que facilitam o desenvolvimento de aplicações.
SIICUSP 2014 – 22º Simpósio Internacional de Iniciação Científica e Tecnológica da USP
Conclusões parciais
Embora a maior parte dos RTOSes utilize o preemptive scheduling como método principal de
escalonamento de tarefas, ainda há os que utilizam o round-robin scheduling. Em um sistema embarcado
de tempo real, é inevitável que as tarefas tenham trabalhos de diferente grau de importância. Assim, utilizar
puramente o método round-robin scheduling não satisfaz os requisitos de tempo real. No entanto, alguns
RTOSes oferecem esse método como um complemento do preemptive scheduling para alocar tasks de
mesma prioridade, o que pode ser útil em alguns sistemas embarcados.
A forma como o despacho em um RTOS é feito é irrelevante para a análise de desempenho de um sistema,
mas o tempo que o sistema operacional leva para fazer o despacho (chamado de context switch time) é um
dos tempos que mais impacta no desempenho do sistema, principalmente em aplicações onde há grande
quantidade de transições entre as tasks. Com bastante importância como o context switch time estão o
preemption lock time e o interrupt lock time, relacionados respectivamente ao preemption lock e ao interrupt
lock. Os tempos de execução das operações do RTOS relacionadas aos outros componentes (semáforos,
filas de mensagens, etc.) também devem ser levados em conta para avaliar o desempenho do sistema. Em
questão de quantidade de componentes, o RTOS que oferece mais recursos no nível do kernel tende a
possuir um melhor desempenho geral quando comparado com implementações em nível de aplicação.
O deadlock e a priority inversion são problemas fortemente indesejáveis em sistemas embarcados críticos.
O bloqueio indeterminado do sistema ou a inversão indeterminada de prioridades, respectivamente, pode
fazer o sistema embarcado não cumprir seus deadlines e, no pior dos casos, causar o comprometimento do
dispositivo. Apesar de o deadlock estar mais ligado a implementação da aplicação do que ao RTOS, muitos
sistemas oferecem formas de identificação e tratamento de deadlocks, recursos bastante importantes
principalmente em sistemas embarcados de extrema criticidade. Já com respeito à priority inversion, os
RTOSes costumam oferecer protocolos que amenizam sua ocorrência: priority inheritance protocol, ceiling
priority protocol, e priority ceiling protocol.
Apesar de o foco deste trabalho não ser a avaliação da documentação/suporte dos RTOSes, é válido
ressaltar que, mesmo não sendo uma regra, sistemas com melhor suporte ao desenvolvedor costumam
possuir um sistema operacional melhor implementado, além de que o desenvolvimento nessas plataformas
é facilitado.
Tratando-se de um trabalho em andamento, o projeto segue com o levantamento dos RTOSes candidatos à
avaliação, seguida da fase de instalações e processo de benchmarking com o método repetitivo de aferição
também a ser definido, baseando-se nas principais características de um RTOS aqui descritas.
Referências Bibliográficas
LI, Q.; YAO, C.; Real-Time Concepts for Embedded Systems. CMP Books. 2003.
LAPLANTE, P. A.; Real-time Systems Design and Analysis. IEEE Press. 2004.
JANUZAJ, V.; KUGELE, S.; LANGER, B.; SCHALLHART, C.; VEITH, H.; New Challenges in the
Development of Critical Embedded Systems — An “aeromotive” Perspective. In: MARGARIA, T.; STEFFEN,
B.; eds. Leveraging Applications of Formal Methods, Verification, and Validation. Springer. 2010.
PARIKH, H.; SHAH, R.; SHAH, U.; DESHMUKH, S.; "Performance parameters of RTOSs; comparison of
open source RTOSs and benchmarking techniques," Advances in Technology and Engineering (ICATE),
2013 International Conference on , vol., no., pp.1,6, 23-25 Jan. 2013.
TAN, Su-Lim; NGUYEN, Tran B, "Survey and performance evaluation of real-time operating systems
(RTOS) for small microcontrollers," Micro, IEEE , vol.PP, no.99, pp.1,1, Ago, 2009.
JAIN, R. The art of computer systems performance analysis: techniques for experimental design,
measurement, simulation, and modeling. Wiley professional computing. Wiley, 685 p., 1991.
WOLF, W. H. Computers as components: principles of embedded computing system design. The Morgan
Kaufmann Series in Computer Architecture and Design. Elsevier/Morgan Kaufmann, 507 p., 2008.
SIICUSP 2014 – 22º Simpósio Internacional de Iniciação Científica e Tecnológica da USP
Download