Sistemas Operacionais II Windows: Gerenciamento de Memória
Espaço de Endereçamento Em máquinas de 32 bits, o espaço de endereçamento virtual é de 4 GB dividido assim: 2 GB inferiores (menos 256 MB) para código e dados do processo; 2 GB superiores mapeiam o núcleo de uma forma protegida. O espaço de endereçamento virtual é paginado sob demanada No Pentium as páginas possuem 4 KB; 2
64 KB Superiores e Inferiores A parte de baixo e de cima dos 64 KB não estão mapeadas; Isto auxilia a identificação de erros como utilização de ponteiros inválidos que muitas vezes possuem valor 0 ou 1; A tentativa de usá-los causa um desvio em vez de gerar uma leitura de lixo ou escrita em local incorreto da memória; Programas MS-DOS antigos executando no modo de emulação podem ser mapeados nesta parte. 3
2 GB Superiores Mapeam código, dados e reservatórios de objetos paginados e não-paginados do sistema; Compartilhados por todos os processos (menos as tabelas de páginas); Não podem ser escritos e uma parte nem mesmo pode ser lida; Motivo: quando o thread realiza uma chamada ao sistema basta mudar para modo núcleo e continuar executando no mesmo thread; Compromisso entre mais espaço no espaço de endereçamento privado do processo contra maior rapidez das chamadas ao sistema. 4
Endereçamento Virtual para 3 Procesos 5
Estados de uma Página Virtual Livre Quando não está em uso; Estado inicial de todas as páginas de um processo. Comprometida Uma vez que o código ou dados estejam mapeados em uma página ela é dita comprometida; Uma referência a ela pode ser bem sucedida ou gerar uma falta de página. 6
Estados de uma Página Virtual Reservada Quando não estiver disponível para ser mapeada; Exemplo: ao se criar uma thread é reservado 1MB de espaço de pilha 7
Arquivos Mapeados em Memória Assim como o Unix, permite que arquivos sejam mapeados para regiões de páginas consecutivas de um espaço de endereçamento virtual; O arquivo pode ser lido ou escrito usando referências comuns à memória; Permite que dois ou mais processos mapeiem simultaneamente um mesmo arquivo eventualmente com permissões de acesso diferentes. 8
Arquivos Mapeados em Memória 9
Chamadas ao Sistema para Gerenciamento de Memória 10
Implementação do Gerenciamento de Memória Diferentemente do escalonador, o gerente de memória se preocupa apenas com processos e não com threads; Não é utilizado nenhuma forma de prépaginação: quando um processo é iniciado, nenhuma de suas páginas está na memória; Elas são trazidas dinamicamente, conforme a ocorrência de faltas de página. 11
12 Entrada na Tabela de Páginas
Categorias de Faltas de Página A página referenciada não está comprometida; Ocorreu uma violação de proteção Os dois casos acima geram erros fatais para os quais não há recuperação; Uma página compartilhada foi escrita Se a página é somente de leitura copia-se a página para um novo bloco de memória física e a mapeia como RW (cópia na escrita). 13
Categorias de Faltas de Página A pilha precisa crescer Requer a alocação de um novo bloco de memória e seu mapeamento; Regras de segurança exigem que ela seja limpa com 0s para impedir que os processos espiem o conteúdo do proprietário anterior; A página referenciada está comprometida mas não mapeada Falta normal de página; A página é localizada e mapeada. 14
Algoritmo de Substituição de Páginas O sistema tenta manter na memória um número substancial de páginas livres, a fim de obter imediatamente uma página livre sem a necessidade de escrever alguma página no disco quando ocorrer uma falta de página; Cada processo possui um conjunto de trabalho composto pelas páginas mapeadas que estão na memória; 15
Algoritmo de Substituição de Páginas O tamanho e a composição do conjunto de trabalho são variáveis. Cada conjunto de trabalho possui um tamanho mínimo e máximo e todo processo inicia com o mesmos valores para eles; O mínimo inicial fica entre 20 e 50 e o máximo inicial entre 45 e 345, dependendo da quantidade total de RAM; O administrador pode alterar estes valores iniciais; Se ocorrer uma falta de página e o conjunto de trabalho for menor que o mínimo, a página será adicionada; 16
17 Algoritmo de Substituição de Páginas Se ele for maior que o máximo, uma página será removida do conjunto de trabalho, mas não da memória. Este algoritmo impede que um processo manipule a memória, prejudicando os demais; No entanto, se um processo está paginando demais, o sistema aumenta seu máximo; imite: mesmo que exista apenas um processo em execução, ele não pode usar as últimas 512 páginas para deixar folga para novos processos
Examinando as Páginas Livres Um thread daemon, o gerenciador de balanceamento de conjuntos, executa a cada segundo e verifica se há páginas livres suficientes; Se não houver, ele inicia o thread gerenciador de conjuntos de trabalho que recupera mais páginas; Inicialmente é definida a ordem em que os processos são examinados: processos grandes ociosos por longo tempo são examinados primeiro. Processos ativos, pequenos e em primeiro plano são os últimos. 18
19 Examinando um Processo Se um processo estiver abaixo do mínimo ou tenha causado mais de um certo número de faltas de página ele será ignorado. Caso contrário, uma ou mais páginas serão removidas; O número de páginas a ser removido é uma função do tamanho da RAM, da quantidade de memória disponível, do tamanho do conjunto de trabalho comparado ao mínimo e máximo e outros parâmetros; As páginas são examinadas uma após a outra.
Examinando uma Página: Se o bit de referência está desligado, é incrementado um contador associado à página; Se estiver ligado, o contador é zerado; As páginas cujos contadores possuem maior valor são removidas do conjunto de trabalho. 20
Gerenciamento de Memória Física Existem quatro filas de páginas livres: Lista de páginas modificadas (sujas) Lista de páginas disponíveis (limpas) Estas duas primeiras contêm as páginas recentemente removidas de um conjunto de trabalho que ainda estão na memória e ainda associadas com o processo que as estava usando. Lista de páginas livres Páginas limpas não associadas a nenhum processo Listas de páginas zeradas Páginas preenchidas com zero. 21
Gerenciamento de Memória Física 22
23 Gerenciamento de Memória Física Gerenciador de conjuntos de trabalho remove uma página de um conjunto de trabalho ela vai para a lista de páginas modificadas ou disponíveis; Se ocorrer uma falta de página elas podem voltar ao conjunto de trabalho; O processo termina e suas páginas são liberadas; Dois daemons (escritor de páginas mapeadas e escritor de páginas modificadas) acordam periodicamente e caso não existam páginas limpas suficientes eles retiram da lista de páginas modificadas, escrevem-nas no disco e passam para a lista de páginas disponíveis.
Gerenciamento de Memória Física Processo remove o mapeamento de um página e ela vai para a lista de livres; Ao ocorrer uma falta de página um bloco livre é obtido da lista de livres; O thread de zerar páginas zera as páginas da lista de livres, colocando-as na lista de páginas zeradas. 24
Monitoramento de Páginas e Listas O Windows mantêm um banco de estruturas de páginas com uma entrada para cada bloco da memória RAM; Esta tabela é indexada pelo número do bloco; As entradas possuem tamanho fixo mas formatos diferentes para tipos diferentes; 25
Monitoramento de Páginas e Listas As entradas possuem: Estado da página; Quantas tabelas de página apontam para o bloco; Qual o conjunto de trabalho que a possui; Ponteiro para a tabela de página; Ligação para a página seguinte da lista; Outros campos e sinalizadores. 26
Monitoramento de Páginas e Listas 27