FACULDADE DE TECNOLOGIA SENAC GOIÁS
Sistemas Operacionais
Gabriel Barboza, Tárik Sousa, Matheus Pereira, Romero Henrique
Funcionamento do Sistema Operacional iOS
Lucília Ribeiro
GOIÂNIA,
2015
Gabriel Barboza, Tárik Sousa, Matheus Pereira, Romero Henrique
Funcionamento do S.O. iOS
Relatório apresentado como requisito parcial para
obtenção de aprovação na disciplina Sistemas
Operacionais, conteúdo de grande importância para
o portfólio digital, no Curso de Gestão da tecnologia
da Informação, na Faculdade de Tecnologia Senac
Goiás.
Lucília Ribeiro
2
RESUMO
Este trabalho apresenta as características de um sistema operacional Mobile.
Mostrando seus pontos fortes e fracos, seu funcionamento, e sua evolução, através de um
relatório
.
3
SUMÁRIO
RESUMO ........................................................................................................................... 3
1
INTRODUÇÃO .............................................................................................................. 5
2
OBJETIVO .................................................................................................................... 6
3
HISTÓRIA..................................................................................................................... 7
4
CONCLUSÃO .............................................................................................................. 24
5
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................. 25
4
1
INTRODUÇÃO
Este trabalho apresenta de forma mais técnica o funcionamento do sistema operacional
tratados no trabalho AEC e também no portfólio digital, será mostrado detalhes sobre o iOS,
sistema operacional utilizado pela Apple Inc. em seus Devices (iPhone, iPad, iPod, Apple TV,
Apple watch, etc). Será abordado os principais temas logo que não seria possível falar sobre
um sistema completo em um trabalho desse tipo.
Em um sistema é importante que o desenvolvedor ou estudante tenha conhecimento de
algumas informações e entendimentos chaves para que ele seja habilitado à desenvolver
qualquer Mobile App.
5
2
OBJETIVO
Descrever de forma clara e objetiva o funcionamento resumido do Sistema Operacional
escolhido, o iOS.
6
3
HISTÓRIA
O sistema operacional foi apresentado com o iPhone na Macworld Conference & Expo em 9 de
janeiro de 2007, e lançado no mês de junho. Inicialmente, as aplicações de terceiros não eram
permitidas. Steve Jobs argumentou que os desenvolvedores poderiam criar aplicativos na web que
"se comportam como aplicações nativas no iPhone". Em 17 de outubro de 2007, a Apple anunciou
que a SDK nativa estava em desenvolvimento e que eles esperassem para colocá-la nas "mãos dos
desenvolvedores".
Em 6 de março de 2008, a Apple lançou o primeiro beta, juntamente com um novo nome para o
sistema operacional: o "iPhone OS". A rápida venda de dispositivos móveis da Apple acendeu
interesse no SDK. A Apple também vendeu mais de um milhão de iPhones durante uma temporada
de feriados de 2007. Em 27 de janeiro de 2010, a Apple anunciou o iPad, com uma tela bem maior do
que o iPhone e iPod touch, e projetado para navegar na web, consumo de mídia, e da leitura
de iBooks. O nome "iOS" foi usado pela Cisco Systems. Para evitar qualquer ação judicial em
potencial, a Apple licenciou o "iOS" uma marca registrada da Cisco.
7
VERSÕES DO SISTEMA
 iPhone OS 1
A primeira versão do sistema de multi-toque para dispositivos móveis, foi apresentado inicialmente
como uma versão móvel do OS X, porém recebeu o nome de iPhone OS no dia 3 de março de 2008,
com o lançamento do kit de desenvolvimento do iPhone, ou iPhone SDK.
 iPhone OS 2
Lançada juntamente com o iPhone 3G, a grande melhoria desta versão foi a inclusão pela primeira
vez da App Store, tornando a instalação de aplicativos criados por terceiros disponíveis a serem
instalados no iPhone e iPod touch.
 iPhone OS 3
A versão foi lançada em 17 de junho de 2009 juntamente com o iPhone 3GS, e trouxe como
destaques a função copiar e colar, e MMS.
 iOS 4
