Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio...

Post on 20-Jul-2020

0 views 0 download

Transcript of Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio...

Introducao Dalvik Linux 2.6

Android

Diogo de Campos,Joao Paulo Pizani Flor,

Maurıcio Oliveira Haensch,Pedro Covolan Bachiega

Universidade Federal de Santa Catarina

November 18, 2008

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Introducao Dalvik Linux 2.6

O que e Android?

O Android

E uma plataforma para dispositivos moveis que inclui sistemaoperacional, middleware e aplicacoes chave.

Google + Open Handset Alliance

A plataforma Android e e sera mantida por um grupo de 33empresas, chamado Open Handset Alliance. Sao empresas dedispositivos moveis, operadoras, software, semicondutores ecomercializacao que estao juntas na criacao da primeira plataformamovel completa, aberta e livre.

Introducao Dalvik Linux 2.6

O que e Android?

O Android

E uma plataforma para dispositivos moveis que inclui sistemaoperacional, middleware e aplicacoes chave.

Google + Open Handset Alliance

A plataforma Android e e sera mantida por um grupo de 33empresas, chamado Open Handset Alliance. Sao empresas dedispositivos moveis, operadoras, software, semicondutores ecomercializacao que estao juntas na criacao da primeira plataformamovel completa, aberta e livre.

Introducao Dalvik Linux 2.6

Caracterısticas Basicas

Dalvik

As aplicacoes sao feitas em Java (nao JavaME) e rodam namaquina virtual Dalvik.

Independente de hardware

Possui suporte multimıdia de audio, vıdeo e imagem (MP3, AAC,MPEG, H.264, JPG, PNG, GIF), alem de um browser baseado noWebkit Engine (mesmo do safari), tambem otimizado (Two PassLayout, Frame Flattening).

Dependente de hardware

Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi,Bussola, acelerometro...

Introducao Dalvik Linux 2.6

Caracterısticas Basicas

Dalvik

As aplicacoes sao feitas em Java (nao JavaME) e rodam namaquina virtual Dalvik.

Independente de hardware

Possui suporte multimıdia de audio, vıdeo e imagem (MP3, AAC,MPEG, H.264, JPG, PNG, GIF), alem de um browser baseado noWebkit Engine (mesmo do safari), tambem otimizado (Two PassLayout, Frame Flattening).

Dependente de hardware

Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi,Bussola, acelerometro...

Introducao Dalvik Linux 2.6

Caracterısticas Basicas

Dalvik

As aplicacoes sao feitas em Java (nao JavaME) e rodam namaquina virtual Dalvik.

Independente de hardware

Possui suporte multimıdia de audio, vıdeo e imagem (MP3, AAC,MPEG, H.264, JPG, PNG, GIF), alem de um browser baseado noWebkit Engine (mesmo do safari), tambem otimizado (Two PassLayout, Frame Flattening).

Dependente de hardware

Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi,Bussola, acelerometro...

Introducao Dalvik Linux 2.6

Arquitetura

Introducao Dalvik Linux 2.6

Arquitetura

Applications

Essa camada conta com diversos tipos de aplicacoes (cliente dee-mail, calendario, mapas, browser, servico SMS, agenda decontatos, etc). Todas as aplicacoes sao escritas em Java.

Application Framework

Os desenvolvedores tem acesso ao mesmo framework de APIsutilizado para as aplicacoes do Android. Esse framework contemum conjunto de componentes graficos, provedores de conteudo,gerenciadores de recursos (graficos, string, vıdeos), gerenciador denotificacao e um gerenciador de atividade.

Introducao Dalvik Linux 2.6

Arquitetura

Applications

Essa camada conta com diversos tipos de aplicacoes (cliente dee-mail, calendario, mapas, browser, servico SMS, agenda decontatos, etc). Todas as aplicacoes sao escritas em Java.

Application Framework

Os desenvolvedores tem acesso ao mesmo framework de APIsutilizado para as aplicacoes do Android. Esse framework contemum conjunto de componentes graficos, provedores de conteudo,gerenciadores de recursos (graficos, string, vıdeos), gerenciador denotificacao e um gerenciador de atividade.

Introducao Dalvik Linux 2.6

