Você está na página 1de 11

Um estudo sobre o Sistema Operacional Android

André Lucio de Oliveira


Leonardo Soares Vianna
Bruno Rebello do Nascimento
Miguel Laroca Vita Neto
Monique Gomes de Araújo Santos

Resumo
O objetivo deste trabalho é apresentar um estudo sobre o sistema operacional
Android, o qual tem sido amplamente utilizado por diversas categorias de
dispositivos móveis como celulares e tablets. O trabalho apresenta inicialmente as
principais características do Android, mostrando em seguida um breve histórico que
descreve a cronologia de todas as versões deste sistema operacional, dando ênfase
nas principais inovações propostas por cada versão. Posteriomente é apresentado o
funcionamento dos principais gerenciadores do Android: a gerência de memória e a
gerência de processos.

Palavras Chaves: Android, Sistema Operacional, Dispositivos móveis.


Introdução

A escolha do tema Android enquanto representante de uma categoria de


sistemas operacionais foi motivada face ao crescimento potencial do uso desse
sistema no mercado de dispositivos móveis. Apesar da pesquisa ter sido motivada
pela expansão do Android, nossos foco principal é entender e apontar como a
plataforma Android foi projetada, como sua arquitetura é dividida e como o sistema
se comporta diante do gerenciamento dos principais recursos dos dispositivos.
Nossa estratégia de estudo parte da compreensão das formas de
administração que o Android emprega em questão de processos, memória e gestão
de energia. Além desses itens que elencamos, procuramos esclarecer algumas das
principais inovações que o sistema concebe em relação ao kernel do Linux, no qual
o Android possui suas bases.

Histórico e versões

O Android é um sistema operacional projetado para smartphones e tablets,


porém pode ser encontrado em outros dispositivos hoje em dia como câmeras
digitais, TVs e até vídeo games. Tem como base a arquitetura do Linux e seguindo a
característica do mesmo, permite que o código fonte seja modificado, mas o Google
exige que a versão modificada “rode” todos os aplicativos disponíveis na Google
Play (loja virtual do Android).
O sistema foi desenvolvido inicialmente pela Android Inc. que tinha o intuito
de desenvolver sistemas operacionais para câmeras digitais, como o mercado para
esse tipo de aplicação era pequeno, resolveram iniciar a produção de um sistema
operacional para smartphones para concorrer com o Symbiam e com o Windows
Phone. Vale lembrar que nessa época o IOS ainda não tinha sido lançado.
A Android Inc. foi comprada pelo Google em 2005 e o lançamento do Android
ficou para 2007 junto com a OPEN HANDSET ALLIANCE que é um consórcio de
empresas de telecomunicação, hardware e software. O primeiro aparelho utilizando
Android só foi comercializado em outubro de 2008. Fabricado pela HTC, o modelo T-
Mobile G1 foi o primeiro aparelho vendido com sistema operacional Android no
mundo.
Mesmo tendo sido lançado em 2007, a primeira versão comercial do Android
só chegou ao mercado em setembro de 2008 com a versão Android 1.0. Antes
dessa versão existiam ainda as versões Alpha e Beta. A primeira só foi lançada
dentro do Google, e a segunda deu início realmente ao desenvolvimento do sistema,
inclusive com o lançamento de kits de desenvolvimento de software para Android.
Todas as versões seguem o esquema de nomenclatura por ordem alfabética desde
a versão 1.5. São elas Cupcake, Donut, Éclair, Froyo, Gingerbread, Honeycomb, Ice
Cream Sandwich, Jelly Bean e kit Kat.
A ideia inicial do Google era por o nome de robôs em cada versão. A primeira
versão era chamada de Astro, em referência ao Astro Boy e a segunda recebeu o
nome de Bender em referência ao Futurama. Porém, como seria necessário o
pagamento de direitos aos detentores, isso se tornaria caro, então surgiu a ideia dos
doces, dando uma pitada divertida a cada lançamento e mantendo assim a ordem
alfabética. Em cinco anos de história do Android, o colaborador Tiago Barros do
Portal Techtudo Notícias separou uma matéria com as principais características de
cada versão:

Android 1.0 Astro - Voltado principalmente para negócios, esta versão tinha
como principais características suporte a navegadores HTML, reprodução de
vídeos via YouTube, além de serviços como GTalk, Gmail, Google Maps e
Google Sync. Logo em sua primeira versão, implantou a janela de notificações,
além de já possuir o Android Market para o download e atualização de apps

Android 1.5 Cupcake - Lançada em abril de 2009, a segunda versão do Android


foi a primeira disponível comercialmente em grande escala. A atualização
trouxe correções de bugs e muitas funcionalidades ao sistema do Google. Além
disso, o Cupcake chegou com o primeiro telefone touchscreen com a
plataforma, o HTC Magic.