Lançado no dia 21 de junho de 2010, foi o primeiro lançamento do sistema chamado simplesmente
de "iOS". A grande novidade desta versão foi a inclusão da função multitarefa no sistema.
 iOS 5
Uma prévia do sistema iOS 5 foi apresentada no dia 6 de junho de 2011, durante o evento da WWDC
2011. No mesmo evento foi lançado uma prévia também do novo sistema operacional para
computadores Apple, o Mac OS X Lion, e anunciado um serviço baseado na nuvem, chamado iCloud.
Nesta versão foi apresentado pela primeira vez a central de notificações, possibilidade de editar
fotos e integração com o novo serviço, o iCloud, além de integração com o Twitter e acesso rápido a
câmera pela tela de bloqueio.
8
 iOS 6
Tela inicial do iOS 6
Esta versão trouxe aproximadamente 100 novos recursos, dentre eles, os mais relevantes, a função
Não Perturbe (faz com que não receba notificações por um período determinado pelo usuário), o
novo aplicativo Mapas e acesso guiado para GPS, Passbook, mudança no layout da App Store e
compatibilidade da rede 3G com o Facetime. A última versão foi a versão 6.1.3, onde foram
corrigidas falhas que burlavam a tela de bloqueio do sistema que davam acesso a agenda do iPhone
sem precisar digitar o código de segurança, além de correção nas brechas do Jailbreak. Também foi
liberada logo a seguir, a versão 6.1.4 somente para o iPhone 5, que atualizou o perfil de áudio para
viva-voz. A sexta versão do iOS é compatível com iPhone 3GS, iPhone 4 e 4s, iPhone 5, iPod Touch de
quarta e quinta geração, iPad 2, iPad 3ª geração e iPad Retina e iPad mini.
9
 iOS 7
Esta versão ficou disponível ao público em 18 de setembro de 2013 e foi apresentada ao público
no WWDC 2013, evento anual da Apple que ocorreu dia 10 de junho de 2013. O sistema é compatível
com iPhone 4 e posteriores, iPad 2, Retina, Air e iPod touch de 5ª geração.
O iOS 7 apresentou a maior mudança de interface gráfica entre uma versão atual e a anterior desde
sua primeira versão. Além das mudanças visuais, o sistema também adquiriu uma nova ferramenta
de acesso rápido aos aplicativos mais utilizados, como calculadora, lanterna (luzes do flash),
temporizador, câmera, AirDrop, além de poder ativar e desativar algumas funções do sistema, como
desativar a rede Wi-Fi e ajustar o brilho. Todos ícones de aplicativos nativos ganharam novo design
e layouts internos. Siri (assistente de voz da Apple), agora possui também a opção de voz masculina
para a voz inglesa.
A última versão menor do iOS 7 foi lançada foi a 7.1, no dia 10 de março de 2014, apresentando
mudanças estéticas no sistema, como reparos de segurança e algumas mudanças no design.
10
 iOS 8
