• Nenhum resultado encontrado

Sistema Operacional ios

N/A
N/A
Protected

Academic year: 2021

Share "Sistema Operacional ios"

Copied!
15
0
0

Texto

(1)

Universidade Federal Fluminense

Engenharia de Telecomunicações

Sistemas de Computação para Telecomunicações

Professora: Natalia Castro Fernandes

Sistema Operacional iOS

Carlos Eduardo Covas Costa

Felipe Araújo Silva

João Carlos Moreno Braga

Joaquim Paulo Faria de Carvalho

(2)

Motivação

Ao falar do iOS, não podíamos deixar de citar seu principal idealizador cujo nome vai perdurar por tempos no cenário voltado para tecnologia da informação, seu nome é Steven Paul Jobs. A maioria das pessoas no mundo já utilizaram algumas das criações da qual ele foi gestor ou até mesmo idealizador, podemos citar aqui o Macintosh, o ipod, o iphone e entre outros tantos outros projetos com a cara da Apple empresa essa que em seus produtos carrega uma letra “i”, ao pensar sobre a imposição da mesma antes de cada produto e antes mesmo da realização deste trabalho sempre nos recorria à mesma pergunta o porquê daquela letra e a carga semântica que a construção iria agregar no futuro a empresa.

Tudo começou, em uma garagem no Vale do Silício, na Califórnia quando dois jovens desprovidos de capital e incentivos de terceiros, tiveram a brilhante ideia de começar a montar um computador e que em 10 anos a Apple cresceu de apenas dois funcionários numa garagem até uma companhia de US $ 2 bilhões com mais de 4000 empregados. Engana-se quem pensa que a tarefa foi fácil, para a sorte de todos Steve Wozniack e Steven Jobs se complementava um era um excelente engenheiro e com um conhecimento vasto na área de eletrônica, enquanto o outro era um gestor nato e empreendedor exímio. Jobs acreditava que computadores e gadgets deveriam ser fáceis o suficiente para ser operados por qualquer pessoa, como gostava de repetir em um de seus bordões prediletos, que era "simplesmente funciona" (em inglês, "it just works"). Outro aspecto que Jobs desenvolveu a seu favor e contribui muito para crescimento da empresa foi o chamado campo de distorção de realidade, no qual ele usava o mesmo para incentivar e motivar seus funcionários a fazer o que julgava impossível deste esforço coletivo em realiza as metas propostas, mas de maneira diferente das demais empresas. Sendo assim, a Apple assumiu o seguinte lema “menos é mais”, a partir desta frase simples e repleta de informação adquiri seu principal nome e sobrenome, agregando todos os valores propostos em seus produtos através da letra “i” que remete a inovação.

Com uma política voltada para projetos arrojados e com uma estética singular, e sempre buscando uma integralização entre o hardware e o software visando sempre à qualidade e a valorização da propriedade intelectual contida em seus produtos, propiciando ao seu usuário a experiência única de usar os produtos mais desejados do mundo. O ios é o sistema operacional móvel da Apple na qual está baseado o trabalho que será apresentado, o qual pode ser metaforicamente como a informação que cresce de maneira exponencial, sendo assim é compromisso da empresa está intimamente ligado e a acompanhar essas atualizações, e na medida do possível está na frente das pesquisas tecnológicas na área em questão.

Para motivação na execução do trabalho gostaria de citar um trecho do discurso feito Jobs em Stanford quando ele menciona uma publicação incrível chamada The Whole

Earth Catalog, que era uma das bíblias de sua geração. Em especial está era a edição

final, onde havia uma fotografia de uma estrada de interior ensolarada e daquele tipo onde você poderia se achar pedindo carona se fosse aventureiro. Abaixo, estavam as palavras: "Continue com fome, continue bobo." Resumindo a mensagem que Jobs queria transmitir era a seguinte que devemos está sempre apaixonados e famintos por está sempre aprendendo, afinal a vida é um eterno aprendizado.

(3)

Introdução

Este sistema operacional vem se destacando desde sua criação em 2007, sempre com grandes números de vendas.

