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