Upload
phamnhu
View
214
Download
0
Embed Size (px)
Citation preview
1
A Linguagem Java no contexto de Sistemas de Tempo Real
Alunos: Hugo Tácito Azevedo de Sena – 200318314
Ricardo Alexandre da Rocha Dias - 200618318
Sumário
ObjetivosImportância dos sistemas embutidos e de tempo realSistemas em tempo realHW e ambientes de STRSoftware em STRAplicações de Tempo RealEstratégias de DesenvolvimentoA Linguagem de programação JavaDesenvolvimento de STRJava e STRJava: LimitaçõesJava: soluções para STRRTSJ: Real Time Specification for JavaJava Real Time SystemJava RTS: Características e Benefícios
2
Objetivos
Mostrar a importância dos Sistemas de Tempo Real
Mostrar como a plataforma Java está inserida nesse contexto.
Importância dos Sistema Embutidos e de tempo real
Presentes em diversas áreas– Ex: Transação bancária, em automóveis
Maior parte dos dispositivos que utilizamos possui processador digital responsável pelo controle das funcionalidades
Pode-se destacar um grupo de sistemas que são limitados pelo tempo – Sistemas em Tempo Real
3
Sistemas em Tempo Real
Diferencial:– respostas devem retornar ao ambiente em tempo
hábil
Controle de processos complexos requer confiabilidade máxima
STR ambiente, hardware e software
HW e ambientes de STR
Alguns ambientes foram comentados na aula passada– Ex: Windows CE e Solaris
O software em STR será abordado
4
Software em STR
Qual a estratégia para desenvolvimento de aplicações de tempo real em termos de software?– Linguagens Específicas x Linguagens de
propósito geral
Aplicações de Tempo Real
Requisitos difíceis de serem expressos por linguagens de propósito geral
Implementação em linguagens de propósito geral é uma tarefa complexa
Código tende a utilizar mecanismos específicos e de baixo nível do SO
5
Aplicações de Tempo Real
Alta complexidade de desenvolvimento e manutenção
Abstrações mais expressivas Robustez, legibilidade e manutenibilidade
Estratégias de Desenvolvimento
Duas abordagens principais:
– Utilizar linguagens específicas que propõem novas abstrações para facilitar o desenvolvimento
– Estender uma linguagem de programação de propósitos gerais
6
Linguagens Específicas
Vantagens– São menos expressivas– Mais simples– Possuem menos abstrações que linguagens de
propósitos gerais– Facilidade na verificação de propriedades
relativas à restrições temporais– Tende a reduzir a quantidade de código a ser
desenvolvido
Linguagens Específicas
Desvantagens:– Escassez de programadores no mercado– Disposição de programadores para aprender
novas linguagens– Linguagem altamente acoplada a ambientes e
hardwares específicos– Softwares com altos custos e pouca flexibilidade
7
Linguagens de programação de propósitos gerais
Vantagens:
– Existência de programadores capacitados na linguagem
– Redução de investimentos na equipe de desenvolvimento
Linguagens de programação de propósitos gerais
Desvantagens:– Características originais da linguagem são
mantidas– Dificuldade na verificação de programas– Abstrações não adequadas nos recursos
originais da linguagem
8
A Linguagem de programação Java
Criada em 1991 por James Goslin, mas somente em 1995 foi anunciada e lançada.Projetada tendo em vista os seguintes objetivos:– Orientação a objetos– Portabilidade – “Write once, run anywhere”– Recursos de rede– Segurança
A Linguagem de programação Java
Outras Características:– Sintaxe similar a linguagem C/C++– Suporta nativamente caracteres Unicode– Simplicidade na especificação, tanto na
linguagem quanto no ambiente de execução– Deslocação de memória automática por processo
de coletor de lixo (Garbage Collector)
9
A Linguagem de programação Java
Outras Características:– É distribuída com um vasto conjunto de
bibliotecas– Possui multithreading– Facilidade de internacionalização– Especificações são mantidas uniformes atrávés
de um Processo Comunitário (JCP) gerido pela Sun MicroSystems
A Linguagem de programação Java
“A Plataforma Java foi desenvolvida pela SunMicrosystems como uma solução portável, orientada a objetos, distribuída e segura para o desenvolvimento de aplicações comerciais. Devido a sua portabilidade, Java vem sendo utilizada em diversos ambientes, desde aplicações para dispositivos embarcados até aplicações corporativas “
(cf. GOSLING, 1996).
10
Desenvolvimento de STR
Algumas considerações no desenvolvimento de STR– Análises para garantia de que o sistema suporte
as restrições de tempo real– SOs e ambientes especializados– Técnicas de análise da performance são
intrínsecas da máquina– Pior tempo de execução deve ser determinado
Java e STR
11
Características que atraem a comunidade que desenvolve STR
Suporte multi-plataformaNaturalmente embutidaFacilidade de programaçãoModularidadeGerenciamento de memóriaAbstração de hardware
Java e Sistemas de Tempo Real
“Java é uma linguagem promissora no mercado de sistemas embutidos. Porém, há muitas questões quanto a real possibilidade de utilização de Java como linguagem para Tempo Real em Sistemas embutidos.”
[Carol Feigenbaum, diretor da Microtec Inc.]
12
Por que dúvidas?
Princípios do projeto de Java discordantes com os requisitos de aplicações em Tempo Real.
Discordância em termos de:– Planejamento de atividades concorrentes– Mecanismos de sincronização inadequados– Gestão dinâmica de memória indeterminismos– Medida de tempo não suficientemente precisa– Outros problemas com exceções e concorrência
Java: Limitações
Aspectos da JVM não adequados para garantias temporais.
Os principais pontos são:– Coletor de Lixo (Garbage Collection)– Falta de informações do sistema– Escalonamento de tarefas– Sincronização de tarefas– Análise em tempo de execução
13
Limitação: Coletor de Lixo
Procura Conservativa– Objetos ativos x objetos inativos
Fragmentação– Esquema conservativo Não realocação de objetos ativos
Escalonamento do Coletor de Lixo– Thread de menor prioridade
Limitação: Falta de Informações do Sistema
Alocação dinâmica de memória impossibilita alocação extra de memória para uma aplicação:– Não determinação da quantidade de memória
utilizada por uma aplicação– Não determinação da quantidade de memória
disponível em um ambiente de execução
14
Limitação: Escalonamento de Tarefas
Gestão de recursos compartilhados– Inversões de prioridade
Não se sabe quantas tarefas estão sendo executadas concorrentemente , suas prioridades, seus percentuais de cpu– Não garantia de tempo hábil para tarefa tratar
suas restrições temporais.
Limitação: Sincronização de Tarefas
Uso de monitores para acesso simultâneo a regiões críticas.STR necessidade de previsibilidadeInformações ausentes para análise:– Número e prioridade das tarefas que competem
pelo monitor– Tempo gasto dentro dos monitores
15
Limitação: Análise em Tempo de Execução
Requisitos de tempo e memória não são conhecidosJava API não oferece uma definição de tempo de processamento.Também não oferece um mecanismo para determinar a capacidade total de memória do sistema
Java:soluções para STR
16
Propostas de adaptação de Java para STR
NIST Requirements for Real-TimeExtensions for Java (1999).– Não modifica a sintaxe, coexistência com
aplicações convencionais.
Java Real-Time Experts Group (Sun andothers)– JVM estendida para STR
Propostas de adaptação de Java para STR
Real-Time Java Working Group (J-Consortium)– JVM específica para STR
17
JVSPro API
Java Virtual Single Processor ApplicationProgramming InterfaceIniciativa da Universidade Federal de São Carlos (UFSCAR)Visa tratar comunicação, sincronização, distribuição de tarefas e as demais características necessárias aos Sistemas de Tempo RealFunciona um nível acima da máquina virtualPossui um ambiente próprio de desenvolvimento
RTSJ: Real Time Specification for Java
A JCP, a pedido da IBM, publica o JSR1 -Real Time Specification for Java.
1998 - A RTSJ teve aprovação.
2002 - teve seu primeiro release para avaliação e implementação
18
RTSJ: Real Time Specification for Java
A “Real Time Specification for Java” focava sete áreas principais:– Escalonamento de threads– Gerenciamento de memória– Sincronização e compartilhamento de recursos– Gerenciamento de eventos assíncronos– Transferência assíncrona de controle– Terminação assíncrona de threads– Acesso a memória física
Java RTS: Java Real Time System
“Tempo Real” x “Muito rápido”
No contexto do RTSJ, o termo “tempo real” significa responder a eventos do mundo real com previsibilidade e confiança.
“Tempo real” está mais relacionado à temporização-previsiblidade do que com velocidade de execução.
19
Java RTS:Características e Benefícios
Novos tipos de threadsNovos esquemas de gerenciamento de memóriaTratamento de eventos assíncronosTransferência assíncrona de ControleTempo & temporizadoresAcesso direto a memória física
Novos Tipos de Threads
Dois tipos:– Thread de tempo real.– Thread de tempo real fora do heap.
Possibilitam um escalonamento mais preciso do que com as threads padrão do Java.Possuem 28 níveis de prioridade que são obedecidas rigorosamente.São sincronizadas e inversões de prioridades são completamente evitadas.
20
Novos Esquemas de Gerenciamento de Memória
Dois novos tipos de áreas de memória:– Immortal memory– Scoped memory
Essas duas áreas não tem interferências do Garbage Collector.
Comunicação Assíncrona
Dois mecanismos para comunicação assíncrona:– Tratamento de eventos assíncronos– Transferência Assíncrona de controle
21
Comunicação Assíncrona
Tratamento de eventos assíncronos– Relacionada a eventos externos– Fora da JVM
Transferência Assíncrona de Controle– Provê uma maneira cuidadosamente
controlada para uma thread interromper uma outra thread de maneira segura.
Tempo e Temporizadores
O Java RTS provê:– Várias maneiras de especificação do tempo em
alta resolução.– Inclui tempo absoluto e tempo relativo
22
Acesso Direto a Memória Física
A RTSJ permite acesso direto à memória física.
Mantém ainda as proteções de segurança.
Drivers de dispositivo podem ser criados escrevendo código inteiramente em Java.
Requisito para Java RTS
Dual UltraSparc III ou superiorPreferencialmente 512 MB de memóriaSolaris 10Java version 1.4.1 hotspot
23
Java RTS
Tempo de latência para threads periódicas e fora do heap executando em processador dedicado estão entre 5 e 20 microsegundos
Foi projetado para sistemas de cpu dual, mas também rodam em sistemas tradicionais com processador único.
Java RTS
Atualmente apenas suportado pelo J2SE 1.4.1, Solaris 10 e SPARC.
Releases futuros suportarão J2SE 5.0 e outras plataformas (SO e HW).
24
Aplicações
A sala de controle da missão Marte do Rover.A agência responsável pelos vôos nos USA, a FAA, começava a pensar em Java, mas são muito conservadores e seus códigos demais de 20 anos .A indústria automotiva estava interessada na Real-Time Specification for Java (RTSJ) para fazer previsões de colisões em trens e carros.
Conclusão
Devido as exigências do mercado atual, se torna cada vez mais exigente o desenvolvimento de produtos de software de qualidade, com baixo custo, baseado na reusabilidade e portabilidade. Assim, Java se torna uma opção bastante atraente no mundo dos Sistemas de Tempos Reais tanto pelas características que tornaram Java uma linguagem amplamente aceita quanto pelos novos recursos oferecidos baseados na RTSJ.