Um Estudo de Técnicas de Interoperabilidade entre Máquinas Virtuais com Suporte a Linguagens Controladas <ul>Jamerson Rapo...
Software em todo lugar <ul><li>Micro-ondas
MP3 Players
GPS
Caixa Eletrônicos, DVD Players, etc. </li></ul>
Software em todo lugar <ul><li>Aviões
Usinas Nucleares
Metrôs
Semáforos </li></ul>
Softwares são confiáveis? <ul><li>Censo em sistemas Tandem entre 1985 e 1990: </li><ul><li>Softwares são responsáveis pela...
Tempo médio entre falhas se manteve constante
O tempo médio entre falhas de hardware ultrapassa 300 anos </li></ul></ul>
Softwares são confiáveis? <ul><li>Therac-25 </li><ul><li>Dispositivo de radioterapia controlado por software
Falhas no projeto do software podia levar a níveis letais de radiação
Mudança de monitores mecânicos para lógicos </li></ul></ul>
Softwares são confiáveis? <ul><li>GE XA/21 </li><ul><li>Sistema de gerenciamento elétrico
Curto circuito desestabilizou fluxo de energia
Falha no sistema de monitoramento
Eventos se acumularam até falha geral do sistema
Blackout atingiu cerca de 50 milhões de pessoas </li></ul></ul>
Dependabilidade (Dependability) <ul><li>Habilidade de um sistema em disponibilizar serviços dos quais os usuários podem, j...
Atributos: </li><ul><li>Disponibilidade, confiabilidade, segurança, confidencialidade, integridade e manutenabilidade. </l...
De quem é a culpa? <ul><li>Tanenbaum responde: </li><ul><li>O maior responsável pela falta de dependabilidade é o sistema ...
Isolamento de falhas pobre </li></ul><li>Baixa dependabilidade está associada a defeitos de software </li><ul><li>Até 75 d...
Aumentando a dependabilidade <ul><li>Nooks – Isolamento de drivers de dispositivos
Máquina paravirtual
Minix 3 – Sistema operacional multi-servidor
Singularity – Proteção baseada em linguagem </li></ul>
JingleOS: Definição <ul>Sistema operacional de código aberto para  dispositivos embarcados  que visa alcançar  dependabili...
JingleOS: Arquitetura <ul><li>Multi-camada
Desenvolvido em Java
Processos isolados por máquina virtual
Próximos SlideShares
Carregando em…5
×

Apresentação da defesa da dissertação do mestrado profissional

