iOS Architecture

May 27, 2017 | Autor: Fernanda Dias | Categoria: Apple IOS
Share Embed


Descrição do Produto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS ENGENHARIA DE COMPUTAÇÃO

FERNANDA SILVA DIAS iOS

TIMÓTEO 2015

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS ENGENHARIA DE COMPUTAÇÃO

FERNANDA SILVA DIAS

iOS

Trabalho realizado na disciplina de Sistemas Operacionais, apresentado ao curso de Engenharia de Computação orientado pelo professor Dr. Leonardo Lacerda Alves.

TIMÓTEO 2015

1

1 SUMÁRIO 2

Introdução ............................................................................................................................. 3

3

Arquitetura ............................................................................................................................ 4 3.1

Camada Cocoa Touch .................................................................................................... 5

3.2

Camada Media .............................................................................................................. 5

3.3

Camada Core Services ................................................................................................... 5

3.4

Camada Core OS ............................................................................................................ 6

4

Kernel .................................................................................................................................... 7 4.1

Mach.............................................................................................................................. 8

4.2

BSD ................................................................................................................................ 8

4.3

I/O KIT............................................................................................................................ 9

5

Aplicativos ........................................................................................................................... 10

6

Desenvolvimento ................................................................................................................ 13

7

Processos ............................................................................................................................. 15 7.1

Escalonamento ............................................................................................................ 16

8

Memória .............................................................................................................................. 19

9

Sistema de Arquivos ............................................................................................................ 21 9.1

iCloud .......................................................................................................................... 22

9.2

Segurança .................................................................................................................... 23

10

Entrada/Saída .................................................................................................................. 24

11

Referências Bibliográficas ............................................................................................... 25

2

2 INTRODUÇÃO

IOS (iPhone Operating System) é um sistema operacional da família UNIX que roda nos dispositivos móveis da Apple Inc., tais como iPhone, iPad, iPod Touch e Apple TV’s. Derivado do OS X, usado em computadores Apple. Darwin é o núcleo UNIX-like do sistema operacional iOS e OS X, lançado pela Apple em 2000, formando um conjunto de componentes onde o IOS se baseia. A Apple tem feito o possível para manter iOS fechado, como um sistema operacional feito especialmente para suas plataformas móveis. Isso faz com que o sistema operacional permita aos desenvolvedores somente a funcionalidade que a Apple considere como "seguro" ou "recomendado", em vez de permitir a plena utilização do hardware, o que - por si só - é comparável a qualquer computador de mesa decente.

3

3 ARQUITETURA

O iOS é, em essência, uma versão simplificada do OS X, com duas diferenças notáveis: A arquitetura baseia-se em ARM (em oposição à Intel x86 ou x86_64), e alguns componentes foram completamente removidos ou simplificados para acomodar as limitações e características dos dispositivos móveis. A arquitetura do iOS e formada por quatro camadas, mostradas na figura abaixo. Camadas baixo nível contem serviços e tecnologias fundamentais para que as camadas de alto nível possam ser construídas sobre elas, trazendo serviços e tecnologias mais sofisticados. As camadas superiores trazem ao desenvolvedor os frameworks que fornecem abstração orientada a objetos das camadas de níveis inferiores. Nas camadas inferiores do sistema estão os serviços fundamentais e as tecnologias dos quais todos os aplicativos dependem.

4

3.1 CAMADA COCOA TOUCH Os principais frameworks para a construção de aplicativos são encontrados na camada Cocoa Touch. Esta camada define a infraestrutura para as tecnologias fundamentais, tais como multitarefa, serviço de notificação Apple push e diversos serviços de alto nível do sistema. Ao projetar um aplicativo, os desenvolvedores devem investigar as tecnologias presentes nesta primeira camada para ver se elas atendem as suas necessidades. Nessa camada as principais tecnologias disponíveis são: multitarefa, proteção de dados e serviço de notificação Apple push.

3.2 CAMADA MEDIA A camada Media contém as tecnologias de gráfico, áudio e vídeo. As tecnologias nessa camada foram projetadas para tornar mais fácil a implementação de aplicativos multimídia.