Algumas características que tornam esse sistema tão querido estão listadas abaixo: Beleza dos dispositivos que contém este sistema operacional: Apesar de não ser relevante quando estamos falando das vantagens do sistema, este é um fator importante para a venda dos dispositivos.

Push notifications: Estas notificações são derivadas de servidores remotos e são muito úteis, pois fornecem informações ao usuário mesmo quando este não está executando um aplicativo.

Padronização de bibliotecas e estrutura de programação: Esta padronização facilita a contrução de aplicativos e migração dos mesmo para várias plataformas como iPad, iPod e iPhone.

Proceso fechado e autoritário para homologação de aplicativos: O rígido processo que a Apple tem para homologar os aplicativos que serão distribuídos passam confiabilidade ao usuário.

Todos os usuários recebem atualizações de forma coerente: As atualizações das versões de iOS são amplamente divulgadas.

(4)

Estrutura do Sistema

A estrutura do iOS é descrita como um conjunto de quatro camadas, como pode ser visto na figura 1. Esse sistema obedece uma hierarquia, de forma que quanto mais abaixo na camada, maior deve ser a dificuldade no desenvolvimento e na compreensão.

Figura 1.

i) Cocoa Touch:

Esta é a camada de mais alto nível e que contém os principais frameworks para a criação dos aplicativos do iOS. Ela define a infraestrutura e o suporte para as principais tecnologias como multitarefas, entrada de dados baseada em toque, notificações, além de outros serviços de alto nível. A maior parte das tecnologias utiliza Objective-C como linguagem de programação e seus frameworks fornecem suporte a orientação a objetos, gerenciamento de arquivos, operações de rede, etc. Abaixo, serão citados algumas das principais tecnologias disponíveis:

i.1) Storyboard:

É uma tecnologia, introduzida no iOS 5, para o projeto da interface de usuário em um aplicativo. Esta tecnologia permite o projeto de toda a interface de usuário em apenas um lugar. Com esta tecnologia pode-se definir transações de um controle de vistas para o outro e com estas transições é possível perceber o fluxo entre as interfaces de usuário além do conteúdo.

i.2) Suporte a Documentos:

Essa característica permite a manipulação de dados associados aos documentos do usuário. Ela foi inserida a partir do iOS 3.2 para iPad e permitiu, aos usuários, passar arquivos de um aplicativo para outro, tornando possível abrir um arquivo em outro aplicativo de preferência. Sendo assim, quando um desenvolvedor registra um aplicativo com um manipulador designado para certos tipos de formatos, ele permite que essa informação seja usada por outras aplicações que oferecerão mais opções de visualização do mesmo arquivo. Assim como quando um aplicativo registrado pode abrir certos tipos de arquivos o desenvolvedor pode registrar essa capacidade no

(5)

projeto do Xcode e quando uma aplicação for aberta, este aplicativo será mais uma opção de renderização para o usuário.

Outra funcionalidade do Document support é a funcinalidade de visualização rapida (‘Quick Look’) que permite a visualização prévia do conteúdo do documento antes de abri-lo com um aplicativo apropriado.

No iOS 5, o framework UIKit a classe UIDocument que facilitou a implementação de aplicações baseadas em documento, especialmente as guardadas na nuvem (iCloud). Essa classe permitiu suporte embutido para leitura e escrita assíncrona em nos dados de um arquivo, um modo de salvar mais seguro e automático, suporte para detecção de conflitos nas nuvens, além de suporte para arquivos simples ou representação para pacotes de arquivos.

i.3) Multitarefa:

Os aplicativos para iOS podem estar em um dos 5 estados de execução: Not running: O aplicativo foi terminado ou não foi iniciado.

Inactive: O aplicativo está no primeiro plano, mas não está recebendo eventos. Active: O estado normal de um aplicativo em uso.

Backfround: O aplicativo não está na tela, mas está executando código.

Suspended: O aplicativo ainda reside na memória, mas não está executando código. As aplicações criadas usando iOS SDK 4.0 ou superior e rodando em iOS 4.0 ou superior não recebem o estato de terminadas quando o usuário pressiona o butão Home, e sim o de Background. O suporte a multitarefa é definido pelo framework UIKit e permite a transição entre as aplicações que estão em Background.

