Ver-mais-docente Rômulo
Prof. Rômulo Silva de Oliveira
- Áreas de Interesse: Sistemas de Tempo Real, Sistemas Operacionais, Escalonamento
- Doutorado: Universidade Federal de Santa Catarina, UFSC, Brasil (1997)
- Bolsista de Produtividade CNPq – Nível 2
- CV Lattes
- Página pessoal: http://www.das.ufsc.br/~romulo
- E-mail: romulo@das.ufsc.br
Sistemas de Tempo Real
São aqueles sistemas computacionais submetidos a requisitos de natureza temporal. Nestes sistemas, os resultados devem estar corretos não somente do ponto de vista lógico/funcional, mas também devem ser gerados no momento correto. Nesse tipo de sistema existem deadlines (prazos limite) para execução das tarefas que, caso não sejam atendidos, podem levar ao comprometimento do sistema, perdas financeiras ou até mesmo a consequências catastróficas (perda de vidas humanas, por exemplo).
Pode-se encontrar exemplos de aplicações com requisitos de tempo real nas mais diversas áreas:
- Veículos: Automação em aeronaves, automóveis, sondas espaciais
- Entretenimento: Videogames, vídeo sob demanda, áudio
- Telecomunicações: Centrais telefônicas, videoconferência
- Indústria: Controle de processos, robôs, aquisição de dados
- Financeiro: Transações em bolsa, negociação automática
- Defesa: Radar, sonar, sistema guia em mísseis
Objetivo da Pesquisa
O objetivo geral desta área de pesquisa é estudar, propor e avaliar modelos de programação e suportes de execução para sistemas com requisitos de tempo real.
É necessário garantir que os deadlines serão cumpridos, ou pelo menos garantir que a perda de deadlines não comprometerá o sistema.
Qual o propósito dos trabalhos na área de tempo real ?
Uma aplicação com requisitos temporais pode ser comparada a uma “prova de rally” ou uma “gincana”. Em um dado momento, uma atividade deve ser liberada, com uma certa missão, e deve ser concluída até um dado instante de tempo. Para acontecer, essa atividade precisa de recursos, pode ser dividida em subatividades, com algumas partes necessariamente sequenciais, outras podendo ser realizadas em paralelo, estabelecendo relações de precedência internas. Várias subatividades podem apresentar relações de exclusão mútua por conta de recursos comuns que necessitam (por exemplo, o processador, uma estrutura de dados, etc.). O tempo entre a liberação de uma atividade e o momento de sua conclusão é chamado de tempo máximo de resposta, e é a principal métrica utilizada para garantia do atendimento aos deadlines do sistema.
Se nada atrapalhasse essa atividade, uma vez definidas as suas disputas internas, seu tempo máximo de resposta poderia ser calculado através da determinação de seu caminho crítico, ou seja, do fluxo de execução do programa que gera o maior tempo de resposta possível. Esse tempo teria que considerar os não determinismos nos tempos de execução, que podem ser causados por memória cache, desvios no fluxo de execução, etc.
Ocorre que, em geral, múltiplas atividades são executadas de forma concorrente e interferem entre si, ou seja, a execução de uma tarefa pode interromper e atrasar a execução de outras. É muito difícil impedir que uma atividade atrapalhe (interfira em) outra, em função da exclusão mútua necessária com respeito a determinados recursos. No caso da execução de múltiplas atividades, sempre existirão interferências.
O que pode ser feito então?
Calcular a interferência possível no sistema permite saber se a aplicação conseguirá ou não cumprir seus requisitos temporais (deadlines).
Também pode-se construir sistemas onde existam mecanismos claros que controlem a interferência entre tarefas. De posse de mecanismos de controle completos sobre a alocação de recursos, é possível implementar políticas de privilégio (atribuição de prioridades de atendimento a tarefas) que definem como a interferência deve acontecer. Sem o emprego de mecanismos desse tipo, a implementação de políticas de privilégio não é possível.
Em resumo, os trabalhos na área de tempo real podem ser a grosso modo classificados em trabalhos de análise (identificar e quantificar o efeito das fontes de interferência e trabalhos de síntese (criar mecanismos de gerência e políticas de alocação de recursos).
Alguns temas de pesquisa possíveis (lista não exaustiva)
Como lidar com computadores multicore ?
Escalonamento é mais complexo e existem anomalias temporais.
Como especificar sistemas de tempo real não críticos (nos quais a perda de deadlines não tem consequências graves, apesar de reduzir o benefício da aplicação) ?
Pode-se usar percentual de deadlines perdidos, probabilidade de uma rajada de deadlines perdidos, atraso máximo, atraso médio. Pode-se também considerar sob que condições de execução e/ou dados de entrada essas perdas seriam admissíveis.
Como verificar sistemas de tempo real não críticos ?
Desenvolver abordagens para a definição de casos de teste temporais e identificação de condições para execução desses testes. Uma possibilidade é a utilização de simulação para verificação do atendimento a deadlines.
Como lidar com máquinas virtuais ?
Máquinas virtuais são pervasivas no ambiente corporativo, começam a ser usadas em supervisão industrial, mas elas não foram feitas pensando em tempo real. Praticamente nada existe sobre aplicações de tempo real sobre máquinas virtuais.
Como analisar/configurar o Linux para aplicações de tempo real ?
Diversos aspectos do kernel do Linux podem ser adaptados para aplicações de tempo real.
Artigos publicados:
http://www.das.ufsc.br/~romulo/publicacoes.html