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

61
Introdu¸c˜ ao Dalvik Linux 2.6 Android Diogo de Campos, Jo˜ ao Paulo Pizani Flor, Maur´ ıcio Oliveira Haensch, Pedro Covolan Bachiega Universidade Federal de Santa Catarina November 18, 2008

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

Page 1: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 2: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Page 3: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Page 4: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Page 5: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Introducao

• O que e Android?

• Caracterısticas Basicas

• Arquitetura

Page 6: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 7: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 8: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 9: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 10: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 11: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Arquitetura

Page 12: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 13: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 14: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 15: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 16: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 17: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Page 18: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Page 19: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Page 20: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Dalvik

• A maquina virtual Dalvik

• Por que nao JVM?

• Zygote

Page 21: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 22: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 23: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 24: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 25: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 26: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 27: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 28: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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

Page 29: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 30: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 31: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 32: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 33: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 34: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Zygote

Page 35: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Agenda

1 Introducao

2 Dalvik

3 Linux 2.6

Page 36: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Page 37: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Page 38: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Page 39: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Page 40: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Linux 2.6

• Por que Linux?

• Glibc e Bionic Libc

• Sobre o Binder

• AIDL

• Gerenciamento de Energia

Page 41: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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 =)

Page 42: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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 =)

Page 43: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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 =)

Page 44: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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 =)

Page 45: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 46: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 47: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 48: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 49: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 50: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Sobre o Binder

Page 51: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 52: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 53: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 54: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 55: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 56: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 57: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 58: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

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.

Page 59: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Referencias

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

• http://source.android.com/

• http://forum.openhandsetdevelopers.com/

Page 60: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6

Diogo de Campos

[email protected]

Joao Paulo Pizani Flor

[email protected]

Maurıcio Oliveira Haensch

[email protected]

Pedro Covolan Bachiega

[email protected]

Page 61: Diogo de Campos, Jo~ao Paulo Pizani Flor, Maur cio ...lisha.ufsc.br/teaching/os/ine5412-2008-2/work/android-slides.pdfOs desenvolvedores t^em acesso ao mesmo framework de APIs utilizado

Introducao Dalvik Linux 2.6