Buscar

GERÊNCIA DE MEMÓRIA DO MAC OS X

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

GERÊNCIA DE MEMÓRIA DO MAC OS X
 
Descrição
O Mac OS é o sistema operacional dos computadores da Apple. Seu nome é umaderivação de Macintosh Operating System. A primeira versão foi lançada em 1984. OMac é muito utilizado para o tratamento de vídeo, imagem e som devido à altaperformance de sua interface gráfica. A última versão do SO é a Mac OS X Maverick.
O gerenciamento de memória do Mac OS X é um pouco diferente do Windows.
Não vou entrar em detalhes sobre alocação, fragmentação ou paginação. Apenas um olhar macro, já que outros grupos já abordaram isso.
Possui um S. O.de gerência de memória poderoso
MAC separa as partes do S. O.de Memória que são dependentes da máquina daqueles que não são
Comentário sobre o gerenciamento
Ao lançar um programa, o Mac OS destina automaticamente um espaço específico de memória para o aplicativo, isolando-o (isso quer dizer que o AppleWorks não interfere na memória alocada para o iTunes, por exemplo). Quando um programa deixa de funcionar, os outros processos continuam em andamento. Ou seja, acabou-se o tempo em que o defeito em um aplicativo travava o computador.
Um programa deu problema e o Mac OS X continua de pé, sem necessidade de reinicia-lo.
O Mac OS X permite ainda que você force o desligamento de um programa travado, mantendo o restante do S. O funcionando normalmente. 
Características principais 
• Paginação sob demanda; 
• External Memory Management Interface (EMMI); 
• Named Memory Entries; 
• Lazy Evaluation de Memória Copiada (Shadows Objects); 
• Memory Maps; 
• Herança de Named Regions; 
• UPLs.
Conceitos
Memory Objects: Dados potencialmente persistentes. Contém named entrys e regions.Paginação sob demanda: Mapeamento de Memória Virtual para real na primeira tentativa de acesso.Todo tipo de data no espaço de memória é provido através dos Memory Objects. Mach “pede” ao“owner” do M.O. (um pager) pelo conteúdo e retorna a ele possíveis modificações nos dados. 
Pagers: Existem os default-pagers (lida com memória não-persistentes, ou “memória-anônima”.Só existem durante a vida de uma task) e os vnode-pagers (Mapeia arquivos em Memory Objects).O interessante, é que o Mach exporta um interface para esse Memory Objects, permitindo contribuição de varias tarefas modo-usuário em seu conteúdo.(EMMI) 
Named Entries: Handle para objetos compartilhados ou submapas. Permite ao owner mapear oobjeto de memória virtual, ou então, passar o direito de mapeá-lo. Mapear uma Named Entry em 2tasks diferentes resulta em Memória Compartilhada. 
Quando se cria uma nova task, elas são clonadas do pai, e sua porção mapeada da memória pode ser herdada como uma cópia, como compartilhada, ou nenhum desses, baseadas nos atributos associados ao mapeamento. 
Lazy Evaluation: A copia é protegida com read-only access para as duas task que compartilham memória. Quando ambas tentam acessar a mesma porção, esta é copiada nessa hora. Isso permites implificações em diversas áreas, notavelmente nas messagings APIs. 
MemoryMaps: Lista ordenada Duplamente Ligada. Cada objeto contém lista de páginas eshadow references a estes objetos. Named Regions podem ser herdadas, não só como um grupo de objetos de memória, mas também toda a relação de mapeamento entre eles.Named Region é como uma named entry, mas ao invés de conter virtual mem. objects, contém um fragmento de mapa virtual. UPLs: Universal Page Lists. (Data structure) Informações de caching, permissões, mapeamentos, e etc.. 
Shadow Objects: Quando um objeto de memória virtual é duplicado, (e.g. Um processo chamou fork), é criado um Shadow Object. Ele é inicialmente vazio, apenas com uma referência a outro objeto. Quando uma página é modificada, ele é copiada do pai (referência) pra ele, e então modificado. Ao ler dados, se ela não existe no Shadow Object lê do pai. Isto chama-se Shadow-chain.
Overview 
No Mac OS X, cada processo tem o seu próprio conjunto (32bits ou 64 bits) de espaço de endereço virtual. Para processos de 32 bits, cada processo tem um espaço que pode endereçar dinamicamente chegando ao limite de 4gb. Para processo de 64 bits, cada processo pode endereçar dinamicamente até o limite de 18 exabytes. 
O espaço de endereço virtual de um processo constituído por regiões de memória mapeada. Cada região de memória no processo representa um conjunto específico de páginas de memória virtual. A região tem atributos específicos controlando coisas como herança (porções da região podem ser mapeadas a partir de "pai" das regiões), escreve-proteção, e se é "wired" (isto é, não pode ser paginada out). Porque regiões contêm um determinado número de páginas, eles estão page-alinhados, significando o endereço inicial da região também está iniciando o endereço de uma página e terminando o endereço também define o fim de uma página. 
Memória física é um recurso precioso no computador. Uma característica dos Sistemas Operacionais Modernos é a Memória Virtual (Virtual Memory – VM), que implementa a ilusão de um largo espaço de endereços para cada programa sem sobrecarregar o programador com detalhes, como quais partes do programa são residentes na memória física, em determinado momento, ou onde na memória física as porções residentes estão localizadas. Memória Virtual é normalmente implementada através de paginação (paging). Quando residente cada página da memória virtual é carregada em alguma parte da memória física. Esta porção, normalmente é chamada de “page frame”. 
Além do VM Subsystem baseado no Core-Mach, o gerenciamento de memória do Mac OSX engloba diversos outros mecanismos, alguns dos quais não são partes estritamente do sistema VM, mas estão intimamente relacionados. 
O Subsistema VM do kernel Mach consiste do módulo machine-dependent phisical map(pmap) e outros módulos machine-independent para gerenciar a estrutura de dados, tais como os virtual address space maps (VM maps). O Kernel exporta diversas rotinas para o Espaço do Usuário (user space) como parte de Mach VM API. 
O kernel usa o UPL (Universal Page List), Estrutura de Dados para descrever como delimitaram conjunto de páginas físicas. O UPL é criado baseado na associação das páginas (pages) com o Objetos VM (objects VM). UPLs incluem vários atributos das páginas que descrevem. Subsistemas do Kernel, particularmente o File System, usam UPLs para se comunicar com o subsistema VM. 
O UBC (Unified Buffer Cache) constitui um conjunto de páginas para armazenar (caching) conteúdo dos arquivos e as porções anônimas do espaço de endereços. Memória anônima não é sustentada por arquivos regulares, dispositivos, ou mesmo alguma outra fonte de memória e o exemplo mais comum é a memória alocada dinamicamente. 
O Kernel inclui 3 paginadores internos, a saber: o paginador padrão (anônimo), o paginador para dispositivos e o paginador para vnode. Eles tratam operações de entrada e saída sobre regiões da memória. Os paginadores comunicam-se com o Subsistema Mach-VM utilizando interfaces UPL e derivadas do paginador do Mach. 
Memória Compartilhada 
Memória compartilhada é a memória que pode ser escrita ou lida a partir de dois ou mais processos. Memória partilhada pode ser herdada a partir de um processo-mãe, criado por um servidor de memória compartilhada, ou explicitamente criado por um pedido de exportação para outras aplicações. O uso da memória compartilhada/partilhada incluem: 
• Compartilhando grandes recursos, como ícones ou sons
 • Rápida a comunicação entre um ou mais processos 