Atualmente o sistema está em sua oitava versão final estável, conhecida como iOS 8,
disponibilizada ao público no dia 17 de setembro de 2014 e está disponível através do iTunes ou OTA
(over the air, em português, "atualização pelo ar", método de atualização pelo próprio aparelho via
Wi-Fi). A nova versão do sistema operacional foi apresentada ao público no WWDC 2014, evento
anual da Apple que ocorreu dia 2 de junho de 2014.
11
ARQUITETURA DO SISTEMA OPERACIONAL iOS
A estrutura do iOS é descrita como um conjunto de quatro camadas, sendo que cada uma delas
oferece um conjunto de frameworks que podem ser utilizados durante o desenvolvimento de
aplicativos para os dispositivos móveis da Apple Inc. A arquitetura do iOS e semelhante a arquitetura
básica encontrada no Mac OS X. No nível mais alto, o iOS atua como intermediário entre o hardware
e os aplicativos que aparecem na tela.
Os aplicativos desenvolvidos para o iOS raramente se comunicam diretamente com o hardware do
dispositivo, ao invés disso, os aplicativos se comunicam com o hardware através de um conjunto de
interfaces de sistema que protegem seu aplicativo de alteração de Hardware.
A arquitetura do iOS é formada pelas camadas: Core OS, Core Services, Media e Cocoa Touch
Nas camadas superiores estão as tecnologias e serviços mais sofisticados. O desenvolvedor deve
olhar
. Estas
abstrações geralmente facilitam o processo de escrita de código, pois reduzem a quantidade de
código que o desenvolvedor tem que escrever, e encapsula características complexas, tais como
threads. Nas camadas inferiores do sistema estão os serviços fundamentais e as tecnologias dos
quais todos os aplicativos dependem. Embora as tecnologias de níveis superiores resumam as
tecnologias de níveis inferiores, os desenvolvedores ainda podem usar essas últimas que não estão
presentes nas camadas superiores.
12
CAMADA COCOA TOUCH
Multi-touch eventos e controle, Acelerômetro, Câmera, Alertas, Pickers, Sistema de Localização, é
basicamente as interações com o usuário.
Os principais frameworks para a construção de aplicações 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. Quando o usuário pressiona o botão Home do
iPhone, por exemplo, o aplicativo não termina, em vez disso, ele muda para um contexto de
execução em segundo plano. Essa característica da multitarefa e muito importante para preservar a
vida da bateria, a maioria dos aplicativos ficam suspensos pelo sistema quando entram em segundo
plano. A aplicação suspensa permanece na memória, mas nenhum código é executado. Esse
comportamento permite que um aplicativo retome rapidamente quando ele e reiniciado, sem
consumo de bateria no mesmo período. A proteção de dados permite que os aplicativos que
trabalham com dados confidenciais do usuário aproveitem o sistema de criptografia disponível em
alguns dispositivos. Quando um aplicativo designa um arquivo específico como sendo protegido, o
sistema armazena o arquivo no disco em um formato criptografado. Enquanto o dispositivo estiver
bloqueado, o conteúdo do arquivo é inacessível para o aplicativo e todos os intrusos em potencial.
No entanto, quando o aparelho e desbloqueado pelo usuário, uma chave de decodificação é criada
para permitir que o aplicativo acesse esse arquivo. O serviço de notificação Apple push fornece uma
maneira de alertar os usuários de novas informações, mesmo quando o aplicativo não está ativo.
Através deste serviço, o desenvolvedor pode adicionar notificações de texto, adicionar um emblema
no ícone do aplicativo, ou acionar alertas sonoros nos dispositivos do usuário. Essas mensagens
fazem com que os usuários saibam que eles deveriam abrir o aplicativo para receber novas
informações.
13
CAMADA MEDIA
Como OpenAL, Gravação e Mixagem de Áudio, Núcleo de Animação, Leitor de PDF, OpenGL ES e
Quartz.
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.
Os frameworks de nível superior oferecem tecnologias que tornam mais fácil a criação de gráficos e
animações, enquanto os frameworks de nível inferior permitem o acesso as ferramentas
fundamentais que o desenvolvedor pode utilizar para criar aplicativos mais robustos e complexos.
 Tecnologias de Gráficos
Nesta camada o desenvolvedor pode utilizar o frameworks (User Interface Kit) UIKit que oferece
várias tecnologias de gráficos e animações. Se o aplicativo exigir uma animação simples, o sistema
pode fazer isso com facilidade, se houver situações onde o desenvolvedor precise ir além dos gráficos
simples, ele pode usar as seguintes tecnologias:
•C
G
•C
A
•O
GL ES
•T x
C
•I
h
z
g
z õ
z
y
2D 3D
e outros conteúdos.
h
x
z
g I/O
•O
usuário.
2D.
.
.
oria dos formatos de imagem.
A
L
y
g
 Tecnologias de Áudio
