Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Apresentacao iOS.odp Sistemas Operacionais •Gereciamento de memória iOS. • Adriano Castro Carvalho - Cpd: 58532 • Dayron José Gomes Rodrigues – Cpd: 62164 • Hugo Luís de Carvalho – Cpd: 889374 • Igor Diniz Souza - Cpd: 66224 • Nataly Rodrigues – Cpd: 877876 • Ramont Campos Almones Junior - Cpd: 57340 Objective – C ● Derivada da linguagem de programação C, foi criada e desenvolvida pela Apple, para criação de seu ecossistema. O que é iOS? ● É o sistema operecional móvel, desenvolvido e distribuido pela Apple, que está presente exclusivamente nos seus aparelhos. ● O iOS vem instalado em todos aparelhos móveis da Apple, sua atualizações são gratuitas e podem ser feita OTA(*over the air). Cocoa ● A Apple fornece suporte completo a desenvolvedores com diversas ferramentas que trabalham juntas para tornar o processo de implementação mais simples. ● O desenvolvimento voltado a iOS é baseado na linguagem de programação Objective-C e no framework Cocoa Touch. Watchdog ● Ferramenta que é acionada quando o processo entra em background. ● É uma boa idéia para inspecionar manualmente árvore de diretórios do iOS Simulator para obter uma melhor sensação para a estrutura do iOS e suas aplicações e para pegar a atividade de aplicativos que você poderia perder. Uma maneira fácil de automatizar isso é usar o módulo Python cão de guarda. "Watchdog irá usar o kqueue ou FSEvents API para monitorar árvores de diretório para a atividade de arquivo e eventos pode log ou tomar ações específicas quando esses eventos ocorrem. Estado de memória MMR x ARC •1 – O MMR - “Manual Reter-Release”, onde o usuário mantém o controle de objetos que o mesmo possui na memória. 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. Ciclo de vida ● O sistema operacional se mostra mais eficaz quando comparado a outras plataformas, por não possir um coletor de lixo, em vez disso trata os objetos de maneira referenciada, ou seja ao fim da execução de um objeto esse espaço na memoria fica disponivel (clean). iOS.odt UNIVERSIDADE CEUMA Curso de Graduação em Sistema de Informação Adriano Castro Carvalho - Cpd: 58532 Dayron José Gomes Rodrigues – Cpd: 62164 Hugo Luís de Carvalho - Cpd: 889374 Igor Diniz Souza - Cpd: 66224 Nataly Rodrigues – Cpd: 877876 Ramont Campos Almones Junior - Cpd: 57340 Gerenciamento de Memória do iOS São Luís 2016 Adriano Castro Carvalho - Cpd: 58532 Dayron José Gomes Rodrigues – Cpd: 62164 Hugo Luís de Carvalho - Cpd:889374 Igor Diniz Souza - Cpd: 66224 Nataly Rodrigues – Cpd: 877876 Ramont Campos Almones Junior - Cpd: 57340 Gerenciamento de Memória do iOS Trabalho apresentado ao Curso Graduação em Sistema de Informação da Universidade Ceuma Orientador: Msc. Eduardo Freire São Luís 2016 Sumário Introdução……………………………………………………………………………...……4 Elementos Textuais………………………………………………………………..……....5 Bibliografia…………………………………………………………………………………..8 Referências……………………………………………………………………………...…..9 Introdução 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 precisa(necessita). ../Art/memory_management_2x.png Figura 1. Caso a memória disponível não seja suficiente para a execução do sistema e das aplicações em execução, o sistema operacional busca por recursos já não utilizados e tenta recuperá-los. Caso estes não sejam suficientes, ocorre uma varredura nas aplicações em segundo plano e aquelas que ocupam mais recursos e não são utilizadas pelo usuário há mais tempo são finalizadas. Este processo se repete até que a quantidade necessária de memória seja alcançada. A memória total dos dispositivos é dividida de uma forma que permita ao sistema agilizar o carregamento de novas aplicações e restaurar a execução de uma aplicação em segundo plano de uma maneira otimizada. Para isto, são criadas algumas áreas em memória que funcionam como um link lógico entre a memória física e o código carregado. Vejamos a seguir as principais áreas de memória (ver Figura 2). Figura 2. Free: Memória que nunca foi usada por nenhum app. Clean: Memória que já foi usada e que está disponivel para uso. Quando alguma aplicação ou serviço requisita mais memória do que está disponível no momento, estes recursos são disponibilizados novamente para uso. Dirty: Espaço de memória que está em uso. 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. Todavia, o usuário tem que ter certeza de que o mesmo não tem mais objetos na memória além do que realmente precisa. 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 MRR ou ARC e é apenas suportado no ambiente de execução do OSX, não no iOS. Cocoa A Apple fornece suporte completo a desenvolvedores com diversas ferramentas que trabalham juntas para tornar o processo de implementação mais simples. O desenvolvimento voltado a iOS é baseado na linguagem de programação Objective-C e no framework Cocoa Touch. Cocoa Touch contém uma biblioteca de APIs, objetos e runtimes que herdam a camada de desenvolvimento do sistema operacional. Ele contém funções específicas para iOS como multitouch, views, gps, acelerômetro, etc. A sua maior parte é implementada em Objective-C. Foi projetado em cima do modelo Model-View-Controller (MVC), portanto os aplicativos desenvolvidos devem seguir o mesmo modelo. Consiste, principalmente, nos frameworks Foundation e UIKit. 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 vazamentos 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. Conclusão Construir uma aplicação que execute fluidamente é um processo de início, meio e fim. Não basta nos preocuparmos com as funcionalidades, interface e usabilidade se a engrenagem principal da aplicação não funciona como deveria. A performance de uma aplicação vai além da velocidade de execução, ela abrange o eficiente uso dos recursos do sistema e uma experiência de navegação agradável para os usuários. Para tanto, é necessário atenção para os problemas que encontramos no decorrer do desenvolvimento, pois estes, se deixados para o final, podem acarretar em mudanças drásticas na estrutura, o que significa um tempo precioso perdido. Conclusão Construir uma aplicação que execute fluidamente é um processo de início, meio e fim. Não basta nos preocuparmos com as funcionalidades, interface e usabilidade se a engrenagem principal da aplicação não funciona como deveria. A performance de uma aplicação vai além da velocidade de execução, ela abrange o eficiente uso dos recursos do sistema e uma experiência de navegação agradável para os usuários. Para tanto, é necessário atenção para os problemas que encontramos no decorrer do desenvolvimento, pois estes, se deixados para o final, podem acarretar em mudanças drásticas na estrutura, o que significa um tempo precioso perdido. Referências Performance em aplicações iOS - Revista Mobile Magazine 45 <http://www.devmedia.com.br/performance-em-aplicacoes-ios-revista-mobile-magazine-45/26577> acessado em 30/05/2016. Memory Usage Performance Guidelines <https://developer.apple.com/library/ios/#documentation/performance/conceptual/managingmemory> acessado em: 30/05/2016.
Compartilhar