Sistemas Operacionais - Android
Por: Caoane F. Rodrigues • 26/5/2016 • Projeto de pesquisa • 6.063 Palavras (25 Páginas) • 449 Visualizações
[pic 1]
Arquitetura de Sistemas Operacionais
Trabalho Bimestral – Prof° Michael Pontes
Caoane F. Rodrigues – C14BHH-6
Lucas H. Galvão –
Renan M. Caputo – C16177-2
Sumário
O Que É Android ............................................................................................ 03
Arquitetura de S.O. ......................................................................................... 03
Arquitetura de S.O. Android ......................................................................... 06
Processos .......................................................................................................... 08
Processos no Android ..................................................................................... 08
Threads ............................................................................................................. 12
Threads no Android ....................................................................................... 13
Escalonadores ………………………..……………………….......…………. 15
Escalonadores no Android ............................................................................ 18
Sincronismo ..................................................................................................... 18
Deadlock .......................................................................................................... 19
Considerações Finais ...................................................................................... 21
O que é o Android?
O Android é um sistema operacional para dispositivos móveis open source baseado em Linux e desenvolvido pela Open Handset Alliance, liderada pelo Google em uma plataforma de código aberta sob a licença apache; Sendo open source, é permitindo que os fabricantes possam modificar seu código fonte e essa liberdade permite adicionar novos recursos e incorporá-los ao sistema, fazendo com que o software evolua constantemente.
No Android, aplicações são desenvolvidas em linguagem de programação Java, utilizando o Android SDK e executam na maquina virtual Dalvik. O Android, entretanto, possui suporte para o desenvolvimento de aplicações nativas, escritas em C e C++, através do Android NDK. Atualmente, o sistema possui cerca de 12 milhões de linhas de código, sendo: 3 milhões em XML; 2.8 milhões em C; 2.1 milhões em Java; e 1.75 milhões em C++.
O sistema operacional também está presente em mais de 56% dos smartphones em todo o mundo, tornando o Android uma das plataformas mais interessantes para o desenvolvimento de aplicativos.
Ao contrário do que muita gente pensa, o Android não é desenvolvido apenas pela Google, existe um grupo de empresas como a Motorola, Samsung, LG, Sony Ericsson, HTC, China Mobile, Intel, Asus e muitas outras, que forma o Open Handset Alliance (OHA) com o objetivo de desenvolver a plataforma.
Arquitetura de SO
As múltiplas partes que compõem o sistema podem ser organizadas de diversas formas, separando suas funcionalidades e modularizando seu projeto. A arquitetura do sistema operacional pode ser classificada:
– Arquitetura Monolítica
– Arquitetura de Camadas
– Máquina Virtual
– Arquitetura Microkernel
Arquitetura Monolítica
A arquitetura monolítica é a arquitetura de sistema operacional mais comum e antiga, onde cada componente do S.O. está contido no núcleo do sistema. Ela é uma aplicação formada por vários módulos que são compilados separadamente e depois linkados, formando assim um grande sistema onde os módulos podem interagir.
Tem como característica aumentar a complexidade e o tamanho do código. Grupam-se tarefas similares em camadas. É dividido em camadas com níveis sobrepostos. Camadas inferiores oferecem funções para camadas superiores. Cada camada comunica-se exclusivamente com as camadas acima e abaixo apenas.
Uma aplicação monolítica é autônoma e independente de outras aplicações de computação. A filosofia do projeto consiste em um aplicativo que não é responsável apenas por uma determinada tarefa, mas que também pode executar todos os passos necessários para completar uma determinada função.
Um aplicativo monolítico descreve uma aplicação de software que é projetado sem modularidade. A modularidade é desejável, em geral, uma vez que suporta a reutilização de partes da lógica da aplicação e também facilita a manutenção, permitindo o reparo ou substituição de peças da aplicação sem a necessidade de substituição por atacado.
A modularidade é obtida em graus diversos, por diferentes abordagens de modularização. Código baseado em modularidade permite aos desenvolvedores reutilizar e reparar as partes do aplicativo, mas ferramentas de desenvolvimento são necessários para executar essas funções de manutenção (por exemplo, a aplicação pode precisar ser recompilada). Objeto baseado em modularidade prevê a aplicação como uma coleção de separar os arquivos executáveis que podem ser mantido de forma independente e substituído sem reimplantar o aplicativo inteiro (por exemplo, arquivos "dll" da Microsoft, arquivos "shared object" da Sun/UNIX). Alguns recursos objeto de mensagens permite aplicações baseadas em objeto serem distribuídos em vários computadores (por exemplo, Microsoft COM +). Service Oriented Architectures uso padrão de comunicação específica e protocolos de comunicação entre os módulos.
Tem como vantagem a modularidade, pode-se programar uma camada sem exigir modificações nas outras. Simplificada validação, depuração e modificação, também é altamente eficiente devido a intercomunicação direta entre os seus componentes.
Arquitetura de Camadas
À medida que os sistemas operacionais tornaram-se mais complexos e maiores, projetos puramente monolíticos tornaram-se inviáveis e, então a arquitetura em camada, ou modular, tornou-se uma boa opção, agrupando "camadas" de componentes, ou seja, conjunto de procedimentos, que realizam tarefas similares.
...