Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Gerenciamento Básico de Memória Parte II Prof. Sílvio Fernandes UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Registradores base e limite criam abstração de espaços de endereço Mas há outro problema a ser resolvido: gerenciar o bloatware 2 Memória Virtual SW utilizam quantidades excessivas de memória Problema de programas maiores que a memória está presente desde o início da computação Há muitos anos programadores já eram obrigados a lidar com programas maiores que a quantidade de memória física disponível A solução era dividir o programa em módulos chamados overlays O overlay 0 era o 1º a ser executado, e chamava o próximo, que era carregado em seu lugar na memória, quando o 1º terminava O principal problema é que a divisão em overlays era feita pelo programador (trabalho lento e propenso a erros) 3 Memória Virtual A solução foi o método conhecido como memória virtual, que permite que o tamanho total de um programa (código, dados e pilha) pode exceder a quantidade total de memória física disponível para ele O SO mantém as partes ativas do programa na memória e o restante no disco 4 Memória Virtual Paginação Em qualquer computador existe um conjunto de endereços de memória que os programas podem gerar ao serem executados Quando um programa usa uma instrução do tipo MOV REG, 1000 Endereços gerados pelo programa são chamados de endereços virtuais e constituem o espaço de endereçamento virtual 5 Paginação Em computadores sem memória virtual o endereço virtual é idêntico ao endereço físico Em computadores com memória virtual esse endereço será passado a uma MMU (Memory Management Unit) que mapeia endereços virtuais em físicos 6 Paginação Localização e função da MMU 7 Paginação Ex: Um computador que pode gerar endereços virtuais de 16 bits (de 0 a 64K), mas que só possui 32K de memória física. Mas é possível escrever programas de 64K 8 Paginação O espaço de endereçamento virtual é dividido em unidades denominadas páginas (pages). As unidades correspondentes em memória física são as molduras de página (page frames) Páginas e molduras de páginas possuem sempre o mesmo tamanho A transferência entre a memória e o disco são sempre em unidades de uma página 9 Paginação Quando um programa tenta acessar o endereço 0 com a instrução MOV REG, 0 o end. virtual 0 é enviado a MMU, que detecta que este endereço está na página virtual 0 (0 a 4095), que por sua vez corresponde a moldura de página 2 (8192 a 12287) A MMU então transforma o end. virtual 0 no end. físico 8192 e o envia a memória por meio do barramento A memória desconhece a MMU e somente enxerga uma solicitação de leitura ou escrita no endereço que chega 10 Paginação Como outro exemplo, o end. virtual 20500 está localizado 20 byte após o início da página virtual 5 sendo mapeado para o end. físico 12288 + 20 = 12308 Quando (ou se) o programa tentar usar uma página virtual não mapeada, por exemplo, com a instrução MOV REG, 32780 (12º byte da pág. virtual 8). A MMU constata que está pág. não está mapeada e força o desvio da CPU para o SO Essa interrupção (trap) é denominada falta de página (page fault) 11 Paginação Na falta de página o SO 1. Escolhe uma moldura de página para salvar no disco. Ex: moldura 1 2. Marca na tabela de páginas virtuais a entrada escolhida (1) como não mapeada 3. Carrega a pág. virtual referenciada pela instrução na moldura de pág. recém liberada (1) 4. Marca na tabela de pág. virtuais a entrada da nova pág. virtual (8) como mapeada (moldura 1) A MMU transformará o endereço virtual 32780 no end. físico 4108 12 Paginação Para entender como a MMU trabalha vemos um exemplo de end. virtual, 8196 (0010000000000100), sendo mapeado por meio do emprego do mapeamento da MMU 13 Paginação Operação interna de uma MMU com 16 páginas de 4KB 14 Tabelas de páginas No caso mais simples o mapeamento é feito exatamente da maneira descrita anteriormente End. virtual é dividido no número de pág. virtuais (bits mais significativos) e um deslocamento dentro desta pág. (bits menos significativos) No exemplo tínhamos 16 pág. virtuais de 4KB cada Os 4 1º bits especificavam o número da pág. virtual (0 a 15) Os 12 bits seguintes especificavam o deslocamento (byte 0 a 4095) em relação ao começo da pág. 15 Tabelas de páginas O no. de pág. virtual é usado como índice dentro da tabela de pág. que aponta para uma entrada relacionada a pág. virtual, onde encontramos o no. da moldura de pág. correspondente O no. da moldura deve ser concatenado com os bits de deslocamento para formar o end. físico 16 Estrutura de uma entrada da tabela de páginas Na prática, cada entrada na tabela de páginas armazena bem mais que o número da moldura correspondente O formato exato de cada entrada é altamente dependente de hardware, mas a informação contida nela é aproximadamente padronizada O tamanho de cada entrada é comumente de 32 bits que podem ser divididos em vários campos 17 Estrutura de uma entrada da tabela de páginas Entrada típica de uma tabela de páginas 18 Estrutura de uma entrada da tabela de páginas Número da moldura: é o campo de maior importância, dado que o objetivo do mapeamento é encontrar este valor O bit presente/ausente: se este bit for 1 a entrada é válida e pode ser usada. Se for 0 a pág. virtual à qual a entrada pertence não está na memória neste momento. O acesso a uma entrada na tabela de pág. com este bit igual a 0 causa uma falta de pág., e o SO deverá ser chamado 19 Estrutura de uma entrada da tabela de páginas Os bits de proteção: define os tipos de acesso que são permitidos a pág. Pode ser de apenas um bit com valor 0 para leitura e escrita e 1 para somente leitura. Na prática normalmente são usados 3 bits, cada uma para permitir ou não a leitura, escrita e execução 20 Estrutura de uma entrada da tabela de páginas O bit modificada: quando uma instrução altera o valor de algum bit de uma moldura de pág., o hardware automaticamente altera o valor deste bit para 1 na entrada correspondente da tabela de pág. Este bit é importante quando o SO necessita de uma moldura de pág. Se a pág. correspondente a essa moldura foi modificada (suja), ela tem que ser atualizada no disco. Caso contrário (continua limpa), ela pode ser simplesmente abandonada, visto que sua imagem em disco continua válida (igual a da memória) 21 Estrutura de uma entrada da tabela de páginas Bit referenciada: esse bit tem seu valor alterado para 1 quando a pág. correspondente é acessada seja para leitura ou escrita. Este bit ajuda o SO a escolher uma moldura de pág. a ser substituída quando da ocorrência de uma falta de pág. Páginas que não estão sendo acessadas são melhores candidatas do que aquelas que estão 22 Estrutura de uma entrada da tabela de páginas O bit de cache desabilitado: este bit permite que o mecanismo de cache seja desabilitado para pág. Normalmente ele é usado apenas em pág. que mapeiam regiões de memória utilizadas para E/S com dispositivos 23 Acelerando a paginação Em qualquer sistema de paginação 2 problemas devem ser enfrentados Mapeamento para endereço físico deve ser rápido Todas as instruções vem da memória e muitas fazem acessam operandos nela Se o espaço de endereço virtual for grande, a tabela de páginas será grande Os computadoresusam 32 ou 64 bits de endereçamento Com páginas de 4 KB, por exemplo, um end. de 32 bits tem 1 milhão de páginas 24 TLB ou Memória Associativa Na ausência de paginação, uma instrução faz um único acesso à memória para buscar a própria instrução Com paginação, será necessária pelo menos uma referência adicional à memória para acessar a tabela de páginas Observa-se que apenas uma reduzida parte das entradas da tabela é intensamente lida A solução foi equipar computadores com um HW (TLB – Translation Lookaside Buffer) que mapeia end. virtuais para físicos sem passar pelas tabelas de páginas geralmente localizado dentro da MMU 25 TLB ou Memória Associativa Buffer para tradução de endereço 26 Um exemplo que pode gerar essa TLB é um processo em um laço de repetição TLB ou Memória Associativa Como funciona 1. O endereço é apresentado a MMU 2. O HW verifica se a página está presente na TLB (comparando simultaneamente todas as entradas em paralelo) 3. Se corresponde a uma entrada válida e não viola os bits de proteção a moldura é obtida (page hit) 4. Se estiver presente mas não há permissão uma falta por violação (protection fault) é gerada 5. Se não estiver na TLB (page miss) a MMU acessa a tabela virtual e substitui uma entrada por esta nova 27 Tabelas de páginas para memórias grandes TLB ajudam a acelerar o acesso mas não resolvem espaços de endereços virtuais muito grandes Existem 2 modos de lidar com isso Tabelas de páginas multinível Tabelas de páginas invertidas 28 Tabelas de páginas para memórias grandes Tabelas de páginas multinível 29 12 bits = páginas de 4 KB Tabelas de páginas para memórias grandes Tabelas de páginas multinível O segredo desse método é evitar que todas as páginas sejam mantidas na memória o tempo todo Quando o endereço chega a MMU Ela primeiro extrai o campo PT1 e o utiliza com índice da tabela de página de nível 1 Cada entrada dessa tabela aponta para o endereço ou moldura de página de uma tabela de nível 2 O campo PT2 é usado como índice na tabela de nível 2 para localizar a moldura de página física Os 12 últimos bits são de deslocamento 30 Tabelas de páginas para memórias grandes Tabelas de páginas invertidas Para endereços de 32 bits tabelas multinível funcionam bem Mas para endereços de 64 bits o espaço de endereçamento virtual agora é 264 bytes, se adotarmos páginas de 4KB, precisamos de uma tabela com 252 entradas Se cada entrada contiver 8 bytes, essa tabela terá mais de 30 milhões de gigabytes (30 PB) 31 Tabelas de páginas para memórias grandes Tabelas de páginas invertidas Nela existe apenas uma entrada por moldura de página na memória real, em vez de uma entrada por página do espaço de endereçamento virtual Cada entrada informa o par (processo, página virtual) está localizada na moldura de página Quando o processo n referencia a página virtual p, o HW não pode mais encontrar a página física usando p como índice Em vez disso, ele deve pesquisar toda a tabela de páginas invertidas em busca de uma entrada (n, p) 32 Tabelas de páginas para memórias grandes Tabelas de páginas invertidas É possível usar TLB para agilizar página muito acessadas Uma ausência na TLB faz a tabela de página invertida ser pesquisada por SW Um modo comum é ter uma tabela de espalhamento (hash) nos endereços virtuais Todas as páginas virtuais com o mesmo valor de espalhamento serão encadeadas juntas 33 Tabelas de páginas para memórias grandes Tabelas de páginas invertidas 34 Referências TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009. 35
Compartilhar