Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Sistemas Operacionais Gerência de Memória - Parte 2- Sumário � Introdução � Alocação Contígua � Partições Fixas (Estáticas) � Partições Variáveis (Dinâmicas) � Paginação � Segmentação � Segmentação Paginada Introdução � Memória precisa ser alocada de forma a manter o maior número de processos possível � As diferentes maneiras de gerenciar a memória dependem do hardware do processador � Alocação Contígua � Partições Fixas � Partições Variáveis � Alocação Não Contígua � Paginação � Segmentação � Segmentação com Paginação Introdução � Espaço de endereçamento � Lógico � Todos os endereços lógicos que um processo pode gerar � Físico � Todos os endereços aceitos pela memória (CI) � Memory Management Unit – MMU � Mapeamento dos Endereços Lógicos para Endereços Físicos Alocação Contígua � Proteção de Memória CPU Memória< + Registrador Limite Registrador Base Erro de Endereçamento Não Sim Partições Fixas (Estáticas) � Método de gerência mais simples � Limita o grau de multiprogramação � A memória é dividida em várias partições de tamanho fixo e cada partição pode receber um processo � O Sistema Operacional é responsável por manter informações: � Partições alocadas � Partições livres � Tamanho das partições 2 Partições Fixas (Estáticas) � As partições podem ter tamanhos diferentes, porém esses tamanhos são fixos � Um processo ao ser carregado deve ter tamanho menor ou igual a partição � Caso contrário, overlay é empregado � Foi usado no OS/360 IBM � Fragmentação Interna � Um processo ocupa sempre uma partição inteira Partições Fixas (Estáticas) � Alocação da Partição � Uma fila para cada partição � Uma fila para todas as partições Partições Variáveis (Dinâmicas) � As partições são ajustadas dinamicamente conforme o tamanho dos processos � Elimina a fragmentação interna � As partições são em número e tamanho variáveis � Pode acontecer Fragmentação Externa � Há memória disponível, porém não contígua � Para solucionar � Reunir espaços adjacentes; código deve ser relocável Partições Variáveis (Dinâmicas) � SO mantém uma lista de lacunas = lista de partições livres � Essa lista é percorrida cada vez que um processo precisa ser alocado � Se a lacuna é suficientemente grande, o processo é alocado � Processo terminado, uma nova lacuna é criada Partições Variáveis (Dinâmicas) � Estratégias para percorrer a lista: � First-Fit � A primeira partição suficientemente grande é alocada ao processo � Best-Fit � A partição que produzirá a menor sobra de espaço é alocada ao processo � Worst-Fit � A partição que produzirá a maior sobra de espaço é alocada ao processo � Circular-Fit � Variação do First-Fit (procura circular) Paginação � Há o espaço de endereçamento lógico (processo) e o espaço de endereçamento físico. � O espaço de endereçamento lógico é contíguo (visão do usuário) � O espaço de endereçamento físico não precisa ser contíguo. � A memória lógica é dividida em blocos de tamanho fixo e identicos � Páginas � A memória física é dividida em blocos de tamanho fixo e idênticos � Frames ou Quadros 3 Paginação � Há necessidade de mapear o espaço lógico para o espaço físico � Endereço lógico � Endereço Físico � Fragmentação Interna � Restrita a última página ocupada pelo processo � Cada página é alocada em um quadro � Para o mapeamento de endereços, é utilizada a Tabela de Páginas � A Tabela de Páginas é usada também para Proteção da Memória e Compartilhamento Paginação � Endereço Lógico � <nº página, deslocamento> � Endereço Físico � <nº quadro, deslocamento> p d m bits n bitsm-n bits Esquema Básico da Paginação A1 A2 A3 A4 A5 Processo 1 Página 0 1 2 3 4 B1 B2 B3 B4 Processo 2 Página 0 1 2 3 A1 A2 B1 Memória Principal Quadro 0 1 2 3 4 B2 B3 B4 A3 A4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 Página 2 1 8 9 Quadro v v v v i v/i 0 1 2 3 Página 4 5 6 7 Quadro v v v v v/i Tabela de Páginas Processo 1 Tabela de Páginas Processo 2 Paginação � Mapeamento Endereço Lógico para Físico CPU p d q d q Tabela de Páginas Memória Endereço Lógico Endereço Físico Paginação � Tamanho da página: até 8 kbytes � O SO mantém uma lista com os quadros livres � Páginas pequenas implicam... � Páginas grandes implicam... Paginação � Proteção � Processos acessam somente suas páginas � Os registradores que controlam o acesso à tabela de páginas são acessados somente no modo supervisor � Bits de controle � Para cada página da tabela � Indicam leitura, escrita ou executável � Bit de Verificação (ou Validade) � Indica se a página pertence ao espaço de endereçamento lógico do processo 4 Implementação da Tabela de Páginas � Registradores � Acesso rápido � Cada página da tabela é mantida em um registrador � No PCB há cópia dos registradores para a troca de contexto � Memória � A tabela de páginas é mantida na memória � A MMU tem dois registradores para localizá-la � PTBR: registrador base da tabela de páginas � PTLR: registrador limite da tabela de páginas (guarda o número de entradas na tabela) � Quantos acessos devem ser feitos à memória para acessar um dado? Implementação da Tabela de Páginas � TLB - Translation Lookaside Buffer � Registradores Associativos � Cache para manter as entradas da tabela mais recentemente utilizadas � Implementada por memória associativa � tamanho limitado (16 a 32 entradas) � hardware que faz busca paralela � Acesso � se a entrada está no TLB, acerto (hit) � caso contrário, busca na tabela de páginas que está na memória e a entrada é incluída na TLB � Na troca de contexto, a cache deve ser esvaziada e os valores dos PTBR e PTLR são salvos. Implementação da Tabela de Páginas � Paginação Multinível � Tabela de páginas com dois níveis � 1º nível = diretório de tabelas de páginas � 2º nível = tabelas de páginas � Exemplo: endereço lógico de 32 bits diretório página deslocamento 10 bits 10 bits 12 bits Diretório Tab. Pág. Tab. Pág. Tab. Pág. quadro deslocamento Endereço Físico Implementação da Tabela de Páginas � Paginação Multinível � a tabela cresce conforme a alocação das páginas � pode acontecer fragmentação interna na própria tabela � o processo pode ocupar diferentes regiões no espaço lógico � Tabela de Páginas Invertida Segmentação � Programas e compiladores enxergam a memória lógica em segmentos � código � dados estáticos � dados dinâmicos � pilha � O espaço de endereçamento lógico é formado por segmentos de tamanho variável � Endereço lógico segmento deslocamento Segmentação CPU s d s d s Tabela de Segmentos Memória Endereço Lógico Endereço Físico LB < � Mapeamento Endereço Lógico para Físico 5 Segmentação A1 A2 A3 A4 A5 Segmento 0 - Código 0 1 2 3 4 B1 B2 B3 B4 0 1 2 3 C1 C2 B1 Memória Principal 0 1 2 3 4 B2 B3 B4 A1 A2 5 6 7 8 9 A3 A4 A5 10 11 12 13 14 0 1 2 S B L Tabela de Segmentos Segmento 1 - Dados C1 C2 0 1 Segmento 2 - Pilha Memória Lógica Segmentação � Qual o tipo de fragmentação gerada? � Como é armazenada a tabela de segmentos? � Facilita o compartilhamento de memória � cada segmento possui uma parte específica do programa (ex.: biblioteca) Segmentação e Paginação � As vezes as duas formas de gerênciasão combinadas � Segmentação Paginada � Uma solução à fragmentação externa da segmentação é paginar os segmentos � A memória lógica é segmentada e cada segmento dividido em páginas � A memória física é paginada � Cada segmento possui uma tabela de páginas associada (mantém a relação página, quadro) � Ao ser endereçada a memória, a tabela de segmentos indica qual é a tabela de páginas correspondente, e esta, a respectiva página física.
Compartilhar