Java RTS - DIMAp/UFRN

Propaganda
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
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
Objetivos
Importância dos sistemas embutidos e de tempo real
Sistemas em tempo real
HW e ambientes de STR
Software em STR
Aplicações de Tempo Real
Estratégias de Desenvolvimento
A Linguagem de programação Java
Desenvolvimento de STR
Java e STR
Java: Limitações
Java: soluções para STR
RTSJ: Real Time Specification for Java
Java Real Time System
Java RTS: Características e Benefícios
1
Objetivos
z
Mostrar a importância dos Sistemas de
Tempo Real
z
Mostrar como a plataforma Java está
inserida nesse contexto.
Importância dos Sistema Embutidos e
de tempo real
z
Presentes em diversas áreas
–
Ex: Transação bancária, em automóveis
z
Maior parte dos dispositivos que utilizamos possui
processador digital responsável pelo controle das
funcionalidades
z
Pode-se destacar um grupo de sistemas que são
limitados pelo tempo – Sistemas em Tempo Real
2
Sistemas em Tempo Real
z
Diferencial:
–
respostas devem retornar ao ambiente em tempo
hábil
z
Controle de processos complexos Æ requer
confiabilidade máxima
z
STR Æ ambiente, hardware e software
HW e ambientes de STR
z
Alguns ambientes foram comentados na aula
passada
–
z
Ex: Windows CE e Solaris
O software em STR será abordado
3
Software em STR
z
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
z
Requisitos difíceis de serem expressos por
linguagens de propósito geral
z
Implementação em linguagens de propósito
geral é uma tarefa complexa
z
Código tende a utilizar mecanismos
específicos e de baixo nível do SO
4
Aplicações de Tempo Real
z
Alta complexidade de desenvolvimento e
manutenção
Abstrações mais expressivas Æ
Robustez, legibilidade e manutenibilidade
z
Estratégias de Desenvolvimento
z
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
5
Linguagens Específicas
z
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
z
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
6
Linguagens de programação de
propósitos gerais
z
Vantagens:
–
–
Existência de programadores capacitados na
linguagem
Redução de investimentos na equipe de
desenvolvimento
Linguagens de programação de
propósitos gerais
z
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
7
A Linguagem de programação Java
z
z
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
z
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)
8
A Linguagem de programação Java
z
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 Sun
Microsystems 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).
9
Desenvolvimento de STR
z
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
10
Características que atraem a
comunidade que desenvolve STR
z
z
z
z
z
z
Suporte multi-plataforma
Naturalmente embutida
Facilidade de programação
Modularidade
Gerenciamento de memória
Abstraçã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.]
11
Por que dúvidas?
z
Princípios do projeto de Java discordantes com os
requisitos de aplicações em Tempo Real.
z
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
z
Aspectos da JVM não adequados para garantias
temporais.
z
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
12
Limitação: Coletor de Lixo
z
Procura Conservativa
–
z
Fragmentação
–
z
Objetos ativos x objetos inativos
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
z
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
13
Limitação:
Escalonamento de Tarefas
z
Gestão de recursos compartilhados
–
z
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
z
z
z
Uso de monitores para acesso simultâneo a
regiões críticas.
STR Æ necessidade de previsibilidade
Informações ausentes para análise:
–
–
Número e prioridade das tarefas que competem
pelo monitor
Tempo gasto dentro dos monitores
14
Limitação:
Análise em Tempo de Execução
z
z
z
Requisitos de tempo e memória não são
conhecidos
Java 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
15
Propostas de adaptação
de Java para STR
z
NIST Requirements for Real-Time
Extensions for Java (1999).
–
z
Não modifica a sintaxe, coexistência com
aplicações convencionais.
Java Real-Time Experts Group (Sun and
others)
–
JVM estendida para STR
Propostas de adaptação
de Java para STR
z
Real-Time Java Working Group (JConsortium)
–
JVM específica para STR
16
JVSPro API
z
z
z
z
z
Java Virtual Single Processor Application
Programming Interface
Iniciativa 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 Real
Funciona um nível acima da máquina virtual
Possui um ambiente próprio de desenvolvimento
RTSJ:
Real Time Specification for Java
z
A JCP, a pedido da IBM, publica o JSR1 Real Time Specification for Java.
z
1998 - A RTSJ teve aprovação.
z
2002 - teve seu primeiro release para
avaliação e implementação
17
RTSJ:
Real Time Specification for Java
z
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
z
“Tempo Real” x “Muito rápido”
z
No contexto do RTSJ, o termo “tempo real” significa
responder a eventos do mundo real com
previsibilidade e confiança.
z
“Tempo real” está mais relacionado à temporizaçãoprevisiblidade do que com velocidade de execução.
18
Java RTS:
Características e Benefícios
z
z
z
z
z
z
Novos tipos de threads
Novos esquemas de gerenciamento de
memória
Tratamento de eventos assíncronos
Transferência assíncrona de Controle
Tempo & temporizadores
Acesso direto a memória física
Novos Tipos de Threads
z
Dois tipos:
–
–
z
z
z
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.
19
Novos Esquemas de Gerenciamento
de Memória
z
Dois novos tipos de áreas de memória:
–
–
z
Immortal memory
Scoped memory
Essas duas áreas não tem interferências do
Garbage Collector.
Comunicação Assíncrona
z
Dois mecanismos para comunicação
assíncrona:
–
–
Tratamento de eventos assíncronos
Transferência Assíncrona de controle
20
Comunicação Assíncrona
z
Tratamento de eventos assíncronos
–
–
z
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
z
O Java RTS provê:
–
–
Várias maneiras de especificação do tempo em
alta resolução.
Inclui tempo absoluto e tempo relativo
21
Acesso Direto a Memória Física
z
A RTSJ permite acesso direto à memória
física.
z
Mantém ainda as proteções de segurança.
z
Drivers de dispositivo podem ser criados
escrevendo código inteiramente em Java.
Requisito para Java RTS
z
z
z
z
Dual UltraSparc III ou superior
Preferencialmente 512 MB de memória
Solaris 10
Java version 1.4.1 hotspot
22
Java RTS
z
Tempo de latência para threads periódicas e
fora do heap executando em processador
dedicado estão entre 5 e 20 microsegundos
z
Foi projetado para sistemas de cpu dual,
mas também rodam em sistemas
tradicionais com processador único.
Java RTS
z
Atualmente apenas suportado pelo J2SE
1.4.1, Solaris 10 e SPARC.
z
Releases futuros suportarão J2SE 5.0 e
outras plataformas (SO e HW).
23
Aplicações
z
z
z
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 RealTime 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.
24
Referências
z
z
z
z
http://java.sun.com/javase/technologies/realti
me.jsp
http://www.dc.ufscar.br/~celio/papers/WSTR
99.ps
https://rtsj.dev.java.net/rtsj-V1.0.pdf
http://www.jrealtime.com/
Dúvidas??
25
Download