Android 1.6 Donut - Cinco meses após a estreia do Cupcake, o Android Donut
chegou com o mesmo padrão visual do sistema anterior, porém ganhou novos
recursos. Foram incluídos mais comandos de voz na busca de conteúdo, online
e offline, integração entre galeria e câmera, melhor busca de apps no Android
Market, com screenshots, e suporte a telas com resolução WVGA.

Android 2.0 e 2.1 Eclair - Com papeis de parede animados, interface


repaginada e novas funcionalidades, o Eclair foi lançado em outubro de 2009 e
atualizado em janeiro de 2010. Nesta versão, surgiu o suporte a sincronização
de contas, o que permitiu que os usuários adicionassem múltiplas contas em
um dispositivo para sincronização de e-mails e contatos. O sistema ganhou
também Bluetooth 2.1, expansão de opções ao tocar um contato, busca por
maior número de conteúdo e novos recursos de câmera (suporte a flash, zoom
digital, macro e modos de cena). Também foi adicionado uma digitação via
teclado virtual mais arrojada, suporte a mais resoluções de tela, além de
melhorias em apps como browser, calendário e Google Maps.
Android 2.2 Froyo - Lançado em 2010 com engine Java V8 e compilador JIT,
esta versão se tornou a mais rápida do Android até então. Entre suas novas
possibilidades estavam o USB Tethering e a possibilidade de usar o
smartphone como um hotspot Wi-Fi.

Android 2.3 Gingerbread - Apenas seis meses após o lançamento do Froyo, o


Gingerbread manteve as mesmas características visuais do antecessor, com
apenas alguns pequenos updates, como na interface de discagem. O sistema
ganhou ainda um novo gerenciador de downloads, suporte para múltiplas
câmeras, além de mais sensores (giroscópio e barômetro), melhora na
autonomia de bateria e compatibilidade com a tecnologia NFC. Lançado em
dezembro de 2010, esta foi a mais popular versão do sistema por muito tempo.

Android 3.0 Honeycomb - Lançado em fevereiro de 2011, ganhou suporte a


tablets e nova interface “holográfica”. Foi adicionada as barras de sistema, com
acesso rápido a notificações; a de ação, com acesso a opções de aplicativos,
além de multitarefas simplificado, teclado redesenhado e navegação em abas
na Internet. A edição Honeycomb trouxe também recursos de câmera (time-
lapse, exposição e foco), visualização de álbuns em tela cheia na galeria, bate-
papo em vídeo via Google Talk, além de suporte para processadores de
múltiplos núcleos e criptografia de dados.

Android 4.0 Ice Cream Sandwich – É o divisor de águas entre as primeiras


versões e o atual lançado em outubro de 2011 e atualizado em março de 2012,
passou a permitir uma total customização de launcher, com opção de adicionar
apps e widgets simplesmente arrastando-os para a sua tela principal, suporte a
pastas, gerenciador de tarefas com screenshots dos aplicativos, recurso de
deslizar para fechar, além do Google Chrome embutido. Entre as novidades
também estão captura de imagens do display, acesso a apps na tela de
bloqueio, desbloqueio do celular com reconhecimento facial e editor de fotos
embutido. Houve ainda melhorias na câmera, gerenciamento de bateria,
utilização de dados e conectividades sem fio.

Android 4.1, 4.2 e 4.3 Jelly Bean - A primeira, 4.1, foi lançada em julho de 2012
com opções de acessibilidade melhoradas, notificações expansíveis,
reorganização automática de atalhos e widgets, transferência de dados de
bluetooth para o Android Beam, melhorias na busca por voz e na câmera, além
da adição do auxiliar Google Now. O Android 4.2, que saiu em novembro de
2012, adicionou mais recursos: fotos panorâmicas em 360 graus com o Photo
Sphere, teclado com a digitação via gestos, melhorias na tela de bloqueio,
multiusuários, novo app de relógio, VPN sempre ligado, mensagens em grupo,
além de correções de bugs. Já na 4.3, que saiu em julho deste ano, os
destaques ficaram por conta do suporte ao Bluetooth com baixo consumo de
energia, resolução 4K e interface de câmera atualizada.

Versão mais recente – Kit Kat: Gestão de Segurança

Apesar de contar com uma interface moderna, a versão 4.4 do Android


manteve o foco na gestão de segurança do sistema. As críticas mais acentuadas
referente a segurança do Android são por parte de desenvolvedores de software que
apontam para a vulnerabilidade que havia no sistema com “portas abertas” para
ação de hackers e alteração de determinada aplicação. Neste âmbito destacamos
alguns recursos relacionados as novidades de segurança no Android 4.4:

 Google Bouncer – Trata-se de um serviço antivírus para atuar na loja


