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