Você está na página 1de 43

Sistema

Operacional
ANDROID
Equipe

▣ Neemias Santos
▣ Segismar Junior

Disciplina: Sistemas Operacionais


Prof.º: Gentil

2
Breve História do Android

▣ Google adquiriu em 2005 a Android Inc.


▣ Na Google conduzida por Andy Rubin, foi desenvolvido para sistemas móveis
baseado em Linux.
▣ Objetivo: de ser uma plataforma flexível, aberta e de fácil migração para os
fabricantes.
▣ Foi desenvolvido na plataforma Java e atualmente é mantido pela OHA (Open
Handset Alliance).

3
Arquitetura do Android

▣ O Android é mais do que um sistema operacional.


▣ É na verdade um software stack composto por 5 camadas.
▣ A base do Android é uma versão modificada do kernel Linux 2.6.

4
Camadas
Android 5ª


5
System Apps

 O Android vem com um conjunto de aplicativos


principais para e-mail, envio de SMS, calendários,
navegador de internet, contatos etc.
 Os aplicativos do sistema funcionam como
aplicativos para os usuários e fornecem
capacidades principais que os desenvolvedores
podem acessar pelos próprios aplicativos.

6
Java API Framework

 Essas APIs formam os blocos de programação que


você precisa para criar os aplicativos Android
simplificando a reutilização de componentes e
serviços de sistema modulares e principais,
inclusive:
– Um gerenciador de recursos;
– Um gerenciador de notificação;
– Um gerenciador de atividade ;
– Provedor de conteúdo.

7
Bibliotecas C/C++ nativas

 Essas bibliotecas são responsáveis por fornecer


funcionalidades para manipular o áudio, vídeo,
gráficos, banco de dados e browser.
 Algumas bibliotecas são a Bionic, a OpenGL/ES
para trabalhar com interface gráfica, e a SQLite
para trabalhar com banco de dados. Aqui também
estão os serviços usados em camadas superiores,
como máquina virtual Java Dalvik.

8
Android Runtime

 Permite que cada thread rode sua própria instância


da MV (máquina virtual). Embora no
desenvolvimento de aplicativos seja utilizada a
linguagem Java, as aplicações não são executadas
em uma máquina virtual Java tradicional, e sim
em outra chama de Dalvik.

9
Camada de abstração de hardware (HAL)

 Abstração dos drivers de dispositivos


 O Android framework foi desenhado para acessar o
HAL, e não a camada de kernel (drivers) direramente.

10
Linux Kernel

 O kernel atua como uma camada de abstração


entre o hardware e o resto da pilha de
software.
 Várias alterações da versão 2.6 do Linux
kernel

Principais Serviços:
- Segurança;
- Gerenciamento de memória
- Gerenciamento de processos
- Pilha de protocolo de redes
- Modelo de drives

11
Linux Kernel

 Como vimos anteriormente o Android usa uma versão modificada do kernel do Linux. Dentre as
principais modificações, podemos citar:
• Blinder: Em todo sistema operacional com suporte à memória virtual os processos rodam em
diferentes regiões de memória. Isso significa que nenhum processo tem acesso direto à região
de memória de outro processo ou thread.

• Ashmem: É um novo mecanismo de compartilhamento de memória, onde dois ou mais


processos podem comunicarem-se através de uma região compartilhada de memória. É mais
leve e fácil de usar, tem um melhor suporte a dispositivos com pouca memória, já que tem a
capacidade de descartar regiões de memória compartilhada de maneira segura em caso de
pouca memória disponível. Sua implementação encontra-se em “mm/ashmem.c”.

12
Linux Kernel
• Logger: O Android possui um sistema global de logs, implementado através de um módulo do
kernel. É criado quatro arquivos de dispositivo em “/dev/log”, onde cada um representa um
buffer diferente. Para as aplicações acessarem o sistema de log, deve-se abrir, escrever ou ler
num destes arquivos de dispositivo. A implementação deste módulo no kernel encontra-se em
“drivers/misc/logger.c”.

13
Linux Kernel

• Wakelocks: Se um dispositivo Android ficar um tempo sem ser usado, entrará em modo de baixo
consumo para garantir economia de bateria, visto que a energia em dispositivos móveis é um recurso
escasso, diferente de um computador pessoal que é o principal alvo do sistema Linux. O módulo de
wakelock permite que as aplicações desabilitem o mecanismo de baixo consumo. Sua implementação
encontra-se em “kernel/power/wakelock.c”.

• Oom handling: Faz o controle do uso de memória do sistema operacional e encerra processos se
verificar que a memória disponível esta abaixo de um valor mínimo aceitável. É implementado em
‘‘drivers/misc/lowmemorykiller.c’’.

• Timed GPIO: É o que possibilita acionar saídas de Input/Output (I/O)–Entrada e Saída de forma
temporizada. Está implementado em ‘‘drives/misc/timed_gpio.c’’.

14
2.
O Sistema de
Arquivos Principais diretórios

15
Sistema de Arquivos

*Semelhante ao Linux

16
 O sistema operacional Android gerencia os arquivos para facilitar o acesso dos usuários ao seu
Sistema de Arquivos
conteúdo.

 A parte do S.O que é responsável por essa gerência é o sistemas de arquivos.

 É usado o padrão de sistema de arquivos hierárquico (FHS, na sigla em inglês)

 Principais diretórios do Android são:


• o “data”, que armazena os dados das aplicações;
• o “system”, com as bibliotecas (system/lib), serviços (system/bin e system/xbin) e
aplicações Java (system/app).

17
 O Android implementou uma biblioteca chamada Bionic para usar como biblioteca do sistema.
