25
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 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

A Linguagem Java no contexto de Sistemas de Tempo Realjair/dstr/JavaSTR.pdf · relativas à restrições temporais ... (cf. GOSLING, 1996). 10 ... suas restrições temporais. Limitação:

  • 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.

25

Referências

http://java.sun.com/javase/technologies/realtime.jsphttp://www.dc.ufscar.br/~celio/papers/WSTR99.pshttps://rtsj.dev.java.net/rtsj-V1.0.pdfhttp://www.jrealtime.com/

Dúvidas??