Algumas aplicações recebem o estado de suspensa logo após entrarem em background. Isso ocorre para aproveitar o tempo de processador, e permitir a essas aplicações serem inicializadas mais rapidamente. Contudo, caso o usuário comece a usar um aplicativo que necessite de muita memória, iOS poderá automaticamente passar alguns aplicativos que estão no estado de suspended para Not running.

i.4) Impressão:

Esta é uma tecnologia introduzida no iOS 4.2 que permite que um dispositivo com iOS envie documentos para serem impressos em uma impressora, o que também é feito com o framework UIKit, que gerencia as interfaces e impressão, renderiza o conteúdo a ser impresso e manipula o escalonamento e execução dos processos na impressora.

i.5) Proteção de Dados:

A proteção de dados é uma tecnologia que foi implementada no iOS 4.0 e e que permite o uso da encriptação embutida em alguns dispositivos. Esta tecnologia aumenta a criptografia de embutida no hardware e protege a chaves da criptografia com as chaves de acesso, o que fornece uma camada extra de proteção.

(6)

i.6) Notificações:

Existem duas tecnologias de notificações, as notificações locais e as chamadas ‘Push notifications’, sendo elas formas de passar informações para o usuário sobre aplicações que não estão rodando no primeiro plano, por exemplo, podem ser informativos de recebimento de mensagens ou alguma data ou evento que chegou sincronizado pelo calendário.

A diferença entre as duas é que a notificação local é originada de uma aplicação no próprio aparelho, enquanto a push notification é uma notificação remota e que é originada em um servidor remoto, por exemplo o servidor de alguma aplicação.

i.7) Reconhecedor de Gestos:

Esta tecnologia foi implementada no iOS 3.2 e facilita a execução de algumas operações usando gestos comuns para ocasionar estas operações, por exemplo gestos como movimento de pinça ou swipe. Ela é definida pela classe UIGestureRecognizer do framework UIKit e controla o comportamente de todos os objetos reconhecedores de gestos.

i.8) Suporte a Arquivos Compartilhados:

Esta tecnologia que foi introduzida no iOS 3.2 permite que dados do usuário fiquem acessíveis via iTunes, sendo assim quando uma aplicação usa esta tecnologia ela permite que o conteúdo de um diretório como um /Documents fique acessível ao usuário, podendo este realizar operações como cópia, cola, remoção, etc.

i.9) Serviços Peer-to-Peer:

Esta tecnologia foi implementada no iOS 3.0 e permite conectividade par a par com dispositivos próximos por bluetooth. Ela pode ser usada para sessões de comunicações ou para implementar característics de jogos multiplayer. Ela é implementada pelo framework Game kit.

ii) Media:

A camada Media contém toda parte de gráficos, áudio e vídeo, voltados para a criação de multimídias disponíveis em um dispositivo móvel. Ressalta-se que essas tecnologias foram criadas para facilitar a construção de aplicativos e são definidas da seguinte forma:

ii.1) Gráficos:

Gráficos de alta qualidade são importantes para todos os aplicativos do iOS. A forma mais simples de criar um aplicativo é usar imagens de uma filmagem que foi previamente processada em um equipamento diferente juntamente com os controles do Ulkit Framework. Entretanto, pode haver situações que é necessário ir além dos gráficos simples. Caso isso aconteça, o usuário pode utilizar as ferramentas Core

(7)

Graphics, Core Animation, Core Image, Open GL, Core Text, Image I/O e Biblioteca.

ii.2) Áudio:

As tecnologias de áudio do iOS são projetadas para reproduzir e gravar áudio de alta qualidade, além de acionar recursos de vibração em determinados dispositivos. O sistema fornece várias formas para reproduzir e gravar conteúdo de áudio, entre eles o Media Player, o AV Foundation, o OpenAL e o Core Audio.

ii.3) Vídeo:

O iOS oferece várias tecnologias para reproduzir conteúdos baseados em vídeo. Em dispositivos com hardware apropriado, pode-se usar essas tecnologias para capturar vídeo e incorporá-lo em algum aplicativo. O sistema fornece várias maneiras para reproduzir e gravar conteúdo de vídeo, entre elas o UIImage Picker Controller, o Media Player, o AV Foundation e o Core Media.