Sistema
Contém de Arquivos
os diretórios:
• / - diretório raiz (Android e Linux)
• /Cache – armazenamento de dados para execuções rápidas (Android)
• /Data - contém dados do usuário armazenado sem uma partição separada de MTD
(Android).
• /Dev – arquivos de dispositivos (Linux e Android)
• / Init – inicialização (Android)
• /Proc - kernel e arquivo de processo (Linux e Android)
• /Root – Diretório home para o super usuário (Linux e Android)
• /System – Sistema (Android)

18
Sistema de Arquivos

19
3. Conhecendo processos
Processo do BOOT importantes para o Android

20
Etapas do
BOOT

21
Inicialização e execução do código de boot presente na ROM

 Boot Rom: Após o equipamento ser ligado o hardware


efetua uma busca com objetivo de detectar o carregador
de boot (Bootloader) localizado na memória ROM.
 Após a detecção do Bootloader, ele é carregada para uma
região de memória existente dentro da BIOS e é
executado dando início a 2º etapa.

22
O Bootloader

 Bootloader: é uma pequena aplicação executada antes do


sistema operacional entrar em execução. Bootloader é
desenvolvido pelos fabricantes dos dispositivos sendo
específicos para processadores e placas-mães. Ele não é
parte do sistema operacional Android podendo variar de
acordo com o fabricante.
 O objetivo desses inicializador de boot é executar testes
primários de hardware e acessar o armazenamento do
dispositivo carregando o Kernel na memória RAM para que
ele assuma o controle do equipamento.

23
O Kernel

 Kernel: inicia suas funcionalidades de forma similar ao


Kernel do Linux. Ao começar a operar, o Kernel efetua
configurações no cache, faz a segurança da memória
principal, a inicia o escalonador de processos e exerce o
carregamento de drivers.
 Subsequentemente é efetuada uma busca nos arquivos de
sistema a procura do “Init”, o primeiro processo de sistema.

24
O processo Init

 O Android implementa seu próprio mecanismo de


inicialização de processos básicos em um único programa,
que é diferente do mecanismo encontrado no Kernel Linux
que utiliza uma combinação de programas no processo de
boot como o uso de uma tabela de inicialização.
 A implementação do “init” encontra–se nos códigos fontes
do Android disponível em “system/core/init/init.c”.

25
O processo Init

 Uma das principais funções desse processo é a execução das informações contidas em um arquivo
de configuração chamado “Init.rc”.

 Este arquivo opera de forma semelhante ao /etc/Inittab presente no Linux. É o “Init.rc” que diz
como o sistema fará o restante do processo de boot, englobando a execução dos serviços básicos do
Android, dentre eles:
• Console: Inicia o shell ash presente no sistema Android;
• Vold: Volume daemon — controla a montagem de volumes no sistema de arquivos;
• Media: Inicializa servidores multimídia;
• Installd: Servidor de instalação de pacotes/aplicações;

26
Zygote/ Dalvik

 O “Init” também inicia alguns daemons do sistema que


lidam com requisições diversas de serviços, como
requisições de rede, atividades de hardware, dentre outros.
Outro processo iniciado pelo “Init” é o Zygote que tem
como função prover a máquina virtual Dalvik ao sistema
sempre que uma nova aplicação é inicializada. Nessa etapa é
iniciada a camada de execução do sistema(Runtime).

27
System Server

 Depois de completas as etapas acima, o Zygote inicia o


System Server que é executado sobre uma máquina virtual
Dalvik. A função do System Server, é finalizar o processo de
boot iniciando todos os serviços de sistema escritos em Java.
 Dentre eles temos: Power Manager, Activity Manager,
Telephony Registry, Package Manager, Context Manager,
Alarm Manager,Sensor Service, Window Manager,
Notification Manager, entre outros.

28
4.
Gerenciamento de
processos e
memória Nos Bastidores do Android

29
Dalvik Virtual Machine X Android Runtime

30
Dalvik Virtual Machine X Android Runtime

31
Prioridade e status de processos

▣ Todos os processos são mantidos na memória até que haja a necessidade de


recursos para outros processos.
▣ Finalização e liberação de recursos de processos é associada ao nível de
prioridade da aplicação do mesmo.

32
Prioridade e status de processos

33
Memória Virtual

▣ Segmentação.
▣ Realocação.
▣ Paginação.
▣ Proteção.

34
Comunicação entre processos

35
Escalonamento de CPU

36
Escalonamento de CPU

37
E os Deadlocks ?

Como funciona o Deadlock no Android?

38
Desenvolvimento no Android

39
Desenvolvimento no Android

40
API do Android

41
Referências

• http://developer.android.com
• https://joaotorresjunior.wordpress.com/2015/08/21/processo-de-boot/
• de Oliveira, R.; Carissimi, A.; Toscani, S. – “Escalonamento em Linux” Disponível em: http://www.inf.ufrgs.br/~asc/livro/secao94.pdf
• https://docplayer.com.br/1012682-Sistema-operacional-android.html
• http://www.decom.ufop.br/imobilis/sequencia-de-boot-para-o-carregamento-do-android/
• https://pt.slideshare.net/guilhermealarcao/apr-android
• Wikipédia – “Deadlock”. Disponível em: http://pt.wikipedia.org/wiki/Deadlock
• https://pt.slideshare.net/locutorleandrojr/gerenciamento-de-arquivos-nos-sistemas-operacionais
• Pereira, L. C. O.; Silva, M. L. – “Android Para Desenvolvedores”. 1 ed., Brasport, 2009.

42
Obrigado
Perguntas?

43

Você também pode gostar