1.688 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.688
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação da defesa da dissertação do mestrado profissional

  1. 1. Um Estudo de Técnicas de Interoperabilidade entre Máquinas Virtuais com Suporte a Linguagens Controladas <ul>Jamerson Raposo Ferreira de Lima Mestrado Profissional em Engenharia de Software cesar.edu - Recife, 2009 </ul>
  2. 2. Software em todo lugar <ul><li>Micro-ondas
  3. 3. MP3 Players
  4. 4. GPS
  5. 5. Caixa Eletrônicos, DVD Players, etc. </li></ul>
  6. 6. Software em todo lugar <ul><li>Aviões
  7. 7. Usinas Nucleares
  8. 8. Metrôs
  9. 9. Semáforos </li></ul>
  10. 10. Softwares são confiáveis? <ul><li>Censo em sistemas Tandem entre 1985 e 1990: </li><ul><li>Softwares são responsáveis pela maioria das falhas(62%)
  11. 11. Tempo médio entre falhas se manteve constante
  12. 12. O tempo médio entre falhas de hardware ultrapassa 300 anos </li></ul></ul>
  13. 13. Softwares são confiáveis? <ul><li>Therac-25 </li><ul><li>Dispositivo de radioterapia controlado por software
  14. 14. Falhas no projeto do software podia levar a níveis letais de radiação
  15. 15. Mudança de monitores mecânicos para lógicos </li></ul></ul>
  16. 16. Softwares são confiáveis? <ul><li>GE XA/21 </li><ul><li>Sistema de gerenciamento elétrico
  17. 17. Curto circuito desestabilizou fluxo de energia
  18. 18. Falha no sistema de monitoramento
  19. 19. Eventos se acumularam até falha geral do sistema
  20. 20. Blackout atingiu cerca de 50 milhões de pessoas </li></ul></ul>
  21. 21. Dependabilidade (Dependability) <ul><li>Habilidade de um sistema em disponibilizar serviços dos quais os usuários podem, justificadamente, depender.
  22. 22. Atributos: </li><ul><li>Disponibilidade, confiabilidade, segurança, confidencialidade, integridade e manutenabilidade. </li></ul></ul>
  23. 23. De quem é a culpa? <ul><li>Tanenbaum responde: </li><ul><li>O maior responsável pela falta de dependabilidade é o sistema operacional </li><ul><li>Monolítico
  24. 24. Isolamento de falhas pobre </li></ul><li>Baixa dependabilidade está associada a defeitos de software </li><ul><li>Até 75 defeitos em cada 1000 linhas de código </li></ul></ul></ul>
  25. 25. Aumentando a dependabilidade <ul><li>Nooks – Isolamento de drivers de dispositivos
  26. 26. Máquina paravirtual
  27. 27. Minix 3 – Sistema operacional multi-servidor
  28. 28. Singularity – Proteção baseada em linguagem </li></ul>
  29. 29. JingleOS: Definição <ul>Sistema operacional de código aberto para dispositivos embarcados que visa alcançar dependabilidade através de seu projeto, assim como suporte intrinseco a tempo real. <li>Módulos rodam em um ambiente gerenciado por uma máquina virtual </li></ul>
  30. 30. JingleOS: Arquitetura <ul><li>Multi-camada
  31. 31. Desenvolvido em Java
  32. 32. Processos isolados por máquina virtual
  33. 33. Define </li><ul><li>Máquina abstrata
  34. 34. Representação intermediária </li></ul></ul>
  35. 35. JingleOS: Compilador <ul><li>Desenvolvido na linguagem Java
  36. 36. Compilação Ahead-of-Time
  37. 37. Gera código para ARM e x86 </li></ul>
  38. 38. JingleOS: Compilador
  39. 39. JingleOS: Representação intermediária
  40. 40. Um SO e uma plataforma <ul><li>Domínios específicos, linguagens específicas
  41. 41. Reuso de módulos
  42. 42. Conhecimento dos engenheiros em ferramentas distintas </li></ul>
  43. 43. Interoperabilidade entre plataformas <ul><li>COM, WS </li><ul><li>Módulos em ambientes distintos
  44. 44. Camada limitadora
  45. 45. Uso de APIs e bibliotecas específicas </li></ul><li>JNI, Pinvoke </li><ul><li>Suporte nativo
  46. 46. Código inseguro </li></ul></ul>
  47. 47. Solução Proposta <ul><li>Interoperabilidade nativa e transparente
  48. 48. Módulos interagindo no mesmo processo
  49. 49. Sem camadas de compatibilidade </li></ul>
  50. 50. Interoperabilidade suportada nativamente <ul><li>Estratégia de compilação
  51. 51. Máquina abstrata
  52. 52. Utilizando Ambiente do JingleOS
  53. 53. Plataformas suportadas: Java e .NET </li></ul>
  54. 54. Java x .NET: Semelhanças <ul><li>Código gerenciado
  55. 55. Máquina virtual baseada em pilha
  56. 56. Linguagem orientada a objetos
  57. 57. Conjunto de instruções </li></ul>
  58. 58. Java x .NET: Diferenças <ul><li>Propósito
  59. 59. Tipos primitivos, value-types
  60. 60. Pilha do registro de ativação </li></ul>
  61. 61. Solução proposta
  62. 62. Solução proposta
  63. 63. Solução proposta
  64. 64. Prova de conceito
  65. 65. Prova de conceito <ul><li>Classe .NET </li></ul>using System; using br.org.edu.cesar.uvm.java.lib; namespace br.org.edu.cesar.uvm.dotnet.lib { public class DotnetClass { public static void DoAction() { JavaClass.doAction(); } } }
  66. 66. Prova de conceito 1 br.org.edu.cesar.uvm.dotnet.lib.DotNetClass.DoAction$40$41V: 2 # subroutine prologue 3 pushl %ebp 4 movl %esp, %ebp 5 6 pushl %ebx 7 pushl %esi 8 9 movl %ebp, %esi 10 addl $8, %esi 11 call br.org.edu.cesar.uvm.java.lib.JavaClass.doAction$40$41V 12 # subroutine epilogue 13 addl $0, %esp 14 movl %esp, %esp 15 popl %esi 16 popl %ebx 17 18 popl %ebp 19 ret
  67. 67. Prova de conceito <ul><li>Class Java </li></ul>package br.org.edu.cesar.uvm.java.lib; import net.jingleos.core.debug.Console; public class JavaClass { public static void doAction(){ Console.print(&quot;Hello from Java module &quot;); } }
  68. 68. Prova de conceito 1 # subroutine prologue 2 pushl %ebp 3 movl %esp, %ebp 4 5 pushl %ebx 6 pushl %esi 7 8 movl %ebp, %esi 9 addl $8, %esi 10 # ldc 2 11 movl $constant$60Hello$32from$32Java$32module$10$62, %eax 12 pushl %eax 13 # invokestatic 3 14 call net.jingleos.core.debug.Console.print$40Ljava$47lang$47String$59$41V 15 # subroutine epilogue 16 addl $4, %esp 17 movl %esp, %esp 18 popl %esi 19 popl %ebx 20 21 popl %ebp 22 # return 23 ret
  69. 69. Conclusões <ul><li>A abordagem adotada, utilizando a máquina abstrata, mostrou-se suficiente do ponto de vista conceitual para o mapeamente entre Java e .NET
  70. 70. Interoperabilidade bem-sucedida com uso de stubs e integração na camada intermediária
  71. 71. A partir deste trabalho é possível a criação de aplicações híbridas(Java e .NET) sem uma camada de middleware ou uso de JNI/PInvoke </li></ul>
  72. 72. Trabalhos futuros <ul><li>Pilha </li><ul><li>Tipos de 64 bits e instruções de manipulação
  73. 73. Pilha tipada </li></ul></ul>
  74. 74. Trabalhos futuros <ul><li>Value-Types </li><ul><li>Estruturas
  75. 75. Instruções de carga e descarga
  76. 76. Ponteiro de topo de pilha
  77. 77. Instruções de acesso a campos </li></ul></ul>
  78. 78. Fim

×