Android Core Aula 2: Inicialização de um sistema Android

1.411 visualizações

Publicada em

Segunda aula do curso "Android Core" ministrada no INATEL em 2013.
Aprenda mais sobre cada fase de inicialização de um sistema android: Boot ROM, Bootloader, Kernel, Init.rc, Zygote, System Server e o fluxo de chamadas de cada um destes componentes.

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

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

Nenhuma nota no slide

Android Core Aula 2: Inicialização de um sistema Android

  1. 1. Android Core Felipe Silveira felipesilveira.com.br Aula 2
  2. 2. Inicialização
  3. 3. Inicialização Boot ROM Boot Loader Kernel Init Zygote System Server
  4. 4. Boot ROM
  5. 5. Boot ROM A. O código de ROM de inicialização irá detectar a partição de inicialização que contém o bootloader. B. Uma vez que a partição de inicialização (que contém o boot) é identificada, o boot ROM irá carregar na memória RAM o código do bootloader (inteiro ou suas primeiras instruções, dependendo da arquitetura) e é feito um "salto de execução" (jump) para a posição de memória onde se encontra o bootloader.
  6. 6. Bootloader O bootloader é um programa especial, separado do kernel do Linux, que é usado para inicializar a memória e carregar o kernel para a RAM. É análogo a softwares como o GRUB. init.s - Inicializa pilhas, coloca zero nos segmentos BSS e invoca o método _main() em main.c main.c - Inicializa hardware (relógios, placa, teclado, console)
  7. 7. Bootloader
  8. 8. Bootloader A. O primeiro estágio do carregador de inicialização irá detectar e configurar a memória RAM externa. B. Uma vez que a RAM externa esteja disponível e o sistema pronto a executar algo mais complexo o bootloader irá carregar o "main bootloader" e colocá-lo na memória RAM externa.
  9. 9. Bootloader C. O segundo estágio do carregador de inicialização é o primeiro grande programa que será executado. Este estágio do bootloader pode conter código para criar sistemas de arquivos, memória adicional, suporte de rede e outras coisas. Em um telefone celular, também pode ser responsável por carregar o código para o "CPU modem" e pela criação de proteções de memória de baixo nível e opções de segurança.
  10. 10. Bootloader D. O próximo passo é encontrar a localização do kernel na mídia de inicialização (Boot media) e colocá-lo na memória RAM. Ele também irá colocar alguns parâmetros de inicialização na memória para serem lidos pelo kernel. E. Por fim, o bootloader irá executar um salto para o kernel do Linux e o kernel assume a responsabilidade do sistema.
  11. 11. Kernel
  12. 12. Kernel A. Uma vez que as unidades de memory management e caches foram inicializados, o sistema será capaz de usar memória virtual e lançar processos no user space. B. O kernel irá procurar no sistema de arquivos raiz pelo código do processo init (que se encontra em em system/core/init) e lançá-lo como um processo no user space.
  13. 13. Init Mecan­ismo de ini­cial­iza­ção dos proces­sos bási­cos do sistema. A imple­men­tação do init encontra-se nos fontes do Android em “system/core/init/init.c”. Tratamento do arquivo de con­fig­u­ração init.rc
  14. 14. Init No init.rc está con­fig­u­rada grande parte do restante da ini­cial­iza­ção do sis­tema, incluindo a exe­cução dos serviços bási­cos do Android, den­tre eles: con­sole: ini­cia o shell ash. ser­vice­m­an­ager: ini­cia o binder (respon­sável pela comu­ni­cação entre os processos). vold: vol­ume dae­mon — con­trola a mon­tagem de vol­ umes de mídia no sis­tema de arquivos.
  15. 15. Init adbd: android debug­ger bridge dae­mon — servi­dor para comu­ni­cação com o cliente adb. media: ini­cia os servi­dores mul­ti­me­dia (áudio, vídeo, etc). boot­sound: toca um som no boot, lendo um arquivo em /system/media/audio/ui/boot.mp3. installd: servi­dor de insta­lação de pacotes/aplicações (*. apk).
  16. 16. Init O init.rc é escrito na linguagem "Android Init Language", que é formada pelas estruturas: Action: Actions representam sequências de comandos, que são iniciados com a ocorrência de um trigger. A sintaxe é: on <trigger> <command> <command> <command>
  17. 17. Init Service: Services são programas inicializados pelo init e que podem ou não ser reiniciados quando , por algum motivo, são finalizados. Sintaxe: service <name> <pathname> [ <argument> ]* <option> <option>
  18. 18. Init Options e Commands: Os options e commands são usados na declaração de Services e Actions, respectivamente.
  19. 19. Init
  20. 20. Init A. O processo init no Android irá procurar um arquivo chamado init.rc. Ele é um script que descreve os serviços do sistema, o sistema de arquivos e outros parâmetros que precisam ser configurados. B. O processo init irá então analisar o script de inicialização e iniciar os processos de serviço do sistema.
  21. 21. Zygote O zygote é o pai de todos os proces­sos Java. Tudo que roda em Java é cri­ado por este processo, que instan­cia uma máquina vir­tual Dalvik para exe­cu­tar um processo ou serviço Java. Ele esta imple­men­tado em C++, e seu código-fonte encontra-se em frameworks/base/cmds/app_process/app_main.cpp.
  22. 22. Zygote O Zygote é responsável basicamente por duas operações: 1) Prover uma infraestru­tura para a exe­cução de apli­ cações Java. 2) Ini­ciar o Sys­tem Server, que geren­cia a base dos serviços do sis­tema opera­cional Android.
  23. 23. Zygote
  24. 24. System Server O system server é o primeiro componente Java a rodar no sistema. Ele vai iniciar todos os serviços Android, como o Telephony Manager e o bluetooth. Localizado em frameworks/base/services/java/com/android/server/Syste mServer.java.
  25. 25. System Server
  26. 26. System Server Serviços inicializados pelo system server: ●Power Man­ager ●Activ­ity Manager ●Tele­phony Registry ●Pack­age Manager ●Con­text Manager ●Sys­tem Con­text Providers ●Bat­tery Service ●Alarm Man­ager ●Sen­sor Service ●Win­dow Manager ●Blue­tooth Service ●Mount Ser­vice ●...
  27. 27. System Server Ao final da execução do system server, o Activ­ity Man­ ager ini­cia alguns proces­sos bási­cos, den­tre eles o com. android.launcher, que é a apli­cação respon­sável pela inter­face grá­fica padrão do Android. Após a execução do System Service, a inicialização é considerada finalizada e e broadcast ACTION_BOOT_COMPLETED é lançado.

×