3.3 CAMADA CORE SERVICES A camada Core Services contém os serviços fundamentais do sistema que todos os aplicativos utilizam. Mesmo se o desenvolvedor não usar esses serviços diretamente, muitas partes do sistema são construídas em cima deles. As principais tecnologias disponíveis na camada Core Services são: Grand Central Dispatch, In-App Purchase, SQLite e XML Support.

5

3.4 CAMADA CORE OS A camada core OS contem características de baixo nível que foram utilizadas na implementação de outras tecnologias. Em situações onde o desenvolvedor precisa lidar explicitamente com segurança ou comunicação com acessório de hardware externo, ele pode fazer isso utilizando os frameworks nessa camada. No nível do sistema está presente o ambiente kernel, drivers e interfaces de baixo nível UNIX do sistema operacional. A biblioteca kernel é responsável por todos os aspectos do sistema operacional. Ela gerencia o sistema de memória virtual, threads, sistema de arquivos, rede e comunicação entre processos. Os drivers nesta camada também fornecem a interface entre o hardware disponível e os frameworks do sistema. O iOS fornece um conjunto de interfaces para acessar muitas características de baixo nível do sistema operacional. O aplicativo acessa esses recursos através da biblioteca Libsystem. As interfaces são baseadas em C e fornece suporte para o seguinte: • Threading • Networking • Acesso ao sistema de arquivos • Standard I / O • Bonjour e serviços DNS • Informação Locale • Alocação de memória • Cálculos matemáticos

6

4 KERNEL

Darwin é construído em torno do XNU, um kernel híbrido que combina o Mach (microkernel), vários elementos da BSD (incluindo o modelo de processo, pilha de rede e sistema de arquivos virtual) e uma API driver de dispositivo orientado a objeto chamado I / O kit. O projeto do kernel híbrido aproveita a flexibilidade de um microkernel e o desempenho de um kernel monolítico.

[1]

iOS 9.1 Kernel: Darwin Kernel Version 15.0.0: Fri Oct 2 14:07:07 PDT 2015; root:xnu-3248.10.42~4\/RELEASE_ARM_S5L8950X

7

4.1 MACH O núcleo do XNU é o Mach. Mach é um sistema que foi originalmente desenvolvido na Carnegie Mellon University (CMU) como um projeto de pesquisa para a criação de uma leve e eficiente plataforma para sistemas operacionais. O resultado foi a microkernel Mach, que manipula apenas as responsabilidades mais primitivas do sistema operacional: 

Processos e abstrações de threads



Gerenciamento de memória virtual



Agendamento de tarefas



Comunicação entre processos e mensagens

4.2 BSD Acima da camada Mach está a BSD fornecendo serviços e API’s. A camada BSD é baseada no BSD kernel, essencialmente o FreeBSD. O Componente BSD fornece: 

Rede



Modelo de segurança UNIX



Apoio syscall



Modelo de processo BSD



API’s do kernel FreeBSD



API’s do POSIX



Threads POSIX

8

4.3 I/O KIT

O I / O Kit foi a modificação mais importante feita pela apple no XNU. Ele fornece uma estrutura para o desenvolvimento de drivers simplificada, suportando muitas categorias de dispositivos. Possui uma arquitetura orientada a objetos do implementada em um subconjunto restrito de C++. A sua implementação consiste em três bibliotecas c++ que estão presentes no kernel: 

IOKit.framework



Kernel/libkern



Kernel/IOKit

O I/O kit framework fornece:



Verdadeiro plug and play



Gerenciamento dinâmico de dispositivo



Carregamento dinâmico (“On-demand”) dos drivers



Gerenciamento de energia para sistemas de desktop, bem como portáteis



Capacidade de multiprocessamento

9

5 APLICATIVOS

As interações de um aplicativo iOS com o sistema de arquivos são limitadas na maior parte os diretórios dentro sandbox do aplicativo. Durante a instalação de um novo aplicativo, o instalador cria uma série de containers para o aplicativo, cada um com um papel diferente. Um App é geralmente proibido de acessar ou criar algo fora de seu container.