Arquitetura

Libraries

Android contem uma serie de bibliotecas de C/C++, que saoutilizadas por varios componentes do sistema. Algumas bibliotecassao: biblioteca padrao C otimizada para embarcados, SQLite,bibliotecas de mıdia, gerenciador de superfıcie. Todas asfuncionalidades sao repassadas ao usuario atraves do framework.

Android Runtime

Cada aplicacao do Android roda seu proprio processo em umainstancia da maquina virtual Dalvik. Essa VM foi escrita para serrodada eficientemente com multiplas instancias e executa arquivos.dex (Dalvik Executable), que e uma especie de bytecode Javaomitizado para o Android.

Introducao Dalvik Linux 2.6

Arquitetura

Libraries

Android contem uma serie de bibliotecas de C/C++, que saoutilizadas por varios componentes do sistema. Algumas bibliotecassao: biblioteca padrao C otimizada para embarcados, SQLite,bibliotecas de mıdia, gerenciador de superfıcie. Todas asfuncionalidades sao repassadas ao usuario atraves do framework.

Android Runtime

Cada aplicacao do Android roda seu proprio processo em umainstancia da maquina virtual Dalvik. Essa VM foi escrita para serrodada eficientemente com multiplas instancias e executa arquivos.dex (Dalvik Executable), que e uma especie de bytecode Javaomitizado para o Android.

Introducao Dalvik Linux 2.6

Arquitetura

Linux Kernel

O Android utiliza parte do Kernel 2.6 do Linux, que e responsavelpor funcoes como seguranca, gerenciamento de memoria,gerenciamento de processos, pilha de protocolos de rede e modulos.O Kernel tambem funciona como uma camada de abstracao entreo hardware e o restante das camadas previamente citadas.

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Introducao Dalvik Linux 2.6

A maquina virtual Dalvik

Origem

Desenvolvida por Dan Bornstein e outros engenheiros da Google,especificamente para o Android. Foi projetada para rodar emsistemas com baixa frequencia, pouca RAM e SO sem espaco paraswap.

Caracterısticas

E uma maquina virtual de registradores. Cada aplicacao roda emuma instancia da Dalvik, instanciadas a partir do Zygote.

Introducao Dalvik Linux 2.6

A maquina virtual Dalvik

Origem

Desenvolvida por Dan Bornstein e outros engenheiros da Google,especificamente para o Android. Foi projetada para rodar emsistemas com baixa frequencia, pouca RAM e SO sem espaco paraswap.

Caracterısticas

E uma maquina virtual de registradores. Cada aplicacao roda emuma instancia da Dalvik, instanciadas a partir do Zygote.

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Por que nao JVM?

• Deve ser rapido e eficiente.

• A Dalvik roda seu proprio bytecode.

• Arquivos .class sao convertidos para .dex

• Ocupa metade do espaco que um .class Java.

• Carrega mais rapido.

• Futuro: conversao de outras linguagens para .dex

Introducao Dalvik Linux 2.6

Zygote

• Processo gerador das instancias da Dalvik.

• E iniciado no boot do Kernel (init).

• Outras maquinas sao instanciadas com fork() quandonecssario.

• No Zygote, sao mapeadas as bibliotecas compartilhadas dasaplicacoes.

• Para evitar inconsistencia de dados, sao acessadas em modosomente leitura.

Introducao Dalvik Linux 2.6

Zygote

• Processo gerador das instancias da Dalvik.

• E iniciado no boot do Kernel (init).

• Outras maquinas sao instanciadas com fork() quandonecssario.

• No Zygote, sao mapeadas as bibliotecas compartilhadas dasaplicacoes.

• Para evitar inconsistencia de dados, sao acessadas em modosomente leitura.

Introducao Dalvik Linux 2.6

Zygote

• Processo gerador das instancias da Dalvik.

• E iniciado no boot do Kernel (init).

• Outras maquinas sao instanciadas com fork() quandonecssario.

• No Zygote, sao mapeadas as bibliotecas compartilhadas dasaplicacoes.

• Para evitar inconsistencia de dados, sao acessadas em modosomente leitura.

Introducao Dalvik Linux 2.6

Zygote