iii) Core Services:

A camada Core Services contém os serviços dos sistemas fundamentais que todos os aplicativos utilizam, de maneira que mesmo não usando esses serviços diretamente, parte do sistema é baseado neles.

A seguir, serão descritas algumas das principais tecnologias disponíveis nessa camada:

iii.1) iCloud Storage:

Introduzido no iOS 5, o iCloud permite ao aplicativo escrever documentos do usuário e dados para uma localização central, além de acesso a esses itens de todos os computadores de usuários e dispositivos iOS.

Existe duas maneiras que os aplicativos podem usufruir do iCloud, que são:

iCloud Document Storage – Recurso para armazenar documentos e dados do usuário em uma conta iCloud.

iCloud Key-Value Data Storage – Recurso para compartilhar pequenas quantidades de dados .

iii.2) SQLite:

A biblioteca SQLite permite incorporar um banco de dados SQL em seu aplicativo. No aplicativo, o usuário pode criar arquivos de bancos de dados locais e gerenciar as tabelas e registros nesses arquivos.

(8)

iii.3) Automatic Reference Counting (ARC):

Introduzido no iOS 5, o ARC é um recurso compilador que simplifica o processo de gestão. O ARC avalia os requisitos de vida útil de seus objetos e insere

automaticamente as chamadas de método apropriados em tempo de compilação.

iv) Core OS:

A camada Core OS contém as características de baixo nível que a maioria das outras tecnologias são construídas em cima. Engloba o Ambiente do Kernel, Drivers e Interfaces Básicas do Sistema Operacional.

(9)

Gerenciamento de Memória

O gerenciamento de memória de um determinado aplicativo no iOS, é o processo de alocação de memória durante a execução do seu programa, utilizando-o e em seguida liberando quando terminado. Um código bem escrito/compilado usa o mínimo de memória possível. Na linguagem Objective C, o programa pode também ser visto como uma forma de distribuir a propriedade de recursos de memória limitados entre pedaços de dados e de códigos.

Embora o gerenciamento de memória é normalmente considerado ao nível de um objeto individual, seu objetivo é realmente para gerenciar gráficos de determinados objetos. Todavia, o usuário tem que ter certeza de que o mesmo não tem mais objetos na memória do que realmente precisa (necessita).

Figura 2: Gerenciamento de Memória. Fonte: developer.apple.com/library/ios/ Continuando o assunto, é relevante citar que o Objective-C fornece três métodos de gerenciamento de memória de aplicativo.

1 - Ao decorrer do texto, iremos descrever o método conhecido como “Manual Reter-Release” ou MRR, onde o usuário pode explicitamente gerenciar a memória, mantendo o controle de objetos que o mesmo possui. Isto é implementado utilizando um modelo, conhecido como a contagem de referência, que a base de classe NSObject fornece em conjunto com o ambiente de execução.

2 - Em um contador automático de referência (Automatic Reference Countign, ou ARC), o sistema usa o mesmo sistema de contador de referência que o MRR, mas insere as chamadas de métodos gerenciamento de memórias apropriadas para o usuário em tempo de compilação.

3 – No coletor de lixos, o sistema automaticamente acompanha que objetos pertencem as quais outros objetos. Isso, então, automaticamente livra (ou coleta o lixo) os objetos que não estão referenciados. Ele usa um mecanismo diferente daquele empregado no

(10)

Se um usuário pensa em escrever um código para o Ios, o mesmo deve usar o gerenciamento de memória explícita, além disso, estas técnicas de gerenciamento de memória devem ser consideradas ao se escrever bibliotecas de rotinas, plug-ins, ou código compartilhado tanto em processos coletores de lixo como processos não coletores de lixo.

• Boas práticas para prevenção de problemas de memórias relacionadas. Existem dois tipos principais de problemas ou que resultam num gerenciamento incorreto de memória, são esses:

1 – Liberação ou substituição de dados que ainda estão em uso.

