Gerência De Memória Do MAC OS X
Artigo: Gerência De Memória Do MAC OS X. Pesquise 862.000+ trabalhos acadêmicosPor: robsonsergio • 10/3/2015 • 3.273 Palavras (14 Páginas) • 1.608 Visualizações
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
...