1
Facol
Faculdade Escritor Osman da Costa
Lins
Sistemas de Informação – 5º Período
Sistemas Operacionais – Hugo Souza
Alunos : Gleybson Farias
Fabio Lopes
2
Sumario
• Histórico ...........................................05
• Hierarquia/Arquitetura e Organização do
Sistema ............................................10
• Processamento ..................................19
• Memoria ...........................................28
• Arquivos ...........................................33
• E/S ..................................................37
• Segurança.........................................40
• Benefícios, Limitações e conclusões da
equipe sobre o S.O. ...........................44
3
Introdução
Desde a sua criação, em 2005, o SO Android tem
se expandido como Sistema Operacional dos
Smartphones. São várias a versões oficiais
lançadas, sendo a mais nova versão 4.2
(jellybean). Neste estudo, iremos falar sobre as
características de funcionamento deste sistema,
sobre as formas em que este sistema operacional
utiliza para gerenciar memória, processos,
segurança, e entre outros aspectos importantes,
a gerência de energia, visto se tratar de
dispositivos com armazenamento de energia
limitado se comparado a computadores pessoais.
4
Histórico
5
Histórico
• Em agosto de 2005, a Google compra a Android.Inc, uma
pequena empresa em Palo Alto, California, USA, que contava
com Andy Rubin como Co-fundador, que era uma empresa que
estava desenvolvendo um sistema operacional para celulares.
• Em 05 de novembro de 2007, é criadaLicença
OHAde- software
Open Handset
livre e
Alliance, uma aliança liderada pela Google,
teve
35
códigoque
aberto,
masde
queinício
permite
que celulares,
alterações feitas
no código
empresas, entre elas fabricantes de
operadoras
fonte não sejam
telecomunicações, fabricantes de chips e obrigatoriamente
desenvolvedores
de
software.
compartilhadas.
• A partir de então, foi anunciado o Sistema Operacional Android
1.0, e o codigo fonte liberado, sendo de Licença Apache 2.0.
6
Histórico – Primeiro
Dispositivo com SO Android
• O primeiro dispositivo com o SO Android foi
lançado em 22 de outubro de 2008, era o HTC
G-1, T-Mobile, tinha um processador de
528MHz, 192MB de RAM, tela de 3,2 “ e 320 ×
480 pixels, câmera de 3.2 mega pixels, teclado
QWERTY completo de 5 linhas, trackball,
Bluetooth 2.0, Wi-Fi 802.11 b/g, GPS, tinha
117,7 x 55,7 x 17,1 milímetros e pesava 158
gramas.
7
Empresas componentes da OHA
8
Versões do SO Android
9
Hierarquia/Arquitetura e
Organização do Sistema
10
Hierarquia/Arquitetura e
Organização do Sistema
•O Android é um sistema operacional baseado no kernel do
Linux (não igual), tendo uma máquina virtual Java rodando
sobre o kernel do Linux, dando suporte para o
desenvolvimento de aplicações Java através de um conjunto
de bibliotecas e serviços.
•A arquitetura do SO possui basicamente as seguintes
camadas:
•Aplicação;
•Framework de Aplicações;
•Bibliotecas e serviços;
•Android Runtime;
•Kernel Linux.
11
12
Arquitetura e Organização do
Sistema - Camadas
•Aplicações: A camada de aplicativos é a que está no topo
da pirâmide da arquitetura do sistema operacional
Android, composta pelo conjunto de aplicações nativas
do mesmo, bem como aplicações que venham a ser
instaladas. Dentre estes pode–se citar: cliente de e-mail,
despertador, calendário, jogos, mapas, browser e
internet, etc.
13
Arquitetura e Organização do
Sistema - Camadas
•Framework: A camada de framework nativo disponibiliza aos
desenvolvedores as mesmas Applications Programming Interface
(APIs) – Interface de Programação de Aplicativos utilizadas para a
criação de aplicações originais do sistema operacional Android. Este
framework permite que o programador tenha o mesmo acesso ao
sistema que os aplicativos da camada de aplicativos possuem. Este
framework foi criado para abstrair a complexidade e simplificar o
reutilização de procedimentos. Essa camada funciona como um link
com a camada de bibliotecas do sistema operacional que serão
acessadas através de APIs contidas no framework.
14
Arquitetura e Organização do
Sistema - Camadas
•Bibliotecas e serviços: 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. (trataremos mais desse assunto mais a frente). A maior
parte destas bibliotecas e serviços estão desenvolvidos em C e C++;
15
Arquitetura e Organização do
Sistema - Camadas
•O 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. Essa máquina virtual é otimizada
especialmente para dispositivos móveis. A plataforma Google Android permite o
desenvolvimento de aplicativos na linguagem Java. Essa máquina virtual foi construída
pelos engenheiros da Google, para obter um consumo mínimo de memória e
isolamento de processos. Ela permite que as aplicações escritas em linguagem Java
sejam executadas normalmente
16
Dalvik Virtual Machine
As aplicacões da plataforma Android rodam em instâncias da maquina virtual Dalvik. Ela foi
projetada para rodar em sistemas com baixa frequência de CPU, pouca memória RAM disponível e
SO sem espaço de swap. Outra característica dessa máquina virtual e capacidade de serem rodadas
diversas instâncias ao mesmo tempo, deixando a cargo do Sistema Operacional o gerenciamento
de memória, isolamento de processos e suporte a threads.
A Dalvik não e uma maquina virtual Java, pois ela utiliza seu próprio bytecode, no formato .dex, ao
inves do bytecode próprio do Java. O Android Software Development Kit contem uma ferramenta,
chamada dx, que transforma arquivos .class de Java para o formato de bytecode da Dalvik. Isso
permite que a plataforma venha a suportar outras linguagens assim que surgirem ferramentas para
conversão para o formato .dex.
Na inicialização do sistema, é criado um processo para a máquina virtual denominado Zygote. A
partir desse processo, outras máquinas são instanciadas com fork() quando necessárias para rodas
outras aplicações. No Zygote, ficam as bibliotecas compartilhadas em modo somente leitura, e
todos os processos de aplicações tem partes de sua memória mapeadas nesta região do Zygote.
Os processos do Android tem, além de suas pilhas, coletores de lixo separados. Eles devem ser
independentes, porem devem também respeitar o compartilhamento.
17
Arquitetura e Organização do
Sistema - Camadas
Kernel: A camada do kernel é baseada no Kernel do sistema operacional Linux versão
2.6. Esta camada atua também como responsável pela abstração entre o hardware e
os aplicativos e é responsável pelos serviços principais do sistema operacional
Android, como o gerenciamento de memória e de processos. Várias funções do kernel
são utilizadas diretamente pelo Android, mas muitas modificações foram feitas para
otimizar memória e tempo de processamento das aplicações. Essas modificações
incluem novos dispositivos de drivers, adições no sistema de gerenciamento de
energia e um sistema que possibilita terminar processos de maneira criteriosa quando
há pouca memória disponível. O Linux 2.6 foi escolhido por já conter uma grande
quantidade de drivers de dispositivos sólidos e por ter um bom gerenciamento de
memória e processos.
18
Gerência de Processos
19
Processamento
Processo de Boot - O kernel do Linux executa o processo “init”, que inicia as
configurações básicas do sistema operacional Android e inicia outros
processos e serviços, incluindo o zygote, que é responsável por inicializar a
MV Dalvik e todos os processos e serviços Java.
Assim como no Linux, para se iniciar algum processo, é executada a
chamada Fork().
O processo zygote carrega as classes Java do núcleo, e executa os passos
iniciais de processamento. Essas classes Java podem ser reutilizadas por
outros aplicativos do Android e, portanto, nesta etapa, acelera o processo
de inicialização global. Após o processo de carregamento inicial, o zygote
aguarda novas solicitações, ficando por enquanto, ocioso.
20
Processamento
O processo de inicialização acessa o arquivos init.rc e init.device.rc (init.device.rc é
específico do dispositivo.
É no “init.rc” que esta configurada boa parte do restante da inicialização do sistema,
incluindo a execução dos serviços básicos do Android, dentre eles:
• Console: Inicia o shell ash ;
• ServiceManager: Inicia o binder (responsável pela comunicação entre os processos);
• Vold: Volume daemon — controla a montagem de volumes de mídia no sistema de arquivos;
• Adbd: Android debugger bridge daemon — servidor para comunicação com o cliente adb;
• Media: Inicia os servidores multimídia (áudio, vídeo, etc);
•Bootsound: Executa um arquivo de áudio no boot, lendo um arquivo em
“/system/media/audio/ui/boot.mp3”;
• Installd: Servidor de instalação de pacotes/aplicações” *.apk.
Depois de interpretar este arquivo, o “init” entra em um loop infinito monitorando a ocorrência
de eventos e a execução de processos.
Ao executar uma aplicação, o processo “zygote” cria uma instância da MV Dalvik para executá-la,
e cada aplicação roda com um user ID diferente, ou seja, cada aplicação tem o seu ID de usuário
diferente.
21
Processamento – O zygote
O “zygote” é o pai dos processos Java. Todos os
aplicativos desenvolvidos em Java é criado por este
processo, que instancia uma MV Dalvik para executar
um processo ou serviço Java. O “zygote” tem
basicamente dois objetivos principais:
1. Prover uma infraestrutura para a execução de
aplicações Java.
2. Iniciar o System Server, que gerencia a base dos
serviços do sistema operacional Android
22
Processamento
Assim como em Sistemas Unix, os processos possuem
PCB (Bloco de Controle de Processos), contendo entre
várias informações, o estado do processo.
23
Processamento – Prioridade
de Processos
No Android todos os processos são mantidos na memória até
que haja a necessidade de recursos para outros processos. A
ordem na qual os processos são finalizados para liberação de
recursos está associada ao nível de prioridade da aplicação
do mesmo. A prioridade de uma aplicação é igual a de seu
componente de maior prioridade.
24
Processamento – Política de
Escalonamento de Processos
•Assim como no Linux, o sistema operacional Android
divide os seus processos em três grandes classe:
processos interativos, processos em Lote e processos
em tempo real.
•O escalonador do Android não distingue processos
interativos de processos batch, diferenciando-os apenas
dos processos em tempo real.
•Android é baseado em time-sharing, ou seja, o tempo
do processador é dividido em fatias de tempo, fatias
essas denominadas de quantum, as quais são alocadas
aos processos.
25
Processamento – IPC (Interprocess communication)
O kernel utilizado pelo Android também introduz o
Binder, um novo mecanismo para a comunicação entre
processos (IPC - Inter-process communication) e
chamada remota de métodos, que permite que um
processo possa chamar uma rotina em outro processo,
e que é responsável pela identificação do método a ser
invocado e da passagem dos argumentos entre os
processos.
26
Processamento – Módulo
Wakelocks
•O módulo Wakelocks foi mais uma alteração referente
ao Kernel do Linux.
•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.
27
Gerência de Memória
28
Memória
Referente à gerência de memória, o Android introduz um
mecanismo (OOM – Out-of- Memory Handler) para terminar processos
quando na falta de memória.
o Kernel do Android possui algumas modificações em relação ao
Kernel do Linux. Entre elas, citamos:
•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.
•Pmem – Utilizado para o gerenciamento de grandes regiões
contíguas de memória física compartilhadas entre o espaço dos
usuários e drivers de Kernel.
29
Memória
•O SO Android também se utiliza do conceito de
memória virtual, bem como do conceito de Swap.
•O gerenciamento de memória em baixo nível do
Android é feito pelo Linux Kernel 2.6. A descrição
da memória virtual é feita portanto no Linux
através de segmentação e paginação.
30
Memória - Segmentação
A segmentação divide a memória em 2 espaços
distintos, o espaço do kernel (Kernel Space) e o
espaço do usuário (User Space). Dentro destes
espaços temos os 4 segmentos básicos:
• Kernel Code.
• Kernel Data/Stack.
• User Code.
• User Data/Stack.
31
Memória - Paginação
•onde a memória é dividida em pedaços de tamanho fixo
(páginas), e segmentos de código são alocados nestes e
mapeados utilizando-se uma tabela de páginas, ao invés de
alocação de todo código de uma única vez.
•Quando a memória já preencheu todas as páginas
possíveis é necessário realizar a substituição de páginas
quando o processo em execução requisita que uma nova
página seja alocada.
•O algoritmo utilizado para esta substituição de páginas é o
Least Recentment Used (LRU).
32
Sistema de Arquivos
33
Sistema de Arquivos
•O sistema de arquivos utilizado pelo Android até a versão 2.2 (Froyo) é o
YAFFS2 (Yet Another Flash File System, 2nd edition).
•YAFFS é o primeiro sistema de arquivos que foi projetado especificamente
para Memória flash NAND.
•Na maioria dos sistemas de arquivos flash, os blocos obsoletos são marcados
como tais, mas o YAFFS2 marca também os blocos com números de sequência
que aumentam de forma uniforme. Quando o sistema de arquivos é escaneado
no momento da montagem, os inodes válidos podem ser rapidamente
identificados. O YAFFS também mantém árvores em RAM para representar a
estrutura de blocos do dispositivo flash, inclusive a montagem rápida por meio
de verificação de pontos —um processo que salva a estrutura em árvore RAM
no dispositivo flash em uma desmontagem normal para que ele possa ser
rapidamente lido e restaurado na RAM no momento da montagem. O
desempenho no momento da montagem é uma grande vantagem do YAFFS2
sobre outros sistemas de arquivos flash.
34
Sistema de Arquivos
•A partir da versão 2.3 (gingerbread), o sistema de
arquivos passou a ser ext4, que é uma evolução do
sistema ext3.
•Os diferenciais do ext4 referente ao ext3 é a
melhora
da
performance,
limites
de
armazenamentos e recursos do sistema de
arquivos corrente, com ou sem a “reformatação”
e/ou reinstalação do SO e softwares
“environment”.
35
Sistema de Arquivos
•Diferente dos sistemas desktop, no Android,
apenas o aplicativo pode acessar seu próprio
diretório e criar subdiretórios com permissões para
que outras aplicações o acessem.
•No android, o acesso ao sistema de arquivos é
feito através das classes java.oi.
36
E/S
I/O
37
E/S
O gerenciamento de entrada e saída no
Android é implementado através doe
devices drivers, um device para cada
dispositivo.
Todas as operações de entrada e saída são
efetuadas como uma sequência de bytes,
não existindo o conceito de registro ou
métodos de acesso
38
E/S
Em relação à entrada e saída de dados, o
Kernel do Android inseriu o 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’’.
39
Segurança
40
Segurança
O kernel Linux providencia ao Android um conjunto de aspetos chave no seu
modelo de segurança:
• Um modelo de permissões baseado no utilizador - cada entidade no sistema
de ficheiros tem um dono e está atribuído a um grupo. Um utilizador com
permissões para tal pode modificar as permissões de leitura, escrita e
execução de uma entidade para o seu dono, para o grupo e para os restantes
utilizadores. Existe ainda um utilizador especial (superuser) que pode violar
estas permissões, tendo acesso completo ao sistema de ficheiros.
• Isolamento de processos - Um processo em Linux funciona como uma
máquina virtual: tem um espaço de endereçamento próprio, um repertório de
instruções e um estado interno (i.e. estado do processador, recursos externos,
etc).
41
Segurança
• Um mecanismo de comunicação interprocesso segura
extensível – Um processo apenas pode comunica com
outros através de um conjunto de mecanismos bem
definidos (que vão desde a aproximação naive de escrita
de informação num ficheiro em disco até à utilização de
pipes ou memória partilhada).
• A hipótese de remover partes desnecessárias ou
potencialmente inseguras do kernel.
42
Segurança – SandBox de
Aplicações
A plataforma Android aproveita a gestão de utilizadores providenciada pelo
kernel Linux para atacar o problema do isolamento de aplicações. O Android
atribui um identificador de utilizador (UID) a cada aplicação na altura da sua
instalação, não partilhado por qualquer outra aplicação por defeito. Quando
uma aplicação é iniciada, é executada no contexto desse utilizador num
processo separado. Esta aproximação diverge de outros sistemas operativos
(incluindo o próprio Linux), em que várias aplicações correm sob o mesmo
utilizador.
A estratégia aplicada pelo Android assegura o isolamento das várias aplicações
do sistema ao nível do kernel, utilizando para isso facilidades existentes no
Linux. Uma aplicação não será autorizada, por exemplo, a aceder ao sistema
de ficheiros completo, dado que cada aplicação possui uma diretoria de dados
própria, cujo owner é o utilizador atribuído à própria aplicação. Isto abrange o
acesso a alguns dispositivos e dados chave do telefone (e.g. uma aplicação não
pode fazer chamadas ou alterar as definições do telefone, dado que estas
funções são efetuadas por aplicações separadas).
43
Benefícios e Limitações sobre
o Android
44
Benefícios
•Sistema de código aberto e gratuito;
•Milhares de aplicações disponíveis no Google Play;
•Vários
grupos
que
personalizadas do sistema;
desenvolvem
Roms
•Os dados são sincronizados com todos os serviços
da Google;
•Facilidade de programar pala esta plataforma;
•Interface gráfica agradável.
45
Limitações
•Pouca duração da bateria de aparelhos com este
sistema;
•Alguns aplicativos tem incompatibilidades para
certas versões do Android;
•Muitos Aplicativos maliciosos presentes no Google
Play;
46
Conclusão
•É um sistema otimizado para mobiles, mas tem
boa performance. Relativamente seguro, com uma
estrutura bem detalhada, bem como um stack de
aplicações nativas que o torna atraente.
•Tem um gerenciamento de memória e processos
que priorizam economia de energia, sem abrir mão
de desempenho. Por utilizar linguagem java para se
programar, torna mais fácil desenvolver para este
sistema.
47
Referências Bibliográficas
•Ibm.com - Anatomia dos Sistemas de Arquivos Flash do Linux
http://www.ibm.com/developerworks/br/library/l-flash-filesystems/
Acessado em 06.5.2013;
•developer.android.com – Arquitetura Google Android. http://developer.android.com/
Acessado em 06.5.2013;
•Sistemas operacionais – Conceitos e Aplicações. Silberschatz, Galvin & Gane. Editora Campus, 2001.
•Sistemas Operacionais Modernos, 3a edição. Andrew Tanenbaum. Editora Pearson, 2009.
•Analysis of the Android Architecture - Stefan Brahler – 2010, disponível em http://os.ibds.kit.edu/downloads/sa_2010_braehler-stefan_androidarchitecture.pdf;
•Sistema Operacional Android - Rafael Caveari Gomes, Jean Alves R. Fernandes & Vinicius Corrêa Ferreira, 2012. Disponível em
http://www.midiacom.uff.br/~natalia/2012-1-sisop/tgrupo1.pdf;
•UPV - HDI ANDROID - Herraiz Antón, Gabriel. 2012. Disponível em http://histinf.blogs.upv.es/files/2012/12/ANDROID-Gabriel-HerraizAnt%C3%B3n.pdf ;
•An Introduction to Android - Huang Xuguang. 2009. Disponível em
https://androidgroup.googlecode.com/files/Introduction%20to%20Android.pdf;
•Mobile Devices - An Introduction to the Android Operating Environment Design, Architecture, and Performance Implications - Dominique A.
Heger. 2011. Disponível em http://people.stfx.ca/x2011/x2011bhd/391/m_78_3.pdf;
•Introdução a Arquitetura Android - Maycon Viana Bordin. Disponível em http://sites.setrem.com.br/stin/2012/anais/Maycon.pdf;
•Segurança no Android - Daniel Cibrão & Rui Gonçalves. 2012. Disponível em http://web.fe.up.pt/~jmcruz/ssi/ssi.1112/trabs-als/final/G4T10android-final.pdf;
•Android – Flávia Lacerda, Glayston Castro, Raphael Turquette, Vivianne Rezende, Disponível no site http://prezi.com/rau9jgu9wxye/copy-oftrabalho-de-so-android/;
48
Download

Processamento