As tecnologias de áudio disponíveis na camada Media fornecem uma capacidade de reproduzir e
gravar áudio de alta qualidade, além de dispor de recursos de vibração em determinados
dispositivos.
O sistema oferece várias maneiras para reproduzir e gravar conteúdo de áudio. Os frameworks na
lista a seguir estão ordenados do alto nível para o baixo nível. Ao escolher uma tecnologia de áudio, o
desenvolvedor tem que ter em mente que os frameworks de níveis superiores são mais fáceis de
usar e são geralmente preferidos. Os frameworks de níveis inferiores oferecem mais flexibilidade e
controle, mas exigem mais trabalho da parte do desenvolvedor.
•O
M
P y
reprodução de faixas e Playlists.
á
•O
AV F
gerenciamento de reprodução e gravação de áudio.
T
á
O
-C para o
•O
C
A
z
g
conteúdo de áudio. O desenvolvedor pode usar essas interfaces para reproduzir sons de alerta do
sistema, provocar vibrações no dispositivo e reproduzir conteúdo local ou streaming de áudio.
14
 Tecnologias de Vídeo
Além das tecnologias de áudio, a camada Media oferece tecnologias para reproduzir e gravar
conteúdo baseado em vídeo. Em dispositivos com o hardware de vídeo apropriado, o desenvolvedor
pode usar essas tecnologias para capturar e incorporar vídeos em sua aplicação. Os frameworks na
lista a seguir estão ordenados do alto nível para o baixo nível.
•A
UI I g P
C
framework UIKit fornece uma interface padrão para
gravação de vídeo em dispositivos com câmera.
•O
M
P y
apresentar filmes completos ou parciais no seu aplicativo.
•O
AV Foundation fornece um conjunto de interfaces em Objective-C para o
gerenciamento de captura e reprodução de filmes.
•C
M
x
superiores e oferece interfaces de baixo nível para a manipulação de mídias. As tecnologias de vídeos
no iOS suportam a reprodução de arquivos de filme com as extensões de arquivo .mov, mp4, m4v e
.3gp.
15
CAMADA CORE SERVICES
(Serviços oferecidos pelo sistema)
Como SQLite, Acesso a Arquivos, Preferências, Livro de Endereços, Rede.
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 pr
g
C
S
:˜
Grand Central Dispatch, in-app purchase, SQLite e XML Support. Grand central dispatch é uma
tecnologia que o desenvolvedor pode utilizar para gerenciar a execução de tarefas em seu aplicativo.
Essa tecnologia combina um modelo de programação assíncrona, com um núcleo altamente
otimizado para oferecer uma alternativa mais eficiente para Threading. O Grand central dispatch
também fornece alternativas para muitos tipos de tarefas de baixo nível, como ler e escrever em
arquivos, implementação de temporizadores e monitoramento de sinais e eventos do processo. Inapp dispatch é uma tecnologia que os desenvolvedores podem utilizar para vender seus conteúdos e
serviços dentro de suas aplicações. Este recurso é implementado usando a estrutura Kit Store, que
fornece a infraestrutura necessária para processar as transações financeiras usando a conta do
iTunes do usuário. A biblioteca SQLite permite incorporar um banco de dados SQL leve em sua
aplicação, sem ter que executar um processo de servidor de banco de dados remoto. O
desenvolvedor pode criar arquivos de banco de dados local e gerenciar as tabelas e registros nesses
arquivos a partir do seu aplicativo. Essa biblioteca é otimizada para fornecer acesso rápido aos
registros do banco de dados. A classe NSXMPLParser pode ser usada para recuperar elementos de
um documento XML. A biblioteca libxml2 fornece suporte adicional para a manipulação de conteúdo
XML, além de fornecer suporte adicional para a transformação do conteúdo XML para HTML.
16
CAMADA CORE OS
(Núcleo do sistema operacional)
OS X Kernel, Sockets, Segurança, Gerenciamento de Energia, Certificados, Sistema de Arquivos.
A camada Core OS contém 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.
O framework Accelerate e uma tecnologia presente na camada Core OS que contém interfaces para a
realização de cálculos matemáticos. A vantagem de usar esses frameworks são as interfaces
otimizadas para todas as configurações de hardware presentes em dispositivos baseados no iOS.
Portanto, o desenvolvedor pode escrever seu código uma vez e ter certeza que ele será executado de
forma eficiente em todos os dispositivos.
O framework External Accessory e uma tecnologia presente na camada Core OS que fornece
interfaces de comunicação com acessórios de hardware conectados a um dispositivo baseado no iOS.
Os acessórios podem ser conectados através de um conector Dock de 30 pinos, Conector Lightning,
ou através do Bluetooth. Através das interfaces desse framework o desenvolvedor pode manipular o
acessório diretamente usando os comandos que ele suporta. No nível do sistema está presente o
ambiente kernel, drivers e interfaces de baixo nível do sistema operacional UNIX. A biblioteca kernel
e 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
17
Linguagem para desenvolvimento dos aplicativos para IOS é Objetive C, que foi uma linguagem
derivada das linguagens Smalltalk e C.
Infelizmente ainda não existem plataformas seguras e gratuitas para desenvolvimento nos sistemas
operacionais Windows então você deve possuir um Macintosh, para poder programar você deve se
associar a Apple pagando uma anuidade, ou desenvolver somente para aparelhos já desbloqueados
através do jailbreak.
A IDE mais utilizada é Xcode, as ferramentas Xcode fornece o básico de edição, compilação e
ambiente de depuração de seu código. Xcode prevê também o ponto de lançamento para testar seus
aplicativos em um dispositivo IOS, e no IOS Simulator, uma plataforma que imita o ambiente do IOS
de base, que é executado no seu computador Macintosh local.
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).
Fonte: developer.apple.com/library/ios/
18
É relevante citar que o Objective-C fornece três métodos de gerenciamento de memória de
aplicativo.
1
– Será
é
h
“M
R
R
”
MRR
á
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.
– No coletor de lixos, o sistema automaticamente acompanha que objetos pertencem as
quais outros objetos. Isso, então, automaticamente livra os objetos que não estão referenciados. Ele
usa um mecanismo diferente daquele empregado no MRR ou ARC e é apenas suportado no
ambiente de execução do Mac OS X, não no iOS.
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.
3
• 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.
– A não liberação dos dados que estão em desuso faz com que ocorram vazamentos de
memória.
2
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.
19
• 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 pod
S
A yz ”
á
X
.
“C
g
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.
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.
O usuário pode usar instrumentos para acompanhar os eventos de contagem de referência e
procurar vazamentos de memória.
API DE CHAMADAS DO SISTEMA
Conceitualmente sabemos que as chamadas de sistema fornecem uma interface com os serviços
disponibilizados por um sistema operacional.
É 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.
Vamos começar com a chamada fork(2).
Nome.
fork – cria um novo processo.
Sinopse.
#include <unistd.h>
pid_t fork(void);
20
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 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 em um descritor do processo filho
pode afetar uma leitura posterior do pai.
O processo filho tem um ID diferente do processo pai (isto é, o processo de identificação
do processo pai).
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:
- 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.
1
- 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.
2
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 sinalasync segura. Se o usuário precisar usar essas estruturas no
processo filho, o mesmo deve fazer o uso das funções exec.
21
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 hierárquica.
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 outros
diretórios 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.
22
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.
23
4
CONCLUSÃO
Com as informações obtidas acima, o usuário poderá compreender melhor o
funcionamento do Sistema Operacional usado na grande maioria dos SmartPhones
atualmente.
24
5
REFERÊNCIAS BIBLIOGRÁFICAS
Silberschatz Fundamentos de Sistemas Operacionaos –.
https://developer.apple.com/library
https://developer.apple.com/library/mac/#documentation/General/Conceptual/Dev PediaCocoaCore/MemoryManagement.html
http://developer.apple.com/library/mac/#documentation/FileManagement/Concept
ual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html
http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPa
ges_iPhoneOS/index.html#//apple_ref/doc/uid/TP40007259
Anvaari, M. and Jansen, S. (2010). Evaluating architectural openness in mobile software
platforms. In Proceedings of the Fourth European Conference on Software Architecture:
Companion Volume, ECSA ’10, pages 85–92, New York, NY, USA. ACM.
Apple, I. (2008). iPhone OS Programming Guide. Apple Inc.
http://en.wikipedia.org/wiki/IOS
25
Download

Funcionamento do Sistema Operacional iOS