• Processo gerador das instancias da Dalvik.

• E iniciado no boot do Kernel (init).

• Outras maquinas sao instanciadas com fork() quandonecssario.

• No Zygote, sao mapeadas as bibliotecas compartilhadas dasaplicacoes.

• Para evitar inconsistencia de dados, sao acessadas em modosomente leitura.

Introducao Dalvik Linux 2.6

Zygote

• Processo gerador das instancias da Dalvik.

• E iniciado no boot do Kernel (init).

• Outras maquinas sao instanciadas com fork() quandonecssario.

• No Zygote, sao mapeadas as bibliotecas compartilhadas dasaplicacoes.

• Para evitar inconsistencia de dados, sao acessadas em modosomente leitura.

Introducao Dalvik Linux 2.6

Zygote

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Introducao Dalvik Linux 2.6

Por que Linux?

• Bom gerenciamento de processos e memoria

• Modelo de seguranca baseado em permissoes

• Device Drivers consolidados para variados hardwares

• E open-source =)

Introducao Dalvik Linux 2.6

Por que Linux?

• Bom gerenciamento de processos e memoria

• Modelo de seguranca baseado em permissoes

• Device Drivers consolidados para variados hardwares

• E open-source =)

Introducao Dalvik Linux 2.6

Por que Linux?

• Bom gerenciamento de processos e memoria

• Modelo de seguranca baseado em permissoes

• Device Drivers consolidados para variados hardwares

• E open-source =)

Introducao Dalvik Linux 2.6

Por que Linux?

• Bom gerenciamento de processos e memoria

• Modelo de seguranca baseado em permissoes

• Device Drivers consolidados para variados hardwares

• E open-source =)

Introducao Dalvik Linux 2.6

Glibc e Bionic Libc

Por que nao glibc?

A mesma biblioteca e ligada estaticamente a todos os executaveis,portanto precisa ser rapida para melhorar o desempenho e pequenapara economizar memoria.

E agora?

Android implementa a Bionic libc, que e menor que a glibc eotimizada para embarcados. A bionic utiliza a licensa BSD,diferentemente da GPL utilizada pela glibc.

Porem...

Nao suporta todas as POSIX features nem e compatıvel com aGlibc, por isso todo codigo nativo deve ser compiladoespecificamente para bionic.

Introducao Dalvik Linux 2.6

Glibc e Bionic Libc

Por que nao glibc?

A mesma biblioteca e ligada estaticamente a todos os executaveis,portanto precisa ser rapida para melhorar o desempenho e pequenapara economizar memoria.

E agora?

Android implementa a Bionic libc, que e menor que a glibc eotimizada para embarcados. A bionic utiliza a licensa BSD,diferentemente da GPL utilizada pela glibc.

Porem...

Nao suporta todas as POSIX features nem e compatıvel com aGlibc, por isso todo codigo nativo deve ser compiladoespecificamente para bionic.

Introducao Dalvik Linux 2.6

Glibc e Bionic Libc

Por que nao glibc?

A mesma biblioteca e ligada estaticamente a todos os executaveis,portanto precisa ser rapida para melhorar o desempenho e pequenapara economizar memoria.

E agora?

Android implementa a Bionic libc, que e menor que a glibc eotimizada para embarcados. A bionic utiliza a licensa BSD,diferentemente da GPL utilizada pela glibc.

Porem...

Nao suporta todas as POSIX features nem e compatıvel com aGlibc, por isso todo codigo nativo deve ser compiladoespecificamente para bionic.

Introducao Dalvik Linux 2.6

Sobre o Binder

O que e Binder?

Aplicacoes e servicos rodam em processos separados, mas podemprecisar compartilhar dados e se comunicar. O Binder e um driverque facilita IPC (Inter-process Communication), com altaperformance em memoria compartilhada.

Como funciona?

Conta o numero de referencias, assim como mapeia essasreferencias a objetos entre processos. Realiza chamadas sıncronasentre processos atraves da interface descrita pelo desenvolvedor emAIDL.

Introducao Dalvik Linux 2.6

Sobre o Binder

O que e Binder?