virtual Google Play. A proteção dos códigos dos aplicativos é realizada
de modo constante diretamente na loja.

 Controle sobre certificados digitais – Antes sempre que novos


certificados eram adicionados a lista dos smartphones o sistema
solicitava confirmação ao usuário que em raros casos lia o conteúdo
antes de adicionar, agora nesta versão toda vez que determinado
certificado suspeito tentar ser adicionado, o sistema emite um aviso
claro alertando a ameaça.

 Localização do smartphone – Nesta versão o Android disponibiliza


através do device manager uma aplicação para rastrear o dispositivo
em caso de roubo

 Device mapper verity – Está função está para o nível do kernel do


Android que executa verificação na integridade dos sistemas de
ficheiros dos equipamentos. Segundo o Portal Revolução Digital “é
uma experiência do Google para detectar se está a ser utilizado algum
software do tipo RootKits”.

Gestão de processos

O Android utiliza em seu gerenciamento de memória e processos, bem como


nos demais serviços centrais do sistema, a versão 2.6 do kernel do Linux. Cabe
ressaltar que todas essas ações ocorrem de forma transparente para o usuário, uma
vez que os usuários não fazem chamadas diretamente ao sistema operacional
através do Linux, mas as executam através de aplicações implementadas para uso
facilitado das tarefas.
Alguns debates tem sido levantados com relação a proposição que o Android
é “apenas” uma distribuição Linux, contudo concordamos que apesar do Android ter
sua base de funcionamento no Linux, resumi-lo a uma definição de distribuição Linux
assim como o Debian, Ubuntu e demais, trata-se de um equívoco, pois adaptações
foram concebidas pelo Android em função de sua finalidade, qual seja a de ser
implantado em dispositivos diferente de um computador comum.
O escalonamento de processos no Android é baseado em time-sharing, ou
seja, cada processo possui o seu quantum ou fatia de tempo para executar e a cada
término de tempo para um processo ocorre a troca de contexto. O Android divide
seus processos em classe de prioridade dinâmica e estática a saber:

 Prioridade Dinâmica – Neste tipo de prioridade o escalonador realiza


ajustes nas prioridades visando o uso equilibrado do processador. Por
exemplo, o nível de prioridade dos processos podem ser atribuídos
pelo tempo de sua execução, logo se uma execução permanece por
longo período, esta receberá nível de prioridade mais baixa do que um
processo que permanece na fila de uso do processador.

 Prioridade Estática – Nessa classe o escalonador não faz alterações


como no modelo anterior, aqui as prioridades são utilizadas por
processos de tempo real. Quando não há mais processos em
execução de tempo real, o escalonador abre espaço para processos de
prioridade dinâmica.

O escalonador distingue processos de tempo real utilizando a política FIFO,


de processos de usuários que são escalonados utilizando a política Round Robin.
Cabe enfatizar que todos os processos são carregados e mantidos na memória e
escalonados de acordo com o nível de prioridade.
O Android mantém uma espécie de processo “pai” denominado zygote, que
pode ser comparado ao sentido literal da palavra em seu significado biológico, qual
seja o de ser formador de um organismo. De forma semelhante o zygote é o
processo principal do Android e que carrega consigo todas as bibliotecas do núcleo,
assim ele é também responsável por inicializar a máquina virtual Dalvik e todos os
processos e serviços Java.
O tempo de vida dos processos é administrado pelo Android seguindo alguns
critérios, dentre os quais a quantidade de memória global disponível e a importância
de determinados processos para o sistema. Nessa discussão acerca do ciclo de vida
dos processos vimos que o Android dá prioridade aos processos dentre os quais os
usuários estão interagindo, escolhendo os demais para descartar caso ocorra falta
de memória e de outros recursos. A organização dos processos é feita como na
figura da pilha de execução, onde quem ocupa o topo dessa pilha é exatamente o
processo que está interagindo com o usuário.
Abaixo pode-ses observar na figura o ciclo de vida dos processos compostos
por sete fases ou estados:

Durante todo estudo da disciplina de Sistemas Operacionais, vimos que os


So’s mais modernos a todo tempo procura prover meios de acompanhar e dar
suporte as tarefas mais complexas que foram sendo executadas com o passar do
tempo, dois fatores que sem dúvidas se destacam se referem a otimização de uso
do processador e memória. Nesse ponto com o Android não é diferente, conforme
abordado anteriormente, ele foi desenvolvido sobre o kernel do Linux e algumas
adaptações foram feitas de modo a atender as necessidades dos dispositivos
móveis. Com relação a essas inovações gostaríamos de evidenciar três delas no
gerenciamento dos processos:

 Binder – Alguns serviços necessitam de comunicação entre processos