Por motivos de segurança, um aplicativo iOS tem o número de lugares limitado onde se pode escrever seus dados. Quando um aplicativo é instalado em um dispositivo (ou do iTunes ou da App Store), o sistema cria uma série de containers para o aplicativo. Estes containers representam o universo para o app e contêm tudo o que o aplicativo pode acessar diretamente.

10

A tabela abaixo lista alguns dos subdiretórios importantes dentro desses contêineres e descreve a que se destina o seu uso.

AppName.app

O diretório que contém o app e seus recursos.

Documents/

Esse diretório armazena conteúdo gerado pelo usuário.

Documents/Inbox

Library/

tmp/

Use este diretório para acessar arquivos que seu aplicativo foi convidado a abrir por entidades externas. Use o subdiretório Biblioteca para todos os arquivos que você não deseja expor para o usuário. Seu aplicativo não deve usar esses diretórios para arquivos de dados do usuário. Armazena arquivos temporários do App.

No iOS, os aplicativos desviam um pouco da estrutura arrumada contida no OS X - eles ainda estão contidos nos seus próprios diretórios, mas não aderem o formato pacote (boundle). Em vez disso, o diretório app pode se tornar bem desarrumado, com todos os arquivos de aplicativos lançados na raiz. Há também um diferencial entre os Apps padrão da apple e os Apps comprados na App Store.

[1] Estrutura do App iOS.

11

Ao contrário de outros sistemas operacionais bem conhecidos, o iOS não mantém um registro para as configurações do aplicativo. Isso significa que um aplicativo deve se utilizar de um outro mecanismo para armazenar as preferências do usuário e suas configurações padrão.

12

6 DESENVOLVIMENTO

O iOS Software Development Kit (SDK) contém as ferramentas e interfaces necessárias para desenvolver, instalar, executar e testar os aplicativos que aparecem na tela inicial de um dispositivo iOS. Os aplicativos são construídos usando frameworks IOS e linguagem Swift (ou a antiga Objective C) e são executados diretamente no iOS. Ao contrário de aplicações web, aplicações nativas são fisicamente instaladas em um dispositivo e, portanto, estão sempre disponíveis para o usuário, mesmo quando o dispositivo está no modo de Avião. Eles residem ao lado de outros aplicativos do sistema e todos os dados do usuário e aplicativos são sincronizados com o computador do usuário através do iTunes. A Apple fornece a maioria de suas interfaces de sistema em pacotes especiais chamados frameworks. Um framework contém uma biblioteca dinâmica compartilhada e os recursos (como arquivos de cabeçalho, imagens e aplicativos auxiliares) necessários para essa biblioteca. Para usar frameworks, basta adicioná-los ao seu projeto no Xcode. Para começar a implementação de Apps para iOS é necessário ser um membro do Apple Developer Program para adquirir recursos necessários para o desenvolvimento, desenvolver seu aplicativo e submeter seu aplicativo para uma avaliação, como mostrado na figura abaixo.

[2] 13

Através da biblioteca de desenvolvimento IOS (iOS developer library) o desenvolvedor tem acesso a todos os tipos de recursos disponíveis para o desenvolvimento de um App do começo ao fim, além de documentação de frameworks disponíveis para cada camada de sua arquitetura e tutoriais feitos pela apple para utilização de diferentes recursos.

14

7 PROCESSOS

Cada processo no IOS é formado por um ou mais threads, cada thread representa um caminho de execução. Cada aplicação começa com um thread que executa a função main. Um processo começa a sua vida no estado SIDL, que representa um processo momentaneamente ocioso. Quando tudo estiver pronto o processo pode executar e não volta mais para o SIDL. Um processo executando está no estado SRUN. O SRUN pode ser dividido em dois estados: Executável e Executando. Quando um processo está esperando por algum recurso ou I/O ele fica no estado SSLEEP. O estado SSTOP para o processo e o coloca em um “deep sleep”. SZOMB é o estado que o processo passa antes de morrer, Dead é o estado do processo finalizado.