Aplicacoes e servicos rodam em processos separados, mas podemprecisar compartilhar dados e se comunicar. O Binder e um driverque facilita IPC (Inter-process Communication), com altaperformance em memoria compartilhada.

Como funciona?

Conta o numero de referencias, assim como mapeia essasreferencias a objetos entre processos. Realiza chamadas sıncronasentre processos atraves da interface descrita pelo desenvolvedor emAIDL.

Introducao Dalvik Linux 2.6

Sobre o Binder

Introducao Dalvik Linux 2.6

AIDL

• Android Interface Description Language.

• Binder precisa saber qual a interface externa de cadaaplicacao.

• Descrever a interface da sua aplicacao diretamente no Bindere complicado.

• Foi criada uma linguagem de descricao facil de usar queconverte a interface descrita pelo desenvolvedor para o codigousado pelo Binder.

Introducao Dalvik Linux 2.6

AIDL

• Android Interface Description Language.

• Binder precisa saber qual a interface externa de cadaaplicacao.

• Descrever a interface da sua aplicacao diretamente no Bindere complicado.

• Foi criada uma linguagem de descricao facil de usar queconverte a interface descrita pelo desenvolvedor para o codigousado pelo Binder.

Introducao Dalvik Linux 2.6

AIDL

• Android Interface Description Language.

• Binder precisa saber qual a interface externa de cadaaplicacao.

• Descrever a interface da sua aplicacao diretamente no Bindere complicado.

• Foi criada uma linguagem de descricao facil de usar queconverte a interface descrita pelo desenvolvedor para o codigousado pelo Binder.

Introducao Dalvik Linux 2.6

AIDL

• Android Interface Description Language.

• Binder precisa saber qual a interface externa de cadaaplicacao.

• Descrever a interface da sua aplicacao diretamente no Bindere complicado.

• Foi criada uma linguagem de descricao facil de usar queconverte a interface descrita pelo desenvolvedor para o codigousado pelo Binder.

Introducao Dalvik Linux 2.6

Gerenciamento de Energia

• Construıdo sobre o Gerenciador de Energia padrao do Linux

• Utiliza uma polıtica mais agressiva.

• Sao implementados diferentes tipos de Wake Locks paraimpedir que o sistema desligue recursos necessarios para umaaplicacao.

• Devem ser implementados com cuidado: as aplicacoes devemlibera-los quando terminarem de utilizar os recursos.

Introducao Dalvik Linux 2.6

Gerenciamento de Energia

• Construıdo sobre o Gerenciador de Energia padrao do Linux

• Utiliza uma polıtica mais agressiva.

• Sao implementados diferentes tipos de Wake Locks paraimpedir que o sistema desligue recursos necessarios para umaaplicacao.

• Devem ser implementados com cuidado: as aplicacoes devemlibera-los quando terminarem de utilizar os recursos.

Introducao Dalvik Linux 2.6

Gerenciamento de Energia

• Construıdo sobre o Gerenciador de Energia padrao do Linux

• Utiliza uma polıtica mais agressiva.

• Sao implementados diferentes tipos de Wake Locks paraimpedir que o sistema desligue recursos necessarios para umaaplicacao.

• Devem ser implementados com cuidado: as aplicacoes devemlibera-los quando terminarem de utilizar os recursos.

Introducao Dalvik Linux 2.6

Gerenciamento de Energia

• Construıdo sobre o Gerenciador de Energia padrao do Linux

• Utiliza uma polıtica mais agressiva.

• Sao implementados diferentes tipos de Wake Locks paraimpedir que o sistema desligue recursos necessarios para umaaplicacao.

• Devem ser implementados com cuidado: as aplicacoes devemlibera-los quando terminarem de utilizar os recursos.

Introducao Dalvik Linux 2.6

Referencias

• http://code.google.com/android/

• http://source.android.com/

• http://forum.openhandsetdevelopers.com/

Introducao Dalvik Linux 2.6

Diogo de Campos

digo.campos.pet@gmail.com

Joao Paulo Pizani Flor

joaopizani@gmail.com

Maurıcio Oliveira Haensch

cco.mauricio@gmail.com

Pedro Covolan Bachiega

pedrocob@inf.ufsc.br

Introducao Dalvik Linux 2.6