e o mecanismo responsável por essa função é o Binder, um módulo
implementado no kernel que provê a comunicação entre processos de
aplicativos e processos de sistema, através dele é possível que um
processo possa chamar uma rotina em outro processo.

 Ashmem – A novidade trazida por esse mecanismo permite que dois


processos se comuniquem compartilhando um mesmo espaço de
memória.

 Wakelocks – Para controlar a escassez de energia, este recurso


mantém o dispositivo em modo de baixo consumo quando não há
processos em execução no sistema. Este módulo é flexível, permitindo
ser desabilitado por uma aplicação, caso um processo precise ser
executado em plano de fundo sem interrupção.

Gestão de memória

Assim como na gestão de processos, o Android implementa algumas


modificações na gestão de memória, em relação ao kernel do Linux. O uso de
memória virtual pelos SO’s de forma genérica, tem como principal finalidade suprir
as aplicações em casos de falta da memória física. O Android segue essa política,
sobretudo pelo fato dele ser um sistema embarcado pensado para dispositivos
móveis que tem bem menos memória física do que um computador, além disso o
uso de memória virtual é herdado do kernel do Linux que é o gerenciador de
memória em baixo nível do Android. Abaixo destacamos alguns recursos para
gerência de memória:
 OOM (out of memory) – Mecanismo utilizado na ocorrência de falta de
memória, ele termina os processos quando a memória física apresenta
nível abaixo do mínimo aceitável.

 PMEM – Utilizado na administração de grandes blocos contíguos de


memória física compartilhados entre os drivers do kernel e espaço dos
usuários.

O garbage collector é um mecanismo que traduzido, tem função de coletor de


lixo. Ele tem ação de varrer a memória a fim de eliminar lixos e objetos
desnecessários desocupando-a. Em versões menores que a Froyo ele congelava a
aplicação. Sua leitura era executada em todo heap de memória o que causava um
tempo de parada nas aplicações que chegava a ser maior que 100 ms. Essa
tentativa do sistema em manter espaço de memória livre gera uma contrapartida que
é um gasto maior de processamento e consequentemente de energia. Em versões
superiores a Gingerbread o garbage collector passa a funcionar como um processo
concorrente, agora ele faz a leitura parcial do heap de memória retirando os objetos
não mais utilizados, essa mudança de desempenho ocasionou um ganho de tempo
de parada que diminuiu para menos que 5 ms. O incômodo de interrupção que era
constantemente percebido em mini paradas em aplicações de jogos e vídeo por
exemplo, foi corrigida a partir da otimização do garbage collector que possibilitou
que as aplicações “rodem” mais rápido.
Conclusão

Após ter um conhecimento básico sobre a plataforma Android, observa-se


que em muitos aspectos o Android se difere do Kernel do Linux, apesar de ter nele
suas raízes. Conforme apontado no desenvolvimento da pesquisa essas alterações
visam atender as peculiaridades de um sistema que foi desenvolvido para atuar em
dispositivos móveis.
A maioria das fontes pesquisadas neste trabalho são de autoria de
desenvolvedores de software que tem voltado seus olhares sobre a plataforma
Android, sobretudo por se tratar de um sistema de código livre e que vive momento
de crescimento exponencial, com foco na inovação e melhoramento de diversas
aplicações e serviços.
Referências Bibliográficas

[1] Disponivel em http://developer.android.com/index.html (última consulta realizada


em 15/09/2013)

[1] Disponivel em http://www.horochovec.com.br/blog/gerenciamento-de-memoria-


android/ (última consulta realizada em 15/09/2013)

[1] Disponivel em http://javarockexception.wordpress.com/2012/03/12/estudando-


android-ciclo-de-vida-activity/ (última consulta realizada em 15/09/2013)

[2] Disponivel em http://sergioprado.org/introducao-ao-funcionamento-interno-do-


android/ (última consulta realizada em 03/09/2013)

[3] Disponivel em http://www.revolucaodigital.net/2013/11/12/seguranca-do-android-


4-4-kitkat-65885 (última consulta realizada em 15/10/2013)

[4] Disponivel em http://www.forbes.com/sites/quora/2013/05/13/what-are-the-major-


changes-that-android-made-to-the-linux-kernel/ (última consulta realizada em
16/10/2013)

[5] Disponivel em http://www.cubrid.org/blog/dev-platform/binder-communication-


mechanism-of-android-processes/ (última consulta realizada em 21/08/2013)

[6] Disponivel em

http://books.google.com.br/books?hl=ptBR&lr=&id=8u9wJowXfdUC&oi=fnd&pg=PA1
&dq=sistema+operacional+android (última consulta realizada em 10/09/2013)

Você também pode gostar