modelos e linguagens de poo para aplicações tempo real necessidade de modelos uso de oo e...
TRANSCRIPT
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
temporaisOrientação a objetosReflexã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
META-OBJ ETO
RELÓGIO
META-OBJ ETO
ESCALONADOR
Meta-ObjetoGerenciador
Objeto-Base
Nível -MetaNíve l -Base
Meta-ObjetoGerenciador
Objeto-Base
Meta-ObjetoGerenciador
Objeto-Base
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
OBTR class ClasseExemplobegin
// definição de novos tipos de restrições temporais RT-Type Start-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 geralMOG 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 MOGMOG 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; void AtualizaEstSincronizacao (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 ifend;
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ásicasFornecer uma base de tempoProgramar ativações para um
tempo futuroEfetuar ativações time-triggerControlar passagem do tempo
detectar violações temporais
Potencialidade / Expressividade Potencialidade / Expressividade do Modelo RTRdo 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 = 150begin ... end;void DI-qB ( ... ) // MET = 100begin ... end;void DI-qC ( ... ) // MET = 50begin ... 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);...
t
Audio
Animation
12
T1 T2
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
Estrutura do modelo RTR distribuído
OBJECT REQUEST BROKER
SERVIDORCLIENTE
Meta Stub / DIIMeta Stub / DIIMeta-ObjetoGerenciador
Objeto-Base
Meta Stub / DII
Meta Stub / DIIMeta Stub / DIIStub / DII
Meta Stub / DIIMeta Stub / DII Meta-ObjetoGerenciador
Objeto-Base
Meta Skeleton
Meta Stub / DIIMeta Stub / DIISkeleton
META-OBJETORELÓGIO
META-OBJETOESCALONADOR
META-OBJETORELÓGIO
META-OBJETOESCALONADOR
Nível-MetaNível-Base
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
Servidorde Texto
Servidorde Som
Cliente de Som
Composição doDocumento Multimídia
Servidorde Imagem
Clientede Imagem
Clientede Texto
Estação A Estação B Estação C
Estação X
Estrutura básica de um cliente de mídiaOBTR Class 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;
MOG Class ClienteMídiabegin ... end;
Estrutura básica de um servidor de mídia
OBTR Class ServidorDeMídiabegin
... RecuperaMídia (...), Aperiodic (Deadline, MET=30),
ExceçãoRecuperaMídia () begin ... end; // Outros métodos do servidor ...end;
MOG Class ServidorDeMídiabegin
... // 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
Análise Comparativa Java
RTR RT
Java RTC
++ Drol R2 +
ABCL Flex Ada
9x RTT
Análise de escalonabilidade
* * * - - * * 3
Construções com TME previsível
0 1 0 0 0 0 0 3
Flexibilidade 3 2 1 2 2 2 1 0
Suporte a concorrência 3 3 2 - 2 0 3 -
Reuso e manutenção 3 2 2 2 2 1 1 2
Exceções temporais 3 3 3 3 2 2 2 2
Robustez 2 2 2 2 2 2 3 3
Ger. da complexidade 3 2 2 2 2 1 1 2
Acesso às políticas 3 1 0 1 3 0 1 0
Rest. temp. explícitas 3 2 3 3 3 3 1 2
Novas rest. temporais 3 1 0 0 2 1 0 0
Novos alg. escalonam. 3 1 0 0 3 0 1 0
Adequação a STR Hard 1 2 2 2 1 2 2 3
Adequação a STR Soft 3 2 1 2 3 2 2 1
Independência de ambiente operacional
3 3 0 0 - 2 2 2
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/RTRRTBC 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 (...) { ... }; protected void UpdateSynchronizationState (...) { ... }; ... }
Operadores do modelo de intervalo
A
B efore (1 ) B eforeen d of (1 ) C obeg in (1 ) C oen d (1 )
W h ile (1 ,2 ) D elayed (1 ,2) S ta r tin (1 ,2)
E n d in (1 ,2 ) C ross (1 ,2 ) O ver lap s (1 ,2 )
A A A
B B B B
A A A
B B B
A A A
B B B
1 11
1
1 21
2 1 2
12
12
12
3