15

7.1 ESCALONAMENTO

O escalonador é responsável por controlar o acesso de threads para a CPU. A maioria dos kernels modernos, incluindo XNU, usam um quantum, onde a cada thread é atribuído um tempo finito (10ms em XNU) em que ele está autorizado a executar. Após a expiração do quantum do thread, ele é colocado para “dormir”, para que outros threads possam ser executados. Embora possa parecer razoável e justo que cada thread tenha uma quantidade igual de tempo, isso é impraticável, pois alguns threads têm uma maior necessidade de baixas latências, por exemplo, para executar a reprodução de áudio e vídeo. O escalonador do XNU emprega um algoritmo baseado em prioridade para escalonar threads. Tabela 2-3 mostra os níveis de prioridade utilizados pelo programador.

[2] O kernel organiza tópicos em listas duplamente encadeadas, essa coleção de listas é conhecida como fila de execução. Há uma lista para cada nível de prioridade (0 – 127). Cada processador mantem sua própria estrutura de fila de execução. Um thread de uma aplicação regular começa com prioridade 31, a prioridade pode diminuir ao longo do tempo como um efeito colateral do algoritmo de escalonamento.

16

[1] A imagem acima representa o output comando “ps –l” que mostra os processos e suas prioridades no iOS. O escalonamento de Threads do Mach é extensível, e é possível mudar o algoritmo usado no escalonamento. A tabela abaixo mostra os escalonadores suportados pelo Mach.

17

Normalmente, apenas o escalonador tradicional está habilitado, mas a arquitetura Mach permite a definição de escalonadores adicionais durante a compilação usando a diretiva “CONFIG_SCHED_”. A tabela abaixo mostra alguns métodos do escalonador de threads usado pelo IOS. Método

Descrição

update_priority(thread_t)

Usado para mudar a prioridade do thread.

lightweight_update_priority(thread_t)

Alternativa ao “update_priority” requerindo menos processamento.

quantum_expire(thread_t)

Determina um tempo de expiração do quantum para o thread.

compute_priority(thread_t, boolean_t)

Computa a prioridade do thread.

priority_is_urgent(int priority)

Retorna TRUE caso a prioridade seja urgente e ordena preempção.

processor_queue_remove(processor_t, thread_t) b initial_quantum_size(thread_t)

Remove o thread_t da fila de processamento do processador t. Retorna o tamanho inicial de quantum do thread.

18

8 MEMÓRIA

O sistema de memória virtual no iOS não suporta armazenamento de backup e em vez disso conta com a colaboração de aplicativos para não fazer referências fortes a objetos. Nos Apps do iPhone os dados somente leitura que já estão em disco simplesmente são removidos da memória e recarregados do disco conforme necessário. Dados graváveis nunca são removidos da memória pelo SO, em vez disso se a quantidade de memória livre cair abaixo de um certo limite o sistema pede para que as aplicações liberem memória voluntariamente para dar espaço a novos dados. Os aplicativos que não conseguem liberar memória são terminados. A hierarquia de alocação de memória do XNU é mostrada na figura abaixo.

19

O iOS implementa um manipulador low-memory chamado Jetsam (ou Memorystatus bsd/kern/kern_memorystatus.c). Esse mecanismo é utilizado para matar processos que consomem muita memória.

20

9 SISTEMA DE ARQUIVOS

Do ponto de vista do sistema de arquivos, iOS é muito semelhante ao OS X, com as seguintes diferenças: 

O sistema de arquivos HFSX padrão do iOS é case sensitive (ao contrário do OS X HFS +, que é insensitive).



O sistema de arquivos é criptografado em parte.



Não há diretório / Volumes (e não há necessidade para isso, ou para a arbitragem de disco, visto que o iOS não adiciona mais espaço de armazenamento).



O diretório /desenvolvedor é preenchido apenas se o i-Device está selecionado como "Usar para desenvolvimento “ dentro do XCode. Nesse caso, o DeveloperDiskImage.dmg incluído no iOS SDK é montado sobre o dispositivo.

