GERÊNCIA DE MEMÓRIA

Gerencia de Memoria

O gerenciador do memória virtual (VM) do Windows NT permite aos subsistemas do modo usuário compartilhar memória eficientemente usando objetos que são protegidos, denominados e manipulados como qualquer objeto do executivo.

            Os subsistemas podem definir proteção a nível de página na memória privativa, bloquear páginas selecionadas na memória, tirar proveito dos arquivos mapeados e gerenciar os espaços de endereçamento virtual de outros processos

              No Windows NT o mecanismo de gerência de memória considera um espaço linear de 32 bits, o que permite endereçar 4GB de memória virtual. Estes 4GB são divididos igualmente entre o usuário e o sistema operacional.

Cada página virtual pode estar em um dos três estados:
• Livre: quando não está em uso pelo processo;
• Comprometida: quando já se encontra mapeada para o processo;
• Reservada: quando, embora já esteja alocada para algum processo, ainda não se encontra mapeada em disco.


           Com o objetivo de evitar desperdício de espaço em disco, no Windows NT, as páginas comprometidas que não tiverem um local natural no disco não terão alocadas para si uma página no disco enquanto não chegar o momento delas irem para o disco. Páginas livres e reservadas nunca têm páginas duplicadas no disco, e as referências a elas sempre causam falta de página.

 

O UNIX foi desenvolvido em computadores com pequena quantidade de memória. O PDP-11(modelo do UNIX) foi desenvolvido com capacidade de 256Kbytes de memória principal. Em função desta quantidade escassa de memória, não se justificava o desenvolvimento de um gerenciamento de memória complexo. O UNIX adotou, assim a simples permuta entre a memória e o disco (swapping) do processo. Posteriormente, foi introduzida a memória virtual com paginação nas versões desenvolvidas pela universidade de Berkeley.

 

Paginação

           

            As implementação do UNIX para computadores de médio e grande porte usam a paginação no gerenciamento de memória. No UNIX os page frames podem variar de 512 a 2.048 bytes. O espaço de endereço lógico é divido em paginas de mesmo tamanho que os page frame, sendo um endereço representado por um numero de pagina (p) e um deslocamento dentro da pagina (d). Uma tabela de paginas permite o mapeamento dos endereços lógicos representados pelo par [p,d], para endereços físicos na memória.

            Com este esquema, quando um processo necessita de uma pagina e a mesma não esta na memória principal, é gerado um page fault para o kernel que aloca um page frame onde será carregada a pagina. Algumas versões do UNIX utilizam a LRU modificada, para alocação de page frame.

 

Swapping

 

            Nas versões mais antigas do UNIX, os processos são permutados(entre a memória principal e o disco) à medida que seja necessário. Tanto a memória principal como o disco são alocados por uma estratégia first-fit. Se o tamanho de um processo aumenta, uma nova porção de memória é alocada, a imagem é copiada, a parte ocupada pela imagem anterior é liberada, e as tabelas referentes aquele processo são atualizadas.

            As decisões sobre a permuta são feitas por um componentes chamado sheduler process, com o fim de realizar a permuta. Os processos desocupados, os processo que estejam na memória por muito tempo ou os processos muito grandes são os maiores candidatos a serem permutados para o disco. Os processos que estão em disco há muito tempo ou os processos pequenos são os que tem mais chance de serem permutados para a memória.