Tempo real

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Na ciência da computação, a expressão tempo-real, é uma expressão que se refere a sistemas em que o tempo de execução de uma determinada tarefa é rígido. O tempo de execução de uma operação pode ser muito curto ou não. O que importa para este tipo de sistema é que a tarefa seja executada. O sistema deve ser implementado visando principalmente a ordem de agendamento das tarefas e o gerenciamento de recursos para que possa executar a tarefa no tempo correto ou informar imediatamente que a tarefa não poderá ser executada.

Tempo-Real em Sistemas Abertos

O desenvolvimento de aplicações distribuídas em ambientes heterogêneos consiste em um grande desafio para a indústria de software. Da mesma forma, o cumprimento de requisitos de tempo-real neste tipo de sistema tem se mostrado altamente necessário. Neste artigo nos preocuparemos com o desenvolvimento de aplicações distribuídas com restrições do tipo softreal-time, que permitam a adoção de uma política de melhor esforço (best-effort). Uma série de aplicações, envolvendo de sistemas multimídia a sistemas bancários, apresentam estas características.

Apresentaremos um modelo que tem por objetivo simplificar a programação de sistemas tempo-real em redes de computadores heterogêneas, que apresente, entre outras características, transparência em relação à distribuição e à heterogeneidade do sistema, e flexibilidade e adaptabilidade no desenvolvimento de aplicações. O processamento tempo-real introduz novos requisitos relacionados a correção temporal e performance. Este comportamento deve ser provido pelo modelo, que deve fornecer meios de expressar e implementar restrições de tempo-real em sistemas abertos e distribuídos.

Outro dos benefícios proporcionados pela utilização de reflexão computacional no modelo consiste em permitir que seja escolhida dinamicamente a ordem de execução dos métodos de objetos de modo a satisfazer a política do melhor esforço. No modelo, um meta-objeto pode também selecionar, a partir do recebimento de uma requisição, entre múltiplas versões de um método, baseando-se nas disponibilidade de tempo para execução deste, numa estratégia de computação imprecisa [Liu94]. Antes do tempo de execução, o modelo permite que seja modificado o algoritmo de escalonamento, adotando uma política que seja mais adequada a uma aplicação específica.

Sistemas Abertos e Tempo-Real

O rápido crescimento das redes de computadores e os avanços obtidos na tecnologia das máquinas microprocessadas vem permitindo o processamento em tempo-real de grande quantidade de dados, inclusive com o tratamento simultâneo de sinais de áudio e vídeo. A distribuição e o controle da funcionalidade de tempo-real são requisitos intrínsecos deste tipo de sistema. Tais sistemas, por serem em geral muito grandes e naturalmente heterogêneos, nos levam a considerar uma arquitetura aberta na estruturação do modelo tempo-real. Além disso, o conceito de objetos distribuídos é implementado utilizando o modelo clássico de cliente -servidor, que permite que clientes remotos interajam com objetos servidores através de invocações de métodos, independentemente da linguagem ou do compilador utilizado, ou da arquitetura da máquina alvo.

O processamento tempo-real deve incluir a noção de restrições de tempo de execução de tarefas do sistema, tanto no cliente quanto no servidor da aplicação. O tempo gasto na comunicação com o servidor é significante, e não pode ser ignorado pelo cliente. Desta forma, devemos analisar cuidadosamente aspectos de temporalidade tanto no cliente quanto no servidor da aplicação.

Em sistemas abertos temos as seguintes características relacionadas à temporalidade das tarefas do sistema [Tak92]: · o tempo de comunicação não pode ser previsto; · relógios locais não podem ser sincronizados; · a carga dos nós do sistema é determinada dinamicamente, sendo portanto imprevisível.

Com isto, concluímos que os objetos envolvidos em uma transação devem examinar suas restrições baseados em seus relógios locais. Desta forma, o cliente que invoca um método em um objeto servidor deve controlar um tempo máximo de espera da resposta (timeout) baseado no seu relógio local, enquanto o objeto servidor possui um tempo para execução do método (deadline) menor, que será especificado na chamada e se tornará uma propriedade do método sendo executado, controlado com base no relógio do seu nó da rede.

O Modelo Tempo-Real para Sistemas Abertos

Introdução da Noção de Tempo no Modelo: O modelo proposto possui mecanismos para verificação do cumprimento de restrições temporais impostas pela aplicação e pelo ambiente quando da ativação de um método.

Restrições temporais devem ser verificadas tanto no objeto cliente quanto no objeto servidor. O cliente deve especificar um timeout dentro do qual deve receber uma resposta do servidor para a chamada do método, baseado em suas restrições temporais. Neste tipo de sistema fica impossibilitada uma análise de pior caso, o que faz com que o timeout seja um valor estimado.

No servidor, deve ser verificado o cumprimento de um deadline, determinado em função do timeout do cliente e do tempo estimado de propagação da mensagem na rede. Além da imposição de restrições temporais, podem ser associadas restrições de sincronização a métodos de objetos base, que estabelecem a ordenação que deve ser obedecida na execução destes. Estas restrições podem ser descritas na forma de grafos de precedência, álgebra de processos ou path-expressions.

Tratamento de Exceções

A violação de uma restrição temporal de um método deve levar o meta-objeto correspondente a um estado de exceção. Existem três tipos de exceções temporais: · exceção do tipo reject: acontece quando a requisição do método chega ao meta-objeto servidor e este verifica que não pode executá-lo respeitando as restrições temporais e de sincronização impostas; · exceção do tipo aborto: quando o método já havia começado a se executar mas não foi possível concluí-lo respeitando o deadline; · exceção do tipo timeout: a execução do método é abortada pois o timeout imposto pelo cliente se esgotou; esta exceção é detectada pelo cliente e comunicada ao meta-objeto servidor.

Exceções são tratadas por manipuladores de exceção (exception Anders) associados aos métodos. Manipuladores de exceção são métodos especiais que tem por função, nos casos em que um estado de exceção for atingido, executar um procedimento alternativo e recompor o estado do objeto base.

A recuperação do estado do objeto torna-se possível através do armazenamento do estado do objeto base, antes da execução de um método, no espaço de endereçamento do meta-objeto correspondente, na forma de variáveis de estado. O manipulador de exceção do método deve, quando ativado pela ocorrência de uma exceção temporal, utilizar a informação armazenada pelo meta-objeto para restaurar o estado do objeto base.

Conclusões e Perspectivas

Consideramos que o modelo proposto atende os requisitos necessários para um sistema aberto e tempo-real. Tais requisitos foram atendidos utilizando técnicas de programação orientada a objetos e reflexão computacional, aliadas à estruturação do sistema segundo o paradigma cliente - servidor. Concluído o trabalho de mapeamento do modelo sobre o suporte de execução, deve ser construído um protótipo do modelo sobre a plataforma de execução proposta. Um exemplo de aplicação com requisitos de tempo-real sofá, possivelmente relacionada a multimídia, deve ser implementado sobre este protótipo.

Ver também[editar | editar código-fonte]

Ícone de esboço Este artigo sobre Informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.