O iOS suporta vários sistemas de arquivos graças a modularidade do kernel. O Virtual File System (VFS) fornece uma abstração sobre os sistemas de arquivos específicos (HFSX) e torna possível o acesso a eles por Aplicações usando uma única interface consistente. O sistema HFSX e HFS + usa a lógica de B-trees, ao contrário de outros sistemas de arquivos como Fat, que usam estruturas de tabela. A estrutura B-Trees pode ser imaginada como uma extensão às arvores binárias, porem elas podem ter qualquer quantidade N de filhos.

21

Nodos internos guardam registros de índice, que apontam para nodos filhos, e os nodos folha contém os dados.

9.1 ICLOUD O iCloud fornece um sistema estruturado para armazenamento de arquivos para Apps fazerem o uso na nuvem. Os Apps têm um diretório principal do iCloud para guardar seus arquivos nativos.

22

9.2 SEGURANÇA

O co-processador “Secure Enclave “ fabricado nos processadores Apple A7 (ou posterior). Ele utiliza a sua própria inicialização segura e atualização de software personalizado separado do processador de aplicação. Ele fornece todas as operações criptográficas para o gerenciamento de chaves de Proteção de Dados e mantém a integridade da proteção de dados, mesmo que o kernel tenha sido comprometido. O “Secure Enclave” usa memória criptografada e inclui um hardware gerador de números aleatórios. Seu microkernel e baseado na família L4 com modificações feitas pela Apple. A comunicação entre o “Secure Enclave” e o processador de aplicações é isolado a um “interruptdriven mailbox”. Cada dispositivo iOS tem um mecanismo de criptografia AES 256 dedicado incorporado no caminho DMA entre o armazenamento flash e memória principal do sistema, tornando a criptografia de arquivos altamente eficiente. Além dos recursos de criptografia de hardware integrado no iOS, a Apple usa uma tecnologia chamada Data Protection (Proteção de Dados) para proteger ainda mais os dados armazenados na memória flash no dispositivo. O Data Protection permite que o dispositivo responda a eventos comuns, tais como as chamadas recebidas, mas também permite um alto nível de criptografia para dados do usuário. Aplicativos chave do sistema tais como Mensagens, Correio, Calendário, Contatos, fotos, e saúde utilizam o Data Protection por padrão, e aplicativos de terceiros instalado no iOS 7 ou posterior receber esta proteção automaticamente.

23

10 ENTRADA/SAÍDA

O ambiente de controle de drivers de dispositivos do XNU é chamado de I/O Kit e é um componente especialmente desenvolvido pela Apple. Este ambiente permite que os desenvolvedores utilizem código em C ++ ao invés de C, que tem sido tradicionalmente, ao lado de assembly, a linguagem de escolha para a programação de kernel. I/O Kit oferece seu próprio conjunto de API’s, o I/O Kit framework fornece recursos avançados como notificações de kernel e comunicações kernel-usuário e fornece suporte para muitos aspectos de programação que são específicos para trabalhar com dispositivos – Plug 'n Play e gerenciamento de energia. A base do I/O Kit é a libkern C++ que define todas as classes que estão disponíveis para uso em todos os drivers I/O Kit.

24

11 REFERÊNCIAS BIBLIOGRÁFICAS

LEVIN, Jonathan. Mac OS X and iOS Internals - To the Apples Core.2013. [1] CLARKE, Douglas.HALVORSEN, H. O.2011. OS X and iOS Kernel Programming. [2] Darwin OS. Disponível em:. Data de acesso: 12/11/2015 Rocha, M.A.; Neto, M., R. Introdução a arquitetura Apple iOS. Ciência da computação UFG, Goiás, 2011. Apple, I. (2014). iOS Technology Overview. Apple Inc. Apple, I. (2014). OS X Technology Overview. Apple Inc. Apple Inc. Kernel Programming Guide. Disponível em < https://goo.gl/BPTTwG > acesso: 10/11/2015. Apple Inc. IOS Security Guide. 2015. Disponível em acesso: 12/11/2015.

25

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.