Isso faz com que a decomposição de memória, normalmente, resulte em falha do aplicativo, ou ainda pior, que os dados do usuário sejam corrompidos.

2 – A não liberação dos dados que estão em desuso faz com que ocorram vazementos de memória.

Um vazamento é onde a memória alocada não é liberada, mesmo que ela não torne a ser utilizada novamente. Vazamentos que fazem com que o aplicativo use quantidades cada vez maiores de memória, que pode resultar num péssimo desempenho do sistema operacional.

Pensando em gerenciamento de memória a partir da perspectiva de contagem de referência, que no entanto, é frequentemente contraditório, porque o usuário tende a considerar o gerenciamento de memória em termos de detalhes de implementação, em vez de em termos de seus objetivos reais. Logo, o usuário deve pensar em gerenciamento de memória a partir da perspectiva da propriedade de objeto e gráficos de objetos.

O Cocoa utiliza uma convenção de nomeação direta para indicar quando o usuário possui um objeto retornado por um método.

Embora a política de base seja simples, existem algumas medidas práticas que o usuário pode tomar para tornar mais fácil a gestão/controle da memória, para ajudar a garantir que o programa permaneça confiável e robusto ao mesmo tempo em que são minimizados os requisitos de seus recursos.

• Uso de ferramentas de análise para depurar problemas de memória.

Para identificar problemas com o seu código em tempo de compilação, o usuário pode usar o “Clang Static Analyzer” que está embutido no Xcode.

Se os problemas de gerenciamento de memória que no entanto, surgem, existem outras ferramentas e técnicas que o usuário pode usar para identificar e diagnosticar os problemas.

1. Muitas das ferramentas e técnicas são descritas em Nota Técnica TN2239, iOS Debugging Magic e em particular, o uso de NSZombie para ajudar a encontrar o objeto.

2. O usuário pode usar instrumentos para acompanhar os eventos de contagem de referência e procurar vazamentos de memória.

(11)

API de Chamadas do Sistema

Conceitualmente sabemos que as chamadas de sistema fornecem uma interface com os serviços disponibilizados por um sistema operacional. Vamos nos limitar aqui a descrever apenas uma das várias chamadas de sistema do iOS, que é para criação de processos. [1]

É relevante citar que a API especifica um conjunto de funções que estão disponíveis para o programador de aplicações, inclusive os parâmetros que são passados para cada função e os valores de retorno que o programador pode esperar. Uma das APIs mais comuns para programadores de aplicações é a API POSIX, na qual o iOS tem em suas versões [1].

Bom, vamos começar com a chamada fork(2).

Nome.

fork – cria um novo processo. Sinopse.

#include <unistd.h>

pid_t

fork(void);

Descrição da chamada.

fork( ) provoca a criação de um novo processo. O novo processo (processo filho) é uma cópia exata do processo de chamada (processo pai), exceto para o seguinte:

• O processo filho tem um ID único.

• O processo filho tem um ID diferente do processo pai (isto é, o processo de identificação do processo pai).

• O processo filho tem sua cópia de descritores do pai. Estes descritores referenciam os mesmos objetos subjacentes, de modo que, por exemplo, ponteiros de arquivos em objetos de arquivo são compartilhados entre o processo filho e o processo pai, para que outra chamada de sistema que tem o nome de lseek(2) em um descritor do processo filho pode afetar uma leitura posterior do pai.

(12)

Valores de retorno.

Após a conclusão, o fork( ) retorna um valor de 0 para o filho processar e retorna o ID do processo filho para o processo pai. Caso contrário, um valor de -1 é retornado para o processo pai.

Erros.

Fork( ) irá falhar e nenhum processo filho será criado se:

1 - O limite do sistema impõe sobre o número total de processos em execução, se o mesmo for excedido. Esse limita é a configuração-dependente.

2 - O limite do sistema-imposto MAXUPRC (<sys/param.h>) sobre o número total de processos em execução por um único usuário, estaria ultrapassado.

3 - Existe espaço de troca insuficiente para o novo processo.

Ressalvas.

Há limites para que o usuário possa fazer no processo filho. Para ser totalmente seguro, o usuário deve restringir-se apenas à execução assíncrona de sinal a segurança das operações até que uma das funções exec é chamado. Todas as APIs, incluindo símbolos de dados globais, em qualquer quadro ou biblioteca deve ser considerada insegura depois de um fork( ) a menos que explicitamente documentado para ser seguro ou sinal-async segura. Se o usuário precisar usar essas estruturas no processo filho, o mesmo deve fazer o uso das funções exec.

(13)

Sistema de Arquivos

O sistema de arquivos do iOS é baseado no sistema de arquivos do UNIX. Todos os dispositivos ligados ao computador, seja fisicamente ou pela rede contribuem para a criação de uma única coleção de arquivos. O sistema de arquivos é organizado de forma hierarquica.

Por razões de segurança, iOS coloca cada aplicativo (incluindo suas preferências e dados) em uma sandbox, que limita o acesso do aplicativo para arquivos, preferências, recursos de rede, hardware, e assim por diante. Como parte do processo de modo seguro, o sistema instala cada aplicativo em seu diretório sandbox própria.

As Interações de um aplicativo do iOS com o sistema de arquivos são limitados principalmente para os diretórios dentro do sandbox do aplicativo. Durante a instalação de um novo aplicativo, o código de instalação cria um diretório home para o app, coloca o app no diretório, e cria vários diretórios outra chave. Esses diretórios constituem vista principal do aplicativo do sistema de arquivos.

Porque ele está em uma sandbox, um aplicativo é geralmente proibido de acessar ou criar arquivos em diretórios fora de seu diretório home. Uma exceção a esta regra ocorre quando um aplicativo usa interfaces de sistemas públicos de acesso a coisas como contatos do usuário ou a música. Nesses casos, as estruturas do sistema lidar com todas as operações relacionadas a arquivos necessários para ler ou modificar os armazenamentos de dados apropriados.

(14)

Escalonamento

Normal: Prioridade das Aplicações Normais do Usuário.

Sistema: Prioridade das Aplicações do Sistema.

Kernel: Reservada para Threads em Espaço de Kernel.

Tempo Real: Threads nas quais a Prioridade Está Baseada na Necessidade de Reservar uma Fração Pré-Definidas de Ciclos de Clock.

(15)

Referência Bibliográfica

1. Fundamentos de Sistemas Operacionaos – Silberschatz. 2. https://developer.apple.com/library 3. Gerenciamento de memória : https://developer.apple.com/library/mac/#documentation/General/Conceptual/Dev Pedia-CocoaCore/MemoryManagement.html 4. Sistemas de Arquivos : http://developer.apple.com/library/mac/#documentation/FileManagement/Concept ual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html 5. Chamadas de Sistema: http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPa ges_iPhoneOS/index.html#//apple_ref/doc/uid/TP40007259

Referências

Documentos relacionados

Será levantada também sobre a criação de mais Parcerias Públicas e Privadas (PPP’s) no sistema penitenciário, que há algumas décadas, foram implantadas e

SISTEMA OPERACIONAL DOS Rosely Sanches 9 Microcomputador Principais constituintes: „ MICROPROCESSADOR „ MEMÓRIAS INTERNAS „ CLOCK „ BARRAMENTOS.. SISTEMA OPERACIONAL DOS

ou mesmo durante a execução de um programa poderemos utilizar dois caracteres do teclado que junto a um nome de arquivo, são reconhecidos pelo sistema

Outra característica que deve ser implementada no núcleo do sistema operacional é a plataforma de comunicação entre agentes, uma vez que a troca de informações entre

Gerenciar os recursos do sistema do computador é uma boa parte da função de um sistema operacional e, no caso de sistemas operacionais de tempo real, este pode ser todo

 Um conjunto de serviços do sistema operacional fornece funções que são úteis ao usuário (Cont):..  Comunicações – Processos podem trocar informações,

 Descrever os serviços que um sistema operacional fornece aos usuários, processos e outros sistemas..  Discutir as várias formas de estruturar um

Nesta aula você irá aprender sobre o sistema operacional Windows 7, sua área de trabalho, funcionalidades e características..