A Memória compartilhada é frágil. Se um programa corrompe uma seção de memória compartilhada, os programas que também usam esta mesma memória acabam acessando dados corrompidos.
Wired Memory
Wired memory (também chamado de memória residente) armazena código kernel e estruturas dedados, que nunca deve ser paginada para o disco. Aplicações, frameworks e outros softwares da camada de usuário (user level) não podem ser alocados na wired memory. No entanto eles podem afetar a quantidade de Wired memory existente num dado momento. Há um overhead de memóriaassociada com cada recurso despendido pelo kernel em nome de um programa.
Sobre o Sistema de Memória Virtual
Gerenciamento de memória eficiente é um aspecto importante de escrever código de alto desempenho tanto em OS X e iOS. Minimizando o uso da memória, não só diminui o consumo de memória do aplicativo, ele também pode reduzir a quantidade de tempo de CPU que consome. A fim de definir corretamente seu código, porém, você precisa entender algo sobre como o sistema subjacente gerencia a memória.
Ambos OS X e iOS incluem um sistema de memória virtual totalmente integrado, que você não pode desligar, ele está sempre ligado. Ambos os sistemas também fornecem até 4 gigabytes de espaço endereçável por processo de 32-bit. Além disso, o OS X fornece cerca de 18 exabytes de espaço endereçável para processos de 64 bits. Mesmo para computadores que têm 4 ou mais gigabytes de memória RAM disponível, o sistema raramente dedica esta quantidade de RAM para um único processo.
Para dar processos de acesso ao seu inteiro de 4 gigabytes ou 18 exabyte espaço de endereço, OS X usa o disco rígido para armazenar dados que não estão em uso atualmente. Como a memória fica cheia, as seções de memória que não estão sendo usados ​​são gravados no disco para abrir espaço para os dados que são necessários agora. A porção do disco que armazena os dados não utilizado é conhecido como o armazenamento de apoio porque proporciona o armazenamento de reserva para a memória principal.
Embora OS X suporta um armazenamento de backup, iOS não. Em aplicações para o iPhone, somente leitura de dados que já está no disco (como páginas de código) é simplesmente removido da memória e recarregado a partir do disco, se necessário. Dados graváveis ​​nunca é removida a partir da memória pelo sistema operativo. Em vez disso, se a quantidade de memória livre cai abaixo de um certo limite, o sistema pede os aplicativos em execução para liberar memória voluntariamente para dar lugar a novos dados. Os aplicativos que não conseguem liberar memória suficiente está encerrado.
Nota:  Ao contrário da maioria dos sistemas operacionais UNIX, o OS X não usa uma pré-partição SWAP para memória virtual. Em vez disto ele usa todo o espaço disponível na máquina da partição de boot.
Nota:  Swap - O Linux divide sua RAM (random access memory) física em pedaços de memória chamados páginas. A troca (swapping) é o processo no qual uma página de memória é copiada a um espaço pré-configurado no disco rígido, chamado de espaço de troca (swap space), para liberar aquela página de memória. O tamanho combinado da memória física e do espaço de troca é a quantidade de memória virtual disponível.
O espaço de troca geralmente será uma partição de disco, mas também pode ser um arquivo. Usuários podem criar espaços de troca durante a instalação do Arch Linux ou a qualquer momento no futuro, se a necessidade surgir. O espaço de troca é geralmente recomendado para usuários com menos de 1 GB de RAM e é mais uma questão de preferência pessoal em sistemas com grandes quantidades de RAM física (entretanto, ele é necessário para suporte a suspensão para disco (suspend-to-disk). 
No windows você tem a memória usada pelo sistema operacional, pelos programas e a memória livre.
No OS X existe uma quarta categoria. A memória inativa.
Residente: é usada pelo OS X. Essa memória nunca irá para disco.
Ativa: é usada pelos programas que estão abertos. Caso seja necessário ela pode ser paginada em disco.
Livre: é a memória que não está sendo usado.
Inativa: é a memória que foi usada pelo programa mas não foi liberada. Apenas marcada como inativa.
Como funciona esse inativa? Imagina que você execute o Mail. Ele leva 5 segundos para abrir. Boa parte desse 5 segundos é gasto montando o ambiente para o aplicativo. Quando ele for fechado, sua memória não será liberada. Apenas marcada como inativa. Isso significa que abrir novamente o Mail será praticamente instantâneo. Será apenas marcar a memória como ativa digamos assim.
Monitor de Atividade
O Mac OS X conta com um gerenciamento de memória bastante eficaz. Ele automaticamente aloca memória e ajusta o conteúdo da memória conforme necessário.
Os tipos de Memória do Sistema são: memória Livre, Residente, Ativa e Inativa. Saiba também o que significa Utilizada, Tam. Memória Virtual, Páginas de entrada/Páginas de saída e Troca usada.
Notas: O termo "memória" usado neste artigo inclui RAM de alta velocidade, memória virtual e arquivos de troca na unidade do Mac.
Compreendendo a aba Memória do Sistema do Monitor de Atividade
Há quatro tipos de memória no gráfico circular da aba Memória do Sistema: Livre, Residente, Ativa e Inativa. A soma das quatro partes do gráfico equivalem ao total de RAM instalada no Mac. A RAM é a memória de alta velocidade usada para armazenar informações que estão sendo usadas ou foram usadas recentemente. As informações armazenadas na RAM são carregadas a partir da unidade do Mac durante a inicialização e quando os aplicativos e documentos estão abertos.
Veja a seguir uma janela do Monitor de Atividade com a aba Memória do Sistema selecionada:
Livre: Essa é a quantidade de RAM que não está sendo usada.
Residente: As informações armazenadas na RAM não podem ser movidas para a unidade do Mac. A quantidade de memória Residente depende dos aplicativos que estão em uso no momento.
Ativa: Essas informações estão armazenadas na RAM e foram usadas recentemente.
Inativa: Essas informações estão armazenadas na RAM, mas não estão sendo usadas ativamente, foram usadas recentemente.
Por exemplo, se você estiver usando o Mail e fechá-lo, a RAM que o Mail estava usando será marcada como Memória Inativa. A Memória Inativa ficará disponível para uso por outro aplicativo, exatamente como a Memória Livre.  No entanto, se você abrir o Mail antes que sua Memória Inativa seja usada por outro aplicativo, ele será aberto mais rapidamente, pois sua Memória Inativa será convertida em Memória Ativa em vez de carregar o aplicativo a partir da unidade, o que leva mais tempo.
Utilizada: Corresponde ao total de RAM utilizada.
Tam. Memória Virtual:
Corresponde à quantidade de Memória Virtual referente a todos os processos do Mac. 
Páginas de entrada/Páginas de saída:
Refere-se à quantidade de informações transferidas entre a RAM e a unidade do Mac. Esse número é um total acumulado dos dados que o Mac OS X transferiu entre a RAM e a unidade do Mac. Nota: O número entre parênteses mostra a atividade recente da página.
Dica: as páginas de saída ocorrem quando o Mac precisa gravar informações da RAM no disco rígido (porque a RAM está cheia).  Aumentar a quantidade de RAM pode reduzir as páginas de saída.
Troca usada: Corresponde à quantidade de informações copiadas para o arquivo de troca da unidade do Mac.
Liberando Memória RAM
	Apesar de ser muito bom no gerenciamento de memória RAM, o Mac está longe de ser perfeito. Assim, é comum que muita memória seja mantida como "Inativa" em vez de ser disponibilizada como "livre". Para consertar isso, basta abrir o Terminal e digitar a palavra $purge (sem as aspas). O processo pode deixar o Mac travado por um ou dois minutos, mas assim que completado, a memória estará livre para ser usada. 
Se você quer comparar a eficácia do truque, basta abrir o Monitor de Atividades antes e depois do comando e visualizar a distribuição de memória. O “Purge” funciona como uma espécie de reinicialização na memória, com a vantagem de que você não precisa fechar seus aplicativos e documentos e é especialmente eficaz para usuários que precisam de programas pesados, que consomem muita RAM.
Caso seja necessário forçar a liberação da memória “inativa” do Mac OS, você pode utilizar o comando purge. Para isso, basta abrir o terminal do Mac OS X e digitar:
$ purge
Outro comando útil, mas para o monitoramento da memória RAM, é o comando vm_stat. Para utilizá-lo, basta abrir o terminal e digitar:
$ vm_stat
Para fazer com que o comando seja atualizado automaticamente, digamos, a cada 3 segundos,basta fazer:
$ vm_stat 3	
vm_stat exibe estatísticas de memória virtual de Mach. Se o intervalo opcional for especificado, então vm_stat vai exibir as estatísticas de cada intervalo de segundos. Neste caso, cada linha de saída apresenta o mudar em cada estatística (uma contagem de intervalo de 1 exibe os valores por segundo). No entanto, o primeiro linha de saída após cada bandeira exibe os de todo o sistema totais para cada estatística. Se a contagem é fornecido, o comando será encerrado após intervalos de contagem. 
$ du – a/*	
Este comando ira apenas listar o conteúdo dos diretorios mais também que seja retirados da memória pelo gerenciador de esquema do OS X, deixando mais memória livre.
O comando top que eu uso diariamente é mais amplo (e também foi definido como um alias), e limita as colunas que são exibidas pelo comando às que me interessam diretamente, facilitando a inspeção visual:
$ top –o cpu –stats pid,user,state,command,cpu,vsize,rsize,time
A busca da bateria perfeita
O Timer Coalescing é um sistema que agrupa operações menos complexas, criando pequenos períodos de tempo ocioso imperceptíveis ao usuário. Promete reduzir até 72% do uso da CPU. Com a atividade da máquina reduzida, o consumo de energia também é menor.
O App Nap reconhece aplicativos ocultos da tela principal e reduz a velocidade de processamento, podendo ser reativados rapidamente quando voltarem para o campo de visão. O mesmo vale para as abas do Safari. O sistema reduz até 23% do consumo da CPU.
Outra prioridade do Mac OS X Mavericks é economizar memória RAM, ajustando a memória ativa. Quando o Mac se aproxima da utilização da capacidade máxima de memória o Mavericks compacta os dados de aplicativos inativos, disponibilizando mais memória.
A compressão e descompressão de memória são quase instantâneas e, em comparação com o Lion, o desempenho da memória comprimida é 1,4 vezes mais rápido e a ativação de repouso é 1,5 vezes mais veloz. 
A memória compactada (compressed memory) é um dos novos recursos apresentados pela Apple no keynote do WWDC, no início desta semana. Antes de entender seu funcionamento, precisamos entender o problema atual que ela busca resolver.
Ter memória disponível é essencial para o desempenho do Mac e, até a versão atual Mountain Lion, ele lida com os excessos dos aplicativos da mesma forma que a maioria dos sistemas operacionais modernos: movendo para o disco o conteúdo inativo (mas ocupado) da memória, deixando assim mais RAM livre para os apps em execução.
Essa técnica, chamada paginação, encontra o seu limite nos momentos em que temos pressa em voltar a ver um app "dono" de um grande trecho de memória que foi paginada para o disco, pois – mesmo nos casos mais velozes – o disco é muito mais lento que o acesso direto à memória.
Mesmo quando isso não ocorre e a transição é relativamente suave, o próprio ato de paginar tem impacto sobre o desempenho do sistema, embora seja muito melhor do que nos obrigar a instalar fisicamente toda a memória que consumimos em multitarefa, ou frequentemente deixar de rodar algum app porque a memória já está toda ocupada por outro.
Memória Comprimida
A memória compactada é outra forma de resolver o problema do uso de memória, evitando recorrer à lenta paginação para o disco. Seu princípio de funcionamento (que tem várias implementações já existentes) compactadores de disco como o DoubleSpace ou o Stacker.
As diferenças entre a memória compactada do OS X Mavericks e sistemas como o Stacker, além do fato de que a primeira se aplica à RAM e o segundo ao disco, começam pelo escopo: o Stacker comprimia um disco ou partição inteiros, e a memória compactada comprime apenas as áreas de memória que não estão em uso (ou seja, as que atualmente são paginadas diretamente para o disco).
Como o sistema não precisa comprimir a memória inteira, ele só o faz quando a memória livre está perto de acabar, e aí comprime apenas as áreas menos usadas (e as descomprime quando elas precisarem ser usadas). Ambas as operações são bem mais rápidas do que a paginação para o disco, e a compressão reduz em mais de 50% o espaço ocupado pelas áreas automaticamente selecionadas.
Outra grande diferença é que mais de uma década passou desde então, e o tempo de compressão e descompressão de dados (tarefa que faz uso intensivo de CPU, área que acelerou bastante) hoje é bem menor – sem falar na disponibilidade de CPUs com múltiplos núcleos, que na época eram um sonho e hoje podem permitir que um núcleo que estaria desocupado se encarregue de carregar o piano nos bastidores.
Para completar, recorrer previamente à compressão torna mais eficiente a operação de paginação, nos casos em que ela permanecer necessária.

Outros materiais