480 likes | 605 Views
Modelos e Linguagens de POO para aplicações Tempo Real. Necessidade de Modelos Uso de OO e Reflexão Computacional Modelos e Ling. OO e Reflexivos O Modelo RTR A Linguagem Java/RTR. Introdução. Sistemas Tempo Real (STR) Correção lógica + temporal
E N D
Modelos e Linguagens de POO para aplicações Tempo Real Necessidade de Modelos Uso de OO e Reflexão Computacional Modelos e Ling. OO e Reflexivos O Modelo RTR A Linguagem Java/RTR
Introdução • Sistemas Tempo Real (STR) • Correção lógica + temporal • Req. específicos: correção temporal e previsibilidade • Req. emergentes: distribuição, flexibilidade e integração • Aplicações tempo real • Tamanho, complexidade e criticalidade (hard x soft) • Necessidade de correção temporal • Desenvolvimento de STR • Fator Tempo deve ser considerado em todos os estágios e suportado pelo hardware, S.O., modelo e ling. programação • Programação de STR • Inadequação de modelos e linguagens convencionais • Soluções propostas: • Extensões tempo real : RTCC, RT-Modula2, Ada95 • Linguagens tempo real novas : Pearl, HI-Pearl, RT-Euclid
Introdução • Problemas encontrados: • Gerenciamento da complexidade / Falta de flexibilidade • Representação/Controle dos aspectos temporais • Dependência de ambientes operacionais específicos • Dificuldade de reuso, manutenção e integração • Busca de novos mecanismos • Estruturação de STR / Representação aspectos temporais Orientação a objetos Reflexão Computacional • Propostas recentes • RTC++, FLEX, RTT, RT-Java, RTSJ, R2, DRO/DROL e RT-MOP, Modelo RTR, Java/RTR
Orientação a Objetos e Reflexão Computacional no contexto Tempo Real • Orientação a Objetos • Sucesso do paradigma • Uso de Objetos é Atrativo • Gerenciamento da complexidade • Características básicas favorecem reuso. flexibilidade e Manutenção • Concorrência e distribuição • Problemas • Não suporta representação e controle das Restrições Temporais • Ineficiência e Imprevisibilidade • STR Hard x STR Soft
Orientação a Objetos e Reflexão Computacional no contexto Tempo Real • Reflexão Computacional • Raciocinar e atuar sobre sí próprio • Monitorar e Modificar • Estrutura e Comportamento do Sistema • Qualquer Paradigma, OO em particular • Abordagem de Meta-Objetos • Separa Aspectos Funcionais de Aspectos não-funcionais • Ajustes dinâmicos de estrutura e comportamento • Torre reflexiva
Orientação a Objetos e Reflexão Computacional no contexto Tempo Real • Vantagens do uso de Reflexão • Simplificação da programação • Modularização • Reuso e Manutenção • Incremento da Flexibilidade • Controle do usuário sobre o sistema • Extensibilidade e evolução • Áreas de aplicação • SO, SD, Projeto de Linguagens, Tolerância a Falhas, Concorrência, Trabalho Cooperativo e Tempo Real
Reflexão Computacional e Tempo Real • Abordagem promissora • Flexibilidade e gerenciamento • Adequação à questões correlatas a TR • Potencialidades • Adição/modificação de construções temporais • Definição de comportamento alternativo • Adequação do algoritmo de escalonamento
Reflexão Computacional e Tempo Real • Potencialidades • Ajustar Tempo de Execução • Análise de escalonabilidade dinâmica • Implementar protocolos TR • Independência entre aplicação e ambiente operacional • Incrementar a portabilidade • Problemas • Desempenho e previsibilidade • Informações a serem refletidas
Modelos de Programação TR OO • STR devem satisfazer: • Correção Temporal • Previsibilidade • Segurança de Funcionamento • STR também devem satisfazer: • Modularidade, Reusabilidade, Manutenibilidade, Distribuição, Flexibilidade e Integração com Sistemas não-TR
Modelos de Programação TR OO • Caracterização • Sistema computacional de controle e Ambiente a ser controlado • Estrutura e semântica de funcionamento deve representar integralmente aspectos funcionais e de controle temporal • Aspecto central no desenvolvimento • Base para Metodologias e LPTR
Modelos de Programação TR OO • Modelo RTO.K (Kim e Kopetz, 92, 94, 96) • Extensão do modelo de Objetos • Introduz • Métodos Espontâneos (ativados por tempo) • Intervalo, Frequência, Start e Deadline • Associação de deadlines às ativações • Dados de tempo real (duração máxima de validade) • Restrição básica de concorrência • Unidade de armazenamento atômica • Comunicação • chamadas podem ou não ser bloqueadas • Independência de plataforma e linguagem
Modelos de Programação TR OO • Modelo RTC++ (Ishikawa 92) • Modelo implícito à LTR RTC++ • Objetos ativos (com rest. Temporais) • Executam concorrentemente • RT – métodos e comandos • Exceções temporais • Concorrência • Regiões criticas (c/ RT) • Comunicação síncrona • Reply – sender continua • Filosofia de programação – Ling. RTC++
Modelos de Programação TR OO • Modelo DRO (Takashio e Tokoro, 93) • Extensão distribuida do modelo OO • Best-effort e least-suffering • Invocação polimórfica • Métodos com RT • Restrições Temporais • Tarefas Periódicas (métodos ativos) • Tempo de execução dos métodos • Controle reflexivo • Concorrência – estados habilitados • Comunicação – polimorfismo temporal • Linguagem DROL
Modelos de Programação TR OO • Outros Modelos • RTT – RealTimeTalk • Framework para Modelagem e Projeto de STR • Modelo R2 (Real-Time Reflective) • OO e Reflexão Computacional • STR soft • Linguagem ABCL • RT-MOP • Baseado em grupos de escalonamento • Meta-objetos
Modelo RTR • Objetivos • Estruturação e programação de STR • Favorecendo correção temporal • Flexibilizando representação/controle dos aspectos temporais • Facilitando gerenciamento da complexidade • Reuso/manutenção de software tempo real • Extensão/evolução de sistemas • Independência de linguagem e de ambiente operacional • Caracterização • Objetos, Concorrência, Reflexão e Tempo Real
Modelo RTR • Reflexão no modelo RTR • Monitorar / Modificar - Estrutura / Comportamento • Abordagem de meta-objetos • objetos-base - questões funcionais • meta-objetos - questões de controle • Vantagens potenciais • Simplificação, flexibilidade • políticas de controle a nível de aplicação • capacidade de reuso e manutenção • Focos de utilização • Adição/modificação de construções temporais • Alteração/substituição de algoritmos de escalonamento • Manipulação de exc. temporais, concorrência e sincronização • Controle do comportamento : tempo, carga, QoS,... • Tempo Real • representação/controle de restrições temporais • Escalonamento tempo real : meta-nível da aplicação • Abordagem de melhor esforço (“best-effort”)
Modelo RTR Estrutura geral /Dinâmica de funcionamento
Modelo RTR Descrição detalhada • Objetos-base de tempo real (OBTR) • Similar aos objetos convencionais • Representação de restrições temporais • Declaração de novos tipos de restrições temporais RT-Type ActivationInterval = (StartTime, EndTime) • Associação de restrições temporais e manipuladores de exceções aos métodos do objeto void Metodo1(...), ActivationInterval (T1, T2),Exceçao1(...) • Ativação de métodos com atributos temporais ObjetoX.Metodo1(...), (300, 1000) • Cláusula Timeout
Exemplo de um OBTR OBTRclass ClasseExemplo begin // definição de novos tipos de restrições temporais RT-TypeStart-at = (StartTime, Deadline, MET); // declaração das variáveis da classe ... // declaração dos métodos: void Met1 ( ... ), Aperiodic (D, MET=20), ExcMet1( ); begin ... end; void Met2 ( ... ), Periodic (P, Fim, MET=10),ExcMet2( ); begin ... end; void Met3 ( ... ), Aperiodic(D, MET=15), ExcMet3 ( ); begin ... end; void Met4 ( ... ), Start-at (Tinicio,D,MET=10),ExcMet4; begin ... end;. end
Meta-objetos gerenciadores (MOG) • Funções básicas • Gerenciamento de pedidos de ativação • Controle de concorrência • Especificação/controle de sincronização • Controle das restrições temporais • Interação com MO Escalonador e MO Relógio • Manipulação de exceções temporais • Ativação de métodos dos objetos-base • Estrutura geral MOG class id-meta-classe begin <Seção de gerenciamento> <Seção de sincronização> <Seção de exceções temporais> <Seção de restrições temporais> end
Exemplo de um MOG MOG class MetaClasseExemplo; begin // Declaração das variáveis ... // *** seção de gerenciamento *** void RecebePedido (MetId, ... ) begin ... end; void ProcessaPedidoSRT (MetId, ... ) begin ... end; void LiberaPedidoDeAtivacao (MetId) begin ... end; void FimDeExecucao(MetId) begin ... end; // *** seção de sincronização *** Path 2 : (Met1 ; Met3) end; bool VerificaSincronizacao(MetId) begin ... end; voidAtualizaEstSincronizacao (MetId) begin ... end; // *** seção de exceções temporais *** void ExcMet1 ( ... ) begin ... end; ... // *** seção de restrições temporais *** void Periodic(MetId, ExcId, P, Fim, MET) begin ... end; void Aperiodic (MetId, ExcId, D, MET) begin ... end; void Start-at (MetId, ExcId, Tinicio, D, MET) begin ... end; end;
RT Aperiodic void Aperiodic(MetId, ExcId, D, MET) begin id-MOE.Escalona (id-MOG, MetId, D) if D > (current-time + MET) then id-MOG.LiberaPedidoDeAtivação (MetId); if D > (current-time + MET) then id-OBTR.MetId ( ... ); id-MOG.AtualizaEstadoSincronizacao(MetId) else id-MOG.ExcId ( ... ) end if id-MOG.FimDeExecução ( ... ) else id-MOG.ExcId ( ... ); id-MOE.LiberaProximoPedido ( ) end if end;
Meta-objeto escalonador (MOE) • Funções básicas • Recebe, ordena e libera pedidos de ativação • Implementa a política de escalonamento • Mapeia decisões de escalonamento para suporte subjacente • Vantagens • Flexibilidade na escolha da política de escalonamento • Independência de ambiente operacional • adequação às especificidades das aplicações
Meta-objeto relógio (MOR) • Funções básicas • Fornecer uma base de tempo • Programar ativações para um tempo futuro • Efetuar ativações time-trigger • Controlar passagem do tempo • detectar violações temporais
Potencialidade / Expressividade do Modelo RTR • Facilidades básicas inerentes • Suporte a facilidades avançadas • Reflexão de aspectos não temporais • Cláusula “CATEGORIA” • Ajuste dinâmico dos atributos das restrições temporais • Tempo máximo de execução, Período, Deadline, ... • Análise de escalonabilidade dinâmica • Política de admissão de tarefas • Escalonamento tempo real • Mudança dinâmica da política • uso simultâneo de diferentes políticas • Controle reflexivo da disponibilidade de memória • Criação de objetos - operação reflexiva • gerenciador de memória determinista
Polimorfismo Temporal • Computação imprecisa - N-versões • Exemplo: RT-Type TimingPolymorphic = (Deadline, <MethodList>); ... void DisplayImagem( ... ), TimingPolymorphic (D, Met1=”DI-qA”, Met2=” DI-qB”, Met3=” DI-qC”), IdExcecaoTemporal ( ) ... void DI-qA ( ... ) // MET = 150 begin ... end; void DI-qB ( ... ) // MET = 100 begin ... end; void DI-qC ( ... ) // MET = 50 begin ... end; • Escalonamento “task-pair” • versão hard, versão soft
sincronização multimídia • Aspectos temporais • questão de sincronização • tratamento “best-effort” • Relações de sincronização • Modelo de intervalos (Allen 83) - 13 relações • Modelo de intervalos estendido (Wahl 94) • 29 relações - 10 operadores • Representação dos operadores no modelo RTR • Restrições temporais básicas • ActivationInterval, • Aperiodic, Periodic, • Start-at
Exemplo :Representação de uma animação parcialmente comentada por um vídeo “Animation while (d1, d2) Audio” void Animation ( ... ), ActivationInterval(StartTime, EndTime), Exc1() begin ... end; void Audio( ... ), ActivationInterval (StartTime, EndTime), Exc2() begin ... end; ... @Animation ( ... ), (T1, T2); @Audio ( ... ), (T1 + D1, T2 - D2); ...
Extensão distribuída do modelo RTR • Adoção da arquitetura CORBA • Interoperabilidade, transp.de distribuição e heterogeneidade • Meta-objetos de Comunicação • MetaStub / MetaDII e MetaSkeletons • Comportamento tempo real • Adoção de políticas “best-effort” • Restrições temporais controladas localmente • timeouts (cliente) e deadlines (servidor) <id-objeto>.<id-método> (<args>),(<args-temp>) Timeout ( <valor-timeout> ), Exception begin case reject : <manipulador de exceção> case abort : <manipulador de exceção> case timeout : <manipulador de exceção> end
Exemplo de aplicação • Composição de um documento multimídia • Protótipo da extensão distribuída • Mapeamento do modelo RTR para SOLARIS 2.4 • Implementação usando ORBLINE 1.0
Estrutura básica de um cliente de mídia OBTRClass ClienteMídia begin ... RequisitaMídia (...),Periodic (StartTime, Period, EndTime , MET), ExceçãoRequisitaMídia () begin ... ServidorDeMídia.RecuperaMídia(Buffer[I], ...), (ValorDeadline) Timeout(ValorTimeout), Exception begin case reject : < manipulador de exceção reject > case abort : < manipulador de exceção abort > case timeout : < manipulador de exceção timeout > end ... end ApresentaMidia (...), Periodic (... ), ExceçãoApresentaMidia() begin ... end; // outros métodos do objeto-base ... end; MOGClass ClienteMídia begin ... end;
Estrutura básica de um servidor de mídia OBTRClass ServidorDeMídia begin ... RecuperaMídia (...), Aperiodic (Deadline, MET=30), ExceçãoRecuperaMídia () begin ... end; // Outros métodos do servidor ... end; MOGClass ServidorDeMídia begin ... // seção de exceções : ExceçãoRecuperaMídia() begin ... end; ... // seção de restrições temporais : Aperiodic (...) begin ... end; end;
Java / RTR • Caracterização • Extensão da linguagem Java (TM Sun Microsystems Inc.) • Implementação explícita do modelo RTR • Objetivos • Viabilizar programação de STR segundo o modelo RTR • Uso da tecnologia Java no desenvolvimento de STR • Extensões básicas • Definição de um esquema reflexivo • Representação / controle dos aspectos temporais • Pré-processador Java/RTR - Java • Análise léxica, sintática e semântica das extensões RTR • Mapeamento das extensões para construções Java
Estrutura reflexiva de Java/RTR • Objetos e meta-objetos • Representados por diferentes tipos de classes • Estrutura geral de classes e meta-classes [<ClassModifiers>] [<RTRoption>] class <Identifier> [extends<TypeName>] [implements <TypeNameList>] <ClassBody> onde <RTRoption> identifica o tipo de classe Java/RTR • RTBC - Real-Time Base-Class • MMC -Manager Meta-Class • SMC - Scheduler Meta-Class • CMC - Clock Meta-Class • classe-base convencional, assumida por default
Classes RTBC • Alteram classes Java convencionais com as seguintes extensões / proibições: • Declaração de tipos de restrições temporais RT-Type <RTIdentifier> = [<RTType> , ] (<RTAtributesList>) • Associação de restrições temporais, manipuladores de exceções e categorias [<M-Modifiers>] <ResultType> <M-Identifier> ([<ParameterList>]) [throws <TypeNameList>] [,<TimingConstraint >] [,<TimingExceptionHandler>] [, category = <CategoryIdentifier>] <MethodBody> • Associação de par. temporais / timeout à ativação de métodos • Proibição criação/manipulação explícita de threads de controle • Introdução de mensagens assíncronas
Meta-classes MMC • Todas as facilidades Java • Especificação da sincronização via “path-expression” • Implementam interface padrão (Protocol-MMC) • MMC padrão (Standard-MMC) • Programadas pelo usuário (uma por RTBC da aplicação) • Novos tipos de restrições temporais • Manipuladores de exceções • Procedimentos de controle (categorias)
Classes Scheduler e Clock • Meta-classes SMC e CMC • Todas as facilidades Java • Interface padrão / Meta-classe padrão • Classes convencionais • Funções auxiliares • Tarefas não tempo real (RTBC’s especiais)
Java / RTR • Criação de objetos/meta-objetos • MO manager - criados implicitamente sempre que um objeto-base tempo real for criado • MO scheduler / MO clock - criados implicitamente • Ativação de mét. de obj. tempo real • Forma reflexiva • ativação desviada para MO manager correspondente • mensagens síncronas ou assíncronas (@) • parâmetros temporais / cláusula timeout • Concorrência / sincronização • Esquema misto • Meta-classes - mecanismos padrão de Java • Classes RTBC - comportamento proposto no modelo RTR • controle via meta-objeto manager • necessidade de controle explícito sobre as threads ativas
Análise do modelo RTR • Vantagens • Facilidades relativas a estruturação • Flexibilidade para representação / controle aspectos temporais • Reuso/manutenção na presença do tempo • Aberto a novas técnicas e mecanismos tempo real • Extensibilidade • Independência de ambiente operacional • Limitações • Previsibilidade não inerente • Overhead devido a reflexão • Comparando com outros modelos tempo real • Expressividade, no mínimo, eqüivalente • Reúne características dispersas nos demais modelos • + Flexível, + Adaptável e + Independente
Análise da linguagem Java/RTR • Vantagens • Expressividade/Flexibilidade - representação de asp. temporais • Facilidade no entendimento / gerenciamento da complexidade • Capacidade de reuso / manutenção • Independência de ambiente operacional • Tratamento reflexivo das questões temporais • Independência de arquitetura de Java • Redução do “Gap”semântico entre projeto e implementação • Tratamento integrado concorrência x tempo real
Análise da linguagem Java/RTR • Limitações • Esquema misto de concorrência / sincronização • Previsibilidade • presença de mecanismos / construções não deterministas • limitação comum às demais LTROO • Necessidade de disciplina de programação, substituição de mecanismos
Trabalhos correlatos • Extensão distribuida • Simulação em Java • Tratutor Java/RTR – Java • Tradutor Java-RTR – RTSJ (Eclipse) • Mecanismo de Adaptação para TR usando Computação Imprecisa • Sincronização Multimidia
Sincronização em Java class Buffer { private int contents; private boolean avaliable = false; public synchronized int get () { while (avaliable == false) wait (); avaliable = false; notify (); return contents; } public synchronized void put (int value) { while (avaliable == true) wait (); contents = value; avaliable = true; notify (); } }
Sincronização em Java/RTR RTBC class Buffer { private int contents; public int get (); { return contents; } public void put (int value) { contents = value; } } MMC class Meta_Buffer extends Standard-MMC { ... // seção de sincronização path put ; get end; protected boolean VerifySynchronization (...) { ... }; protectedvoid UpdateSynchronizationState (...) { ... }; ... }