Introdução Paginação por demanda Alocação de memória Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/br/ Aula 24 Taxa de falta de páginas depende da quantidade de quadros alocados (memória) Três zonas de operação: Pouca alocação, alta taxa de falta de páginas (subdimensionamento) Média alocação, taxa de falta de páginas aceitável ( zona de conforto ) Alta alocação, baixa taxa de falta de páginas (superdimensionamento) Não necessariamente um problema (SE sobra memória para processos) Não é trivial achar a zona de conforto Varia de processo a processo Um mesmo processo tem padrões diferentes de comportamento durante a sua execução. 2 Ultrapaginação (thrashing) Estratégias de substituição de páginas global e local Situação de subdimensionamento onde o(s) processo(s) tem menos quadros alocados que o necessário Gera falta de páginas Tratamento de page-fault implica em page-in e page-out Algoritmo de substituição, trocas de contexto, bloqueio de processo, etc... Operação em disco é lenta Situação perversa CPU tende a ficar ociosa e então sistema operacional aceita criação de mais processos (consumirão mais memória, agravando a falta de memória) Nem sempre CPU ociosa é sinônimo de thrashing, pois pode haver vários processos bloqueados em E/S poucos processos a executar (baixo grau de multiprogramação) Com múltiplos processos competindo por memória é possível considerar duas estratégias para substituição de páginas Substituição global A página vítima é selecionada entre todos os quadros e processos existentes Permite um processo roubar quadros de outros processos Problema: desempenho dependerá do comportamento de todos processos Substituição local Processo seleciona a página vítima apenas entre os quadros alocados a si Problema: pode haver páginas que não são frequentemente usadas em outros processos 3 4
Problema da alocação de memória e desempenho Alocação estática igualitária Questão: Quanto alocar de memória para um processo? Objetivo da alocação de memória é dimensionar adequadamente a memória necessária a um processo Superdimensionamento reduz o grau de multiprogramação Subdimensionamento leva a ultrapaginação (thrashing) Importante estimar a quantidade mínima de quadros Duas estratégias Alocação estática Alocação variável Divide-se os quadros disponíveis entre os processos q quadros na RAM para n processos n é o grau de multiprogramação (máximo permitido) Quantidade de quadros para o processo i: a i = q/n Pode-se usar o valor do resto da divisão como quadros pertencente a um conjunto de quadros livres (buffer ou poll de livres) Problema é tratar diferentes da mesma forma 5 6 Alocação estática proporcional Exemplo de aplicação e estratégias de alocação estática Reconhece que processos têm requisitos diferentes de memória A alocação é feita proporcionalmente ao tamanho do processo s i : memória virtual do processo i S: total de memória virtual requisitada pelos processos q: número de quadros disponíveis na RAM a i : número de quadros alocados para o processo i Problema é a variação do grau de multiprogramação Estratégia igualitária 93 quadros livres e cinco processos Cada processo ganha 18 quadros (93 div 5=18) e 3 quadros (93 mod 5) vão para o buffer de quadros livres Estratégia proporcional 62 quadros livres e dois processos (um de 10 páginas e outro de 127 páginas) Cálculo das páginas alocadas para cada processo Processo 1: (10/137)x62 = 4,525, então 4 páginas Processo 2: (127/137)x62 = 57,475, então 57 páginas 1 página para pool de quadros livres 7 8
Questões Estratégia variável Tamanho do processo é o melhor critério? Com alocação igualitária ou proporcional, processos de prioridades diferentes são tratados da mesma forma Deveria ser considerada a prioridade do processo? Alocação proporcional usando a prioridade do processo no cálculo mais memória para que processo de maior prioridade execute mais rápido Qual o critério mais adequado? Na realidade, o melhor seria uma combinação de tamanho e prioridade Em caso de falta de página, o que fazer? Executar algoritmo de substituição de páginas entre aquelas alocadas para o processo política de substituição local Processos recebem memória de acordo com sua demanda Pode receber mais quadros OU liberar quadros não (pouco) usados Questão: em caso de necessidade, de onde se obter quadro? Se há quadros livres: é só alocar Se NÃO há quadros livres é necessário executar substituição de páginas Politica global: pega quadro de qualquer processo Política local: pega quadro apenas dentre aqueles alocados a si 9 10 Prevenção da ultrapaginação (thrashing) Modelo de conjunto de trabalho (working set) Objetivo é fornecer os quadros necessários a um processo Tentar achar a zona de conforto Estratégia Examinar quantos quadros (páginas) um processo está usando Modelo de localidade: conjunto de páginas usadas ativamente juntas Duas situações: Aumentar a localidade: alocar mais quadros, Se necessário, suspender um processo e liberar os quadros que usava Diminuir a localidade: liberar quadros (páginas) não mais necessários Dois métodos Modelo do conjunto de trabalho (working set) Frequência de falta de página Objetivo: definir quantos quadros um processo deve ter em memória para manter um bom desempenho fortemente baseado na localidade de referência Definição: Conjunto de páginas usadas nas últimas referências a páginas (working set ) é uma constante do sistema (projeto) WSS i é o working set size do processo P i (quantidade de página do working set) Propriedade mais importante para alocação = 10 unidades (referências)...2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4... WS={1, 2, 5, 6, 7} t 1 WS={ 3,4} t 2 11 12
Modelo de localidade e working set Princípio de funcionamento Pico Demanda por novas páginas O WS está sendo alterado Taxa de falta de páginas Relação direta entre o WS e a taxa de falta de páginas Execução é formada por picos e vales de page-faults Estabilidade O WS já está carregado na memória 13 Alocador garante o WS na memória OU o processo é suspenso Quantidade de quadros alocados para P i tem apenas duas possibilidades: Idêntica a cardinalidade do working set (WS) Zero Estratégia tende a evitar o subdimensionamento, portanto previne thrashing. Por processo é mantido Alloc i : quantidade de quadros (q) alocado ao processo i Zero, se suspenso OU WSS, se está no escalonador de curto prazo WSS i : cardinalidade do WS do processo i 14 Regulando o grau de multiprogramação Exemplo de working set Premissas básicas WSS i é a quantidade total de quadros necessários em um dado instante O objetivo é manter WSS i q (q = quantidade de quadros) Thrashing ocorre quando WSS i > q Funcionamento: Se WSS g (q - WSS i ), então autoriza a entrada do processo g no escalonador de curto prazo Se WSS i > q então deve-se baixar o grau de multiprogramação Suspende um ou mais processos para evitar essa situação Realização de swap (processo vítima inteiro para o disco) Função do escalonador do médio prazo Para P i : 100 200 300 400 alloc i : WSS i ; se houver quadros disponíveis alloc i : 0; se não tem quadros disponíveis (remove os já alocados swap-out) Supondo RAM com 60 quadros 100 200 300 400 WSS alloc WSS alloc WSS alloc WSS alloc P 1 14 14 12 12 14 14 13 13 P 2 20 20 24 24 11 11 25 25 P 3 18 18 19 19 20 20 18 18 P 4 10 0 10 0 10 10 12 0 52 55 55 swap-in swap-out t 56 15 16
Problemas com working set Definição e manutenção do working set Estimativa do valor de = valor pequeno: não abrange toda a localidade do processo Induz ao thrashing = valor grande: abrange várias localidades = : abrange todo o programa Reduz o grau de multiprogramação Custo da implementação em tempo de processamento Working set é recalculado a cada referência Para reduzir o custo emprega-se aproximações baseadas no bit de referência e em data de acesso (time stamp) A cada referências ou t: se (bit_r == 1) então bit_r = 0; tempo_acesso = tempo_atual; senão t_off = tempo_atual - tempo_acesso; se (t_off > t_max ) Remove página do WS; Decrementa WSS i t 0 referências t 1 t 2 Efeitos colaterais Processos bloqueados tem bit r em zero e acabam por perder páginas no cálculo do WS (momento da reavaliação) Tratamento de page-fault logo após reavaliação do WS acham bit r em zero Pode levar a substituição indevida de páginas 17 18 Método de frequência de falta de páginas (PFF*) Método da frequência de falta de páginas Objetivo é manter uma quantidade adequada de páginas em memória Em relação ao working set muda a forma de estimar o conjunto de páginas Método mais direto: fornece a quantidade, não controla as páginas em si Estratégia: U Acionado sempre que houver falta de página Controla o tamanho do conjunto de alocação com base em um limite superior e inferior de taxa de falta de páginas Taxa alta: processo necessita de mais quadros Taxa baixa: processo pode liberar quadros Se não há páginas livres para alocar, então um, ou mais processos, devem ser suspensos *Page Fault Frequency - PFF L Min Máx Quantidade de quadros (working set) Se (FFP > U AND há quadros livres) aloca quadros (aumenta WS) Se (FFP < L) libera quadros (diminui WS) Se (FFP > U AND não há quadros livres suspende processo (libera todos quadros) 19 20
Estudo de caso: Linux Algoritmo de substituição e balanceamento de listas Os quadros são mantidos em três listas (estados) Livres: não alocados a um processo Ativos: alocados e usados por um processo Inativos: alocados a processados, mas não em uso Sujos: necessário fazer page-out Limpos: já sofreram o page-out ou associados a páginas não modificadas Em caso de falta de página Se está na lista de inativos é só passar para lista de ativos Se não está alocada quadro da lista de livres Efetua um algoritmo de substituição e balanceamento de listas Listas são mantidas em função da quantidade de quadros Livres: há uma definição de quantidade mínima (depende da RAM disponível) Lista ativos e inativos são mantidas na proporção 2/3 e 1/3, respectivamente Emprega algoritmo do relógio baseado no bit de referência (R) Quadros da lista de inativo para lista de livres (analisa a partir do final da lista*) R= 0: passa da lista de inativo para livre R=1: R=0 e passa para frente da lista de inativo Para passar quadros da lista de ativos (final da lista) para inativos R = 0: passa da lista de ativo para inativo R = 1: reseta bit de referência e passa para frente da lista de ativos Quando página de quadro inativo é acessada passa lista de ativo *lista organizada por antiguidade: mais recentes na frente 21 22 Estudo de caso: Windows Leituras complementares Baseado em uma noção de working set Define tamanhos mínimo e máximo de acordo com tamanho da RAM Em caso de falta de página Avalia quantidade de memória livre no sistema, o working set size (WSS) do processo, os valores mínimo e máximo do working set SE o WSS é menor que o valor máximo e existe memória livre, aloca novo quadro, SE NÃO substitui uma página do processo (substituição local) Emprega algoritmo do relógio (2ª chance) Gerenciador de working set Ativado periodicamente para ajustar working set dos processos Se memória livre está abaixo de um valor de teto, busca páginas não acessadas nos processos que tem WSS maior que o mínimo A. Tanenbaum. Modernos (3 a edição), Pearson Brasil, 2010. Capítulo 3: seção 3.5 A. Silberchatz, P. Galvin;. (7 a edição). Campus, 2008. Capítulo 9: seção 9.5 e 9.9 R. Oliveira, A. Carissimi, S. Toscani;. Editora Bookman 4 a edição, 2010 Capítulo 7 (seções 7.2